<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: ALV and dynamic fields in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730747#M897938</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;REPORT zmtable LINE-SIZE 255&lt;/P&gt;&lt;P&gt;               LINE-COUNT 65.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Program written by Vijay Chaitanya Raju &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Maintain Table dynamicly (Table name is entered on Selection Screen)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Very powerfull program. Please maintain authorisation access and&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;restrict maintenance to Z-tables&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Version 6.20 and up&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(can be used in 4.6C with some modifications to block try - endtry&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;and classes)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Enhanced functionality with dynamic selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: sscrfields.                "Fields on selection screens&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS rsds.&lt;/P&gt;&lt;P&gt;DATA ds_clauses TYPE rsds_where.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ifield OCCURS 0,&lt;/P&gt;&lt;P&gt;      fieldname LIKE dd03l-fieldname,&lt;/P&gt;&lt;P&gt;      position  LIKE dd03l-position,&lt;/P&gt;&lt;P&gt;      keyflag   LIKE dd03l-keyflag,&lt;/P&gt;&lt;P&gt;      datatype  LIKE dd03l-datatype.&lt;/P&gt;&lt;P&gt;DATA: END OF ifield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: sl_step    LIKE sy-tabix,&lt;/P&gt;&lt;P&gt;      ss_step    LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      ss_act(1)  TYPE c,&lt;/P&gt;&lt;P&gt;      sl_lines   LIKE sy-tfill,&lt;/P&gt;&lt;P&gt;      sl_status  LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      sl_subrc   LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      sl_update(1) TYPE c,&lt;/P&gt;&lt;P&gt;      sl_mandt(1)  TYPE c,&lt;/P&gt;&lt;P&gt;      len(6)       TYPE n,&lt;/P&gt;&lt;P&gt;      f_value(255) TYPE c,&lt;/P&gt;&lt;P&gt;      sl_datum     LIKE sy-datum,&lt;/P&gt;&lt;P&gt;      sl_uzeit     LIKE sy-uzeit,&lt;/P&gt;&lt;P&gt;      price1(15)   TYPE c,&lt;/P&gt;&lt;P&gt;      price2(15)   TYPE c,&lt;/P&gt;&lt;P&gt;      mess(60)     TYPE c,&lt;/P&gt;&lt;P&gt;      d_stat   LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      m_stat   LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      slchar(6) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ref_ptr TYPE REF TO cx_root.      "Root class more common&lt;/P&gt;&lt;P&gt;DATA: text TYPE string.&lt;/P&gt;&lt;P&gt;DATA: sl_index LIKE sy-tabix.&lt;/P&gt;&lt;P&gt;DATA: zauth LIKE dd02l-tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: num TYPE i,&lt;/P&gt;&lt;P&gt;      max_len TYPE i,&lt;/P&gt;&lt;P&gt;      check_len TYPE i,&lt;/P&gt;&lt;P&gt;      sl_sel(1) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: icon.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SELECTION-SCREEN.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text-012 - 'Table Name'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(25) text-012.&lt;/P&gt;&lt;P&gt;PARAMETERS: tabname LIKE dd02l-tabname DEFAULT 'ZSCARE'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text-003 - 'Selection'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN PUSHBUTTON 75(9) text-003 USER-COMMAND sta1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;numrows(text) - 'Max Number of ROWS'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PARAMETERS: numrows LIKE sy-subrc DEFAULT '100'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; At Selection-Screen                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE sscrfields-ucomm.&lt;/P&gt;&lt;P&gt;    WHEN 'STA1'.&lt;/P&gt;&lt;P&gt;      CLEAR sl_sel.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'ZSTAN_SELECTIONS'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          tabname         = tabname&lt;/P&gt;&lt;P&gt;        IMPORTING&lt;/P&gt;&lt;P&gt;          ds_clauses      = ds_clauses&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          table_not_valid = 1&lt;/P&gt;&lt;P&gt;          other_error     = 2&lt;/P&gt;&lt;P&gt;          OTHERS          = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        sl_sel = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;*At Selection-Screen Output                                            *&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN OUTPUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE tabname&lt;/P&gt;&lt;P&gt;    INTO tabname&lt;/P&gt;&lt;P&gt;    FROM dd02l&lt;/P&gt;&lt;P&gt;    WHERE tabname  = tabname&lt;/P&gt;&lt;P&gt;      AND as4local = 'A'&lt;/P&gt;&lt;P&gt;      AND ( tabclass = 'TRANSP' OR tabclass = 'POOL'&lt;/P&gt;&lt;P&gt;            OR tabclass = 'CLUSTER' ).&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE 'Table is not valid' TYPE 'S'.&lt;/P&gt;&lt;P&gt;    RETURN.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DEFINE: acheck.&lt;/P&gt;&lt;P&gt;    zauth = 'ZTABAUTH'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    select single statu&lt;/P&gt;&lt;P&gt;      into sl_update&lt;/P&gt;&lt;P&gt;      from (zauth)&lt;/P&gt;&lt;P&gt;      where tabname = tabname&lt;/P&gt;&lt;P&gt;        and bname   = sy-uname.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      message 'You are not authorized to view this table' type 'S'.&lt;/P&gt;&lt;P&gt;      return.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE tabname&lt;/P&gt;&lt;P&gt;    INTO tabname&lt;/P&gt;&lt;P&gt;    FROM dd02l&lt;/P&gt;&lt;P&gt;    WHERE tabname  = tabname&lt;/P&gt;&lt;P&gt;      AND as4local = 'A'&lt;/P&gt;&lt;P&gt;      AND ( tabclass = 'TRANSP' OR tabclass = 'POOL'&lt;/P&gt;&lt;P&gt;            OR tabclass = 'CLUSTER' ).&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE 'Table is not valid' TYPE 'S'.&lt;/P&gt;&lt;P&gt;    RETURN.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ptr_itab TYPE REF TO data.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs_itab&amp;gt; TYPE STANDARD TABLE. "ANY TABLE.&lt;/P&gt;&lt;P&gt;  CREATE DATA ptr_itab TYPE STANDARD TABLE OF (tabname).&lt;/P&gt;&lt;P&gt;  ASSIGN ptr_itab-&amp;gt;* TO &amp;lt;fs_itab&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For DELETION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: ptr_itd TYPE REF TO data.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs_itd&amp;gt; TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  CREATE DATA ptr_itd TYPE STANDARD TABLE OF (tabname).&lt;/P&gt;&lt;P&gt;  ASSIGN ptr_itd-&amp;gt;* TO &amp;lt;fs_itd&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For MODIFICATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: ptr_itm TYPE REF TO data.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs_itm&amp;gt; TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  CREATE DATA ptr_itm TYPE STANDARD TABLE OF (tabname).&lt;/P&gt;&lt;P&gt;  ASSIGN ptr_itm-&amp;gt;* TO &amp;lt;fs_itm&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ptr_wtab TYPE REF TO data.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs_wtab&amp;gt; TYPE ANY.&lt;/P&gt;&lt;P&gt;  CREATE DATA ptr_wtab TYPE (tabname).&lt;/P&gt;&lt;P&gt;  ASSIGN ptr_wtab-&amp;gt;* TO &amp;lt;fs_wtab&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: itabname(15) TYPE c.&lt;/P&gt;&lt;P&gt;  itabname = '&amp;lt;fs_wtab&amp;gt;'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Standard list status with 'SAVE' button&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET PF-STATUS 'STLI'.&lt;/P&gt;&lt;P&gt;  CLEAR sl_update.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Maintain authorisation access in table ZTABAUTH&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Key fields:  tabname - Table name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             bname   = sy-uname - User name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             statu   = 'X' - maintain&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       ' ' - view&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check authorisation access&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  acheck.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT fieldname position keyflag datatype&lt;/P&gt;&lt;P&gt;    INTO TABLE ifield&lt;/P&gt;&lt;P&gt;    FROM dd03l&lt;/P&gt;&lt;P&gt;    WHERE tabname = tabname&lt;/P&gt;&lt;P&gt;      AND fieldname NOT LIKE '.INCLU%'&lt;/P&gt;&lt;P&gt;    ORDER BY position.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;f1&amp;gt; TYPE ANY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: tab_field(60) TYPE c,&lt;/P&gt;&lt;P&gt;        sline LIKE sy-lisel.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: field_attr LIKE dfies.&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF tfield_attr OCCURS 0.&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE field_attr.&lt;/P&gt;&lt;P&gt;  DATA: END OF tfield_attr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ifield.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'G_FIELD_READ'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        table      = tabname&lt;/P&gt;&lt;P&gt;        fieldname  = ifield-fieldname&lt;/P&gt;&lt;P&gt;        text_flag  = 'X'&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        field_attr = field_attr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tfield_attr = field_attr.&lt;/P&gt;&lt;P&gt;    APPEND tfield_attr.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sl_sel = 'X'.&lt;/P&gt;&lt;P&gt;    SELECT *&lt;/P&gt;&lt;P&gt;      FROM (tabname)&lt;/P&gt;&lt;P&gt;      INTO TABLE &amp;lt;fs_itab&amp;gt; UP TO numrows ROWS&lt;/P&gt;&lt;P&gt;      WHERE (ds_clauses-where_tab).&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    SELECT *&lt;/P&gt;&lt;P&gt;      FROM (tabname)&lt;/P&gt;&lt;P&gt;      INTO TABLE &amp;lt;fs_itab&amp;gt; UP TO numrows ROWS.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE &amp;lt;fs_itab&amp;gt; LINES sl_lines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Show two extra lines to allow addition up to 2 new lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sl_update = 'X'.&lt;/P&gt;&lt;P&gt;    DO 2 TIMES.&lt;/P&gt;&lt;P&gt;      APPEND INITIAL LINE TO &amp;lt;fs_itab&amp;gt;.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: info(22) VALUE 'D - Delete, M - Modify'.&lt;/P&gt;&lt;P&gt;  WRITE: / icon_information AS ICON QUICKINFO info.&lt;/P&gt;&lt;P&gt;  WRITE ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR check_len.&lt;/P&gt;&lt;P&gt;  LOOP AT tfield_attr.&lt;/P&gt;&lt;P&gt;    IF tfield_attr-datatype = 'CLNT'.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    len = tfield_attr-outputlen.&lt;/P&gt;&lt;P&gt;    IF tfield_attr-keyflag = 'X'.&lt;/P&gt;&lt;P&gt;      check_len = check_len + len + 1.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    IF tfield_attr-scrtext_m IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;      WRITE: AT (len) tfield_attr-scrtext_m COLOR 1.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      WRITE: AT (len) tfield_attr-fieldtext COLOR 1.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ss_step.&lt;/P&gt;&lt;P&gt;  CLEAR ss_act.&lt;/P&gt;&lt;P&gt;  LOOP AT &amp;lt;fs_itab&amp;gt; INTO &amp;lt;fs_wtab&amp;gt;.&lt;/P&gt;&lt;P&gt;    IF sy-tabix LE sl_lines.&lt;/P&gt;&lt;P&gt;      ss_step = 1.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CLEAR ss_step.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In field SS_STEP put D -  to delete record&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                     M -  to modify/add new record&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF sl_update = 'X'.&lt;/P&gt;&lt;P&gt;      WRITE:/ icon_change AS ICON.&lt;/P&gt;&lt;P&gt;      IF ss_step = 1.&lt;/P&gt;&lt;P&gt;        WRITE:  ss_act INPUT ON.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ss_act = 'M'.&lt;/P&gt;&lt;P&gt;        WRITE:  ss_act.&lt;/P&gt;&lt;P&gt;        CLEAR ss_act.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      WRITE:/ icon_display AS ICON.&lt;/P&gt;&lt;P&gt;      WRITE:  ss_act COLOR 2.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT ifield.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Maintain client dependant tables in the same client&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF ifield-datatype = 'CLNT'.&lt;/P&gt;&lt;P&gt;        sl_mandt = 'X'.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      CONCATENATE itabname '-' ifield-fieldname INTO tab_field.&lt;/P&gt;&lt;P&gt;      ASSIGN (tab_field) TO &amp;lt;f1&amp;gt;.&lt;/P&gt;&lt;P&gt;      IF sl_update = 'X'.&lt;/P&gt;&lt;P&gt;        IF ifield-keyflag = 'X' AND ss_step IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;          WRITE: &amp;lt;f1&amp;gt; COLOR 4.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          WRITE: &amp;lt;f1&amp;gt; INPUT ON.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        IF ifield-keyflag = 'X' AND ss_step IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;          WRITE: &amp;lt;f1&amp;gt; COLOR 4.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          WRITE: &amp;lt;f1&amp;gt; COLOR 2.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      UNASSIGN &amp;lt;f1&amp;gt;.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;AT USER-COMMAND.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT USER-COMMAND.&lt;/P&gt;&lt;P&gt;  CASE sy-ucomm.&lt;/P&gt;&lt;P&gt;    WHEN 'SAVE'.&lt;/P&gt;&lt;P&gt;      IF sl_update = 'X'.&lt;/P&gt;&lt;P&gt;        CLEAR: sl_step,&lt;/P&gt;&lt;P&gt;               sl_status,&lt;/P&gt;&lt;P&gt;               sl_subrc,&lt;/P&gt;&lt;P&gt;               &amp;lt;fs_wtab&amp;gt;,&lt;/P&gt;&lt;P&gt;               d_stat,&lt;/P&gt;&lt;P&gt;               m_stat,&lt;/P&gt;&lt;P&gt;               max_len.&lt;/P&gt;&lt;P&gt;        REFRESH &amp;lt;fs_itd&amp;gt;.&lt;/P&gt;&lt;P&gt;        REFRESH &amp;lt;fs_itm&amp;gt;.&lt;/P&gt;&lt;P&gt;        DO.&lt;/P&gt;&lt;P&gt;          IF sl_status &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;            EXIT.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          ADD 1 TO sl_step.&lt;/P&gt;&lt;P&gt;          IF sl_subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;            EXIT.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          CLEAR ss_step.&lt;/P&gt;&lt;P&gt;          CLEAR ss_act.&lt;/P&gt;&lt;P&gt;          READ LINE sl_step&lt;/P&gt;&lt;P&gt;               FIELD VALUE ss_act INTO f_value.&lt;/P&gt;&lt;P&gt;          sl_subrc = sy-subrc.&lt;/P&gt;&lt;P&gt;          IF f_value(1) EQ 'D' OR f_value(1) = 'd'.&lt;/P&gt;&lt;P&gt;            ss_step = 1.  "Delete&lt;/P&gt;&lt;P&gt;          ELSEIF f_value(1) EQ 'M' OR f_value(1) = 'm'.&lt;/P&gt;&lt;P&gt;            ss_step = 2.  "Modify&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            CLEAR ss_step.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          CHECK sy-lisel(3) = '0Z '.&lt;/P&gt;&lt;P&gt;          IF ss_step GT 0.&lt;/P&gt;&lt;P&gt;            CLEAR sline.&lt;/P&gt;&lt;P&gt;            sline = sy-lisel+5(250).&lt;/P&gt;&lt;P&gt;            max_len = 250.&lt;/P&gt;&lt;P&gt;            CHECK sline(check_len) &amp;lt;&amp;gt; ' '.&lt;/P&gt;&lt;P&gt;            LOOP AT tfield_attr.&lt;/P&gt;&lt;P&gt;              CONCATENATE itabname '-' tfield_attr-fieldname&lt;/P&gt;&lt;P&gt;                                              INTO tab_field.&lt;/P&gt;&lt;P&gt;              ASSIGN (tab_field) TO &amp;lt;f1&amp;gt;.&lt;/P&gt;&lt;P&gt;              IF tfield_attr-fieldname = 'MANDT'.&lt;/P&gt;&lt;P&gt;                &amp;lt;f1&amp;gt; = sy-mandt.&lt;/P&gt;&lt;P&gt;              ELSE.&lt;/P&gt;&lt;P&gt;                CLEAR f_value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                IF max_len LT tfield_attr-outputlen.&lt;/P&gt;&lt;P&gt;                  max_len = 255.&lt;/P&gt;&lt;P&gt;                  ADD 1 TO sl_step.&lt;/P&gt;&lt;P&gt;                  READ LINE sl_step.&lt;/P&gt;&lt;P&gt;                  sline = sy-lisel.&lt;/P&gt;&lt;P&gt;                ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                f_value = sline(tfield_attr-outputlen).&lt;/P&gt;&lt;P&gt;                max_len = max_len - tfield_attr-outputlen - 1.&lt;/P&gt;&lt;P&gt;                IF tfield_attr-inttype = 'D'.&lt;/P&gt;&lt;P&gt;                  IF f_value CO ' 0./-'.&lt;/P&gt;&lt;P&gt;                    CLEAR sl_datum.&lt;/P&gt;&lt;P&gt;                    &amp;lt;f1&amp;gt; = sl_datum.&lt;/P&gt;&lt;P&gt;                  ELSE.&lt;/P&gt;&lt;P&gt;                    CALL FUNCTION 'CONVERT_DATE_INPUT'&lt;/P&gt;&lt;P&gt;                      EXPORTING&lt;/P&gt;&lt;P&gt;                        input                     = f_value&lt;/P&gt;&lt;P&gt;                        plausibility_check        = 'X'&lt;/P&gt;&lt;P&gt;                      IMPORTING&lt;/P&gt;&lt;P&gt;                        output                    = sl_datum&lt;/P&gt;&lt;P&gt;                      EXCEPTIONS&lt;/P&gt;&lt;P&gt;                        plausibility_check_failed = 1&lt;/P&gt;&lt;P&gt;                        wrong_format_in_input     = 2&lt;/P&gt;&lt;P&gt;                        OTHERS                    = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;                      &amp;lt;f1&amp;gt; = sl_datum.&lt;/P&gt;&lt;P&gt;                    ELSE.&lt;/P&gt;&lt;P&gt;                      text = 'Invalid Date'.&lt;/P&gt;&lt;P&gt;                      sl_status = 1.&lt;/P&gt;&lt;P&gt;                      EXIT.&lt;/P&gt;&lt;P&gt;                    ENDIF.&lt;/P&gt;&lt;P&gt;                  ENDIF.&lt;/P&gt;&lt;P&gt;                ELSEIF tfield_attr-inttype = 'T'.&lt;/P&gt;&lt;P&gt;                  IF f_value CO ' 0:'.&lt;/P&gt;&lt;P&gt;                    CLEAR sl_uzeit.&lt;/P&gt;&lt;P&gt;                    &amp;lt;f1&amp;gt; = sl_uzeit.&lt;/P&gt;&lt;P&gt;                  ELSE.&lt;/P&gt;&lt;P&gt;                    CALL FUNCTION 'CONVERT_TIME_INPUT'&lt;/P&gt;&lt;P&gt;                      EXPORTING&lt;/P&gt;&lt;P&gt;                        input                     = f_value&lt;/P&gt;&lt;P&gt;                        plausibility_check        = 'X'&lt;/P&gt;&lt;P&gt;                      IMPORTING&lt;/P&gt;&lt;P&gt;                        output                    = sl_uzeit&lt;/P&gt;&lt;P&gt;                      EXCEPTIONS&lt;/P&gt;&lt;P&gt;                        plausibility_check_failed = 1&lt;/P&gt;&lt;P&gt;                        wrong_format_in_input     = 2&lt;/P&gt;&lt;P&gt;                        OTHERS                    = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;                      &amp;lt;f1&amp;gt; = sl_uzeit.&lt;/P&gt;&lt;P&gt;                    ELSE.&lt;/P&gt;&lt;P&gt;                      text = 'Invalid Time'.&lt;/P&gt;&lt;P&gt;                      sl_status = 1.&lt;/P&gt;&lt;P&gt;                      EXIT.&lt;/P&gt;&lt;P&gt;                    ENDIF.&lt;/P&gt;&lt;P&gt;                  ENDIF.&lt;/P&gt;&lt;P&gt;                ELSEIF tfield_attr-inttype = 'C'.&lt;/P&gt;&lt;P&gt;                  TRANSLATE f_value TO UPPER CASE.&lt;/P&gt;&lt;P&gt;                  &amp;lt;f1&amp;gt; = f_value.&lt;/P&gt;&lt;P&gt;                ELSE.&lt;/P&gt;&lt;P&gt;                  TRANSLATE f_value USING ', '.&lt;/P&gt;&lt;P&gt;                  CONDENSE f_value NO-GAPS.&lt;/P&gt;&lt;P&gt;                  TRY.&lt;/P&gt;&lt;P&gt;                      &amp;lt;f1&amp;gt; = f_value.&lt;/P&gt;&lt;P&gt;                    CATCH cx_root INTO ref_ptr.&lt;/P&gt;&lt;P&gt;                      text = ref_ptr-&amp;gt;get_text( ).&lt;/P&gt;&lt;P&gt;                      sl_status = 1.&lt;/P&gt;&lt;P&gt;                      EXIT.&lt;/P&gt;&lt;P&gt;                  ENDTRY.&lt;/P&gt;&lt;P&gt;                ENDIF.&lt;/P&gt;&lt;P&gt;                SHIFT sline BY tfield_attr-outputlen PLACES.&lt;/P&gt;&lt;P&gt;                SHIFT sline LEFT.&lt;/P&gt;&lt;P&gt;              ENDIF.&lt;/P&gt;&lt;P&gt;              UNASSIGN &amp;lt;f1&amp;gt;.&lt;/P&gt;&lt;P&gt;            ENDLOOP.&lt;/P&gt;&lt;P&gt;            IF sl_status = 0.&lt;/P&gt;&lt;P&gt;              CASE ss_step.&lt;/P&gt;&lt;P&gt;                WHEN 1.  "Delete&lt;/P&gt;&lt;P&gt;                  ADD 1 TO d_stat.&lt;/P&gt;&lt;P&gt;                  APPEND &amp;lt;fs_wtab&amp;gt; TO &amp;lt;fs_itd&amp;gt;.&lt;/P&gt;&lt;P&gt;                WHEN 2.  "Modify&lt;/P&gt;&lt;P&gt;                  ADD 1 TO m_stat.&lt;/P&gt;&lt;P&gt;                  APPEND &amp;lt;fs_wtab&amp;gt; TO &amp;lt;fs_itm&amp;gt;.&lt;/P&gt;&lt;P&gt;              ENDCASE.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sl_status = 0.&lt;/P&gt;&lt;P&gt;          IF d_stat IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;            slchar = d_stat.&lt;/P&gt;&lt;P&gt;            CONCATENATE 'Deleted -' slchar 'record.' INTO text&lt;/P&gt;&lt;P&gt;              SEPARATED BY space.&lt;/P&gt;&lt;P&gt;            DELETE (tabname) FROM TABLE &amp;lt;fs_itd&amp;gt;.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          IF m_stat IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;            slchar = m_stat.&lt;/P&gt;&lt;P&gt;            CONCATENATE text 'Modified -' slchar 'record.' INTO text&lt;/P&gt;&lt;P&gt;              SEPARATED BY space.&lt;/P&gt;&lt;P&gt;            MODIFY (tabname) FROM TABLE &amp;lt;fs_itm&amp;gt;.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          IF d_stat IS INITIAL AND m_stat IS INITIAL.&lt;/P&gt;&lt;P&gt;            MESSAGE 'No changes were done' TYPE 'S'.&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            MESSAGE text TYPE 'S'.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          LEAVE.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          MESSAGE text TYPE 'I'.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        LEAVE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--&lt;DEL&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="---------" /&gt;END--&lt;P&gt;&lt;/P&gt;&lt;HR originaltext="---------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Below is Function for a Dynamic Selection Screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;FUNCTION zstan_selections.&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;"&lt;/STRONG&gt;"Local interface:&lt;/P&gt;&lt;P&gt;*"  IMPORTING&lt;/P&gt;&lt;P&gt;*"     VALUE(TABNAME) LIKE  DD02L-TABNAME DEFAULT 'ZSCARE'&lt;/P&gt;&lt;P&gt;*"  EXPORTING&lt;/P&gt;&lt;P&gt;*"     VALUE(DS_CLAUSES) TYPE  RSDS_WHERE&lt;/P&gt;&lt;P&gt;*"  EXCEPTIONS&lt;/P&gt;&lt;P&gt;*"      TABLE_NOT_VALID&lt;/P&gt;&lt;P&gt;*"      OTHER_ERROR&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA texpr TYPE rsds_texpr.&lt;/P&gt;&lt;P&gt;  DATA twhere TYPE rsds_twhere.&lt;/P&gt;&lt;P&gt;  DATA trange TYPE rsds_trange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA BEGIN OF qcat.                    "Selections View for&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE rsdsqcat.    "Free Selectoptions&lt;/P&gt;&lt;P&gt;  DATA END OF qcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA BEGIN OF tabs OCCURS 10.&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE rsdstabs.&lt;/P&gt;&lt;P&gt;  DATA END   OF tabs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA BEGIN OF fields OCCURS 10.&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE rsdsfields.&lt;/P&gt;&lt;P&gt;  DATA END   OF fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA BEGIN OF efields OCCURS 10.&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE rsdsfields.&lt;/P&gt;&lt;P&gt;  DATA END   OF efields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA selid LIKE rsdynsel-selid.&lt;/P&gt;&lt;P&gt;  DATA actnum LIKE sy-tfill.&lt;/P&gt;&lt;P&gt;  DATA title LIKE sy-title VALUE 'Selection Screen'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: maxnum LIKE sy-subrc VALUE '69'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR    tabs.&lt;/P&gt;&lt;P&gt;  tabs-prim_tab = tabname.&lt;/P&gt;&lt;P&gt;  COLLECT  tabs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: position LIKE dd03l-position.&lt;/P&gt;&lt;P&gt;  DATA: keyflag  LIKE dd03l-keyflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  fields-tablename = tabname.&lt;/P&gt;&lt;P&gt;  fields-sign      = 'I'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: step LIKE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT fieldname keyflag position&lt;/P&gt;&lt;P&gt;    INTO (fields-fieldname, keyflag, position)&lt;/P&gt;&lt;P&gt;    FROM dd03l&lt;/P&gt;&lt;P&gt;    WHERE tabname = tabname&lt;/P&gt;&lt;P&gt;      AND fieldname NOT LIKE '.INCLU%'&lt;/P&gt;&lt;P&gt;      AND datatype NE 'CLNT'&lt;/P&gt;&lt;P&gt;    ORDER BY position.&lt;/P&gt;&lt;P&gt;    ADD 1 TO step.&lt;/P&gt;&lt;P&gt;    CHECK step LE maxnum.&lt;/P&gt;&lt;P&gt;    IF keyflag &amp;lt;&amp;gt; 'X'.&lt;/P&gt;&lt;P&gt;      efields = fields.&lt;/P&gt;&lt;P&gt;      APPEND efields.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    APPEND fields.&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    RAISE table_not_valid.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'FREE_SELECTIONS_INIT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      expressions              = texpr&lt;/P&gt;&lt;P&gt;      kind                     = 'F'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      selection_id             = selid&lt;/P&gt;&lt;P&gt;      expressions              = texpr&lt;/P&gt;&lt;P&gt;      where_clauses            = twhere&lt;/P&gt;&lt;P&gt;      field_ranges             = trange&lt;/P&gt;&lt;P&gt;      number_of_active_fields  = actnum&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      tables_tab               = tabs&lt;/P&gt;&lt;P&gt;      fields_tab               = fields&lt;/P&gt;&lt;P&gt;      fields_not_selected      = efields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      fields_incomplete        = 01&lt;/P&gt;&lt;P&gt;      fields_no_join           = 02&lt;/P&gt;&lt;P&gt;      field_not_found          = 03&lt;/P&gt;&lt;P&gt;      no_tables                = 04&lt;/P&gt;&lt;P&gt;      table_not_found          = 05&lt;/P&gt;&lt;P&gt;      expression_not_supported = 06&lt;/P&gt;&lt;P&gt;      incorrect_expression     = 07&lt;/P&gt;&lt;P&gt;      illegal_kind             = 08&lt;/P&gt;&lt;P&gt;      area_not_found           = 09&lt;/P&gt;&lt;P&gt;      inconsistent_area        = 10&lt;/P&gt;&lt;P&gt;      kind_f_no_fields_left    = 11&lt;/P&gt;&lt;P&gt;      kind_f_no_fields         = 12&lt;/P&gt;&lt;P&gt;      too_many_fields          = 13.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'FREE_SELECTIONS_DIALOG'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        selection_id            = selid&lt;/P&gt;&lt;P&gt;        title                   = title&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        where_clauses           = twhere&lt;/P&gt;&lt;P&gt;        expressions             = texpr&lt;/P&gt;&lt;P&gt;        field_ranges            = trange&lt;/P&gt;&lt;P&gt;        number_of_active_fields = actnum&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        fields_tab              = fields&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        internal_error          = 01&lt;/P&gt;&lt;P&gt;        no_action               = 02&lt;/P&gt;&lt;P&gt;        no_fields_selected      = 03&lt;/P&gt;&lt;P&gt;        no_tables_selected      = 04&lt;/P&gt;&lt;P&gt;        selid_not_found         = 05.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      CLEAR ds_clauses.&lt;/P&gt;&lt;P&gt;      MOVE tabname TO ds_clauses-tablename.&lt;/P&gt;&lt;P&gt;      READ TABLE twhere WITH KEY ds_clauses-tablename INTO ds_clauses.&lt;/P&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        RAISE other_error.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      RAISE other_error.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    RAISE other_error.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFUNCTION.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Shiva&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 07 May 2008 12:54:22 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-05-07T12:54:22Z</dc:date>
    <item>
      <title>ALV and dynamic fields</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730746#M897937</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hallo colleagues,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have to create a dynamic structure and show it within an ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Therefore I have created my stuctrure like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE 'COMP1' TO gw_component-name.&lt;/P&gt;&lt;P&gt;  gw_component-type ?= cl_abap_elemdescr=&amp;gt;get_string( ).&lt;/P&gt;&lt;P&gt;  INSERT gw_component INTO TABLE gt_components.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE 'COMP2' TO gw_component-name.&lt;/P&gt;&lt;P&gt;  gw_component-type ?= cl_abap_elemdescr=&amp;gt;get_i( ).&lt;/P&gt;&lt;P&gt;  INSERT gw_component INTO TABLE gt_components.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get structure descriptor -&amp;gt; GR_STRUCTDESCR&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  gr_structdescr ?= cl_abap_structdescr=&amp;gt;create( gt_components ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;create work area of structure GR_STRUCTDESCR -&amp;gt; GR_WA&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE DATA gr_wa TYPE HANDLE gr_structdescr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ASSIGN gr_wa-&amp;gt;* TO &amp;lt;gw_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So now I have my dynamic structure, but how i can create a field catalog, which fit into the function module 'REUSE_ALV_FIELDCATALOG_MERGE' and 'REUSE_ALV_LIST_DISPLAY'?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;&lt;P&gt;Irian&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 May 2008 12:44:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730746#M897937</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-07T12:44:51Z</dc:date>
    </item>
    <item>
      <title>Re: ALV and dynamic fields</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730747#M897938</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;REPORT zmtable LINE-SIZE 255&lt;/P&gt;&lt;P&gt;               LINE-COUNT 65.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Program written by Vijay Chaitanya Raju &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Maintain Table dynamicly (Table name is entered on Selection Screen)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Very powerfull program. Please maintain authorisation access and&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;restrict maintenance to Z-tables&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Version 6.20 and up&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(can be used in 4.6C with some modifications to block try - endtry&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;and classes)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Enhanced functionality with dynamic selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: sscrfields.                "Fields on selection screens&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS rsds.&lt;/P&gt;&lt;P&gt;DATA ds_clauses TYPE rsds_where.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ifield OCCURS 0,&lt;/P&gt;&lt;P&gt;      fieldname LIKE dd03l-fieldname,&lt;/P&gt;&lt;P&gt;      position  LIKE dd03l-position,&lt;/P&gt;&lt;P&gt;      keyflag   LIKE dd03l-keyflag,&lt;/P&gt;&lt;P&gt;      datatype  LIKE dd03l-datatype.&lt;/P&gt;&lt;P&gt;DATA: END OF ifield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: sl_step    LIKE sy-tabix,&lt;/P&gt;&lt;P&gt;      ss_step    LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      ss_act(1)  TYPE c,&lt;/P&gt;&lt;P&gt;      sl_lines   LIKE sy-tfill,&lt;/P&gt;&lt;P&gt;      sl_status  LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      sl_subrc   LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      sl_update(1) TYPE c,&lt;/P&gt;&lt;P&gt;      sl_mandt(1)  TYPE c,&lt;/P&gt;&lt;P&gt;      len(6)       TYPE n,&lt;/P&gt;&lt;P&gt;      f_value(255) TYPE c,&lt;/P&gt;&lt;P&gt;      sl_datum     LIKE sy-datum,&lt;/P&gt;&lt;P&gt;      sl_uzeit     LIKE sy-uzeit,&lt;/P&gt;&lt;P&gt;      price1(15)   TYPE c,&lt;/P&gt;&lt;P&gt;      price2(15)   TYPE c,&lt;/P&gt;&lt;P&gt;      mess(60)     TYPE c,&lt;/P&gt;&lt;P&gt;      d_stat   LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      m_stat   LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;      slchar(6) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ref_ptr TYPE REF TO cx_root.      "Root class more common&lt;/P&gt;&lt;P&gt;DATA: text TYPE string.&lt;/P&gt;&lt;P&gt;DATA: sl_index LIKE sy-tabix.&lt;/P&gt;&lt;P&gt;DATA: zauth LIKE dd02l-tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: num TYPE i,&lt;/P&gt;&lt;P&gt;      max_len TYPE i,&lt;/P&gt;&lt;P&gt;      check_len TYPE i,&lt;/P&gt;&lt;P&gt;      sl_sel(1) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: icon.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SELECTION-SCREEN.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text-012 - 'Table Name'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(25) text-012.&lt;/P&gt;&lt;P&gt;PARAMETERS: tabname LIKE dd02l-tabname DEFAULT 'ZSCARE'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text-003 - 'Selection'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECTION-SCREEN PUSHBUTTON 75(9) text-003 USER-COMMAND sta1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;numrows(text) - 'Max Number of ROWS'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PARAMETERS: numrows LIKE sy-subrc DEFAULT '100'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; At Selection-Screen                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE sscrfields-ucomm.&lt;/P&gt;&lt;P&gt;    WHEN 'STA1'.&lt;/P&gt;&lt;P&gt;      CLEAR sl_sel.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'ZSTAN_SELECTIONS'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          tabname         = tabname&lt;/P&gt;&lt;P&gt;        IMPORTING&lt;/P&gt;&lt;P&gt;          ds_clauses      = ds_clauses&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          table_not_valid = 1&lt;/P&gt;&lt;P&gt;          other_error     = 2&lt;/P&gt;&lt;P&gt;          OTHERS          = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        sl_sel = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;*At Selection-Screen Output                                            *&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN OUTPUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE tabname&lt;/P&gt;&lt;P&gt;    INTO tabname&lt;/P&gt;&lt;P&gt;    FROM dd02l&lt;/P&gt;&lt;P&gt;    WHERE tabname  = tabname&lt;/P&gt;&lt;P&gt;      AND as4local = 'A'&lt;/P&gt;&lt;P&gt;      AND ( tabclass = 'TRANSP' OR tabclass = 'POOL'&lt;/P&gt;&lt;P&gt;            OR tabclass = 'CLUSTER' ).&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE 'Table is not valid' TYPE 'S'.&lt;/P&gt;&lt;P&gt;    RETURN.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DEFINE: acheck.&lt;/P&gt;&lt;P&gt;    zauth = 'ZTABAUTH'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    select single statu&lt;/P&gt;&lt;P&gt;      into sl_update&lt;/P&gt;&lt;P&gt;      from (zauth)&lt;/P&gt;&lt;P&gt;      where tabname = tabname&lt;/P&gt;&lt;P&gt;        and bname   = sy-uname.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      message 'You are not authorized to view this table' type 'S'.&lt;/P&gt;&lt;P&gt;      return.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE tabname&lt;/P&gt;&lt;P&gt;    INTO tabname&lt;/P&gt;&lt;P&gt;    FROM dd02l&lt;/P&gt;&lt;P&gt;    WHERE tabname  = tabname&lt;/P&gt;&lt;P&gt;      AND as4local = 'A'&lt;/P&gt;&lt;P&gt;      AND ( tabclass = 'TRANSP' OR tabclass = 'POOL'&lt;/P&gt;&lt;P&gt;            OR tabclass = 'CLUSTER' ).&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE 'Table is not valid' TYPE 'S'.&lt;/P&gt;&lt;P&gt;    RETURN.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ptr_itab TYPE REF TO data.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs_itab&amp;gt; TYPE STANDARD TABLE. "ANY TABLE.&lt;/P&gt;&lt;P&gt;  CREATE DATA ptr_itab TYPE STANDARD TABLE OF (tabname).&lt;/P&gt;&lt;P&gt;  ASSIGN ptr_itab-&amp;gt;* TO &amp;lt;fs_itab&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For DELETION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: ptr_itd TYPE REF TO data.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs_itd&amp;gt; TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  CREATE DATA ptr_itd TYPE STANDARD TABLE OF (tabname).&lt;/P&gt;&lt;P&gt;  ASSIGN ptr_itd-&amp;gt;* TO &amp;lt;fs_itd&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For MODIFICATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: ptr_itm TYPE REF TO data.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs_itm&amp;gt; TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  CREATE DATA ptr_itm TYPE STANDARD TABLE OF (tabname).&lt;/P&gt;&lt;P&gt;  ASSIGN ptr_itm-&amp;gt;* TO &amp;lt;fs_itm&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ptr_wtab TYPE REF TO data.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;fs_wtab&amp;gt; TYPE ANY.&lt;/P&gt;&lt;P&gt;  CREATE DATA ptr_wtab TYPE (tabname).&lt;/P&gt;&lt;P&gt;  ASSIGN ptr_wtab-&amp;gt;* TO &amp;lt;fs_wtab&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: itabname(15) TYPE c.&lt;/P&gt;&lt;P&gt;  itabname = '&amp;lt;fs_wtab&amp;gt;'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Standard list status with 'SAVE' button&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET PF-STATUS 'STLI'.&lt;/P&gt;&lt;P&gt;  CLEAR sl_update.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Maintain authorisation access in table ZTABAUTH&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Key fields:  tabname - Table name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             bname   = sy-uname - User name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             statu   = 'X' - maintain&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       ' ' - view&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check authorisation access&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  acheck.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT fieldname position keyflag datatype&lt;/P&gt;&lt;P&gt;    INTO TABLE ifield&lt;/P&gt;&lt;P&gt;    FROM dd03l&lt;/P&gt;&lt;P&gt;    WHERE tabname = tabname&lt;/P&gt;&lt;P&gt;      AND fieldname NOT LIKE '.INCLU%'&lt;/P&gt;&lt;P&gt;    ORDER BY position.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;f1&amp;gt; TYPE ANY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: tab_field(60) TYPE c,&lt;/P&gt;&lt;P&gt;        sline LIKE sy-lisel.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: field_attr LIKE dfies.&lt;/P&gt;&lt;P&gt;  DATA: BEGIN OF tfield_attr OCCURS 0.&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE field_attr.&lt;/P&gt;&lt;P&gt;  DATA: END OF tfield_attr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ifield.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'G_FIELD_READ'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        table      = tabname&lt;/P&gt;&lt;P&gt;        fieldname  = ifield-fieldname&lt;/P&gt;&lt;P&gt;        text_flag  = 'X'&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        field_attr = field_attr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    tfield_attr = field_attr.&lt;/P&gt;&lt;P&gt;    APPEND tfield_attr.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sl_sel = 'X'.&lt;/P&gt;&lt;P&gt;    SELECT *&lt;/P&gt;&lt;P&gt;      FROM (tabname)&lt;/P&gt;&lt;P&gt;      INTO TABLE &amp;lt;fs_itab&amp;gt; UP TO numrows ROWS&lt;/P&gt;&lt;P&gt;      WHERE (ds_clauses-where_tab).&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    SELECT *&lt;/P&gt;&lt;P&gt;      FROM (tabname)&lt;/P&gt;&lt;P&gt;      INTO TABLE &amp;lt;fs_itab&amp;gt; UP TO numrows ROWS.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE &amp;lt;fs_itab&amp;gt; LINES sl_lines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Show two extra lines to allow addition up to 2 new lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sl_update = 'X'.&lt;/P&gt;&lt;P&gt;    DO 2 TIMES.&lt;/P&gt;&lt;P&gt;      APPEND INITIAL LINE TO &amp;lt;fs_itab&amp;gt;.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: info(22) VALUE 'D - Delete, M - Modify'.&lt;/P&gt;&lt;P&gt;  WRITE: / icon_information AS ICON QUICKINFO info.&lt;/P&gt;&lt;P&gt;  WRITE ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR check_len.&lt;/P&gt;&lt;P&gt;  LOOP AT tfield_attr.&lt;/P&gt;&lt;P&gt;    IF tfield_attr-datatype = 'CLNT'.&lt;/P&gt;&lt;P&gt;      CONTINUE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    len = tfield_attr-outputlen.&lt;/P&gt;&lt;P&gt;    IF tfield_attr-keyflag = 'X'.&lt;/P&gt;&lt;P&gt;      check_len = check_len + len + 1.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    IF tfield_attr-scrtext_m IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;      WRITE: AT (len) tfield_attr-scrtext_m COLOR 1.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      WRITE: AT (len) tfield_attr-fieldtext COLOR 1.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ss_step.&lt;/P&gt;&lt;P&gt;  CLEAR ss_act.&lt;/P&gt;&lt;P&gt;  LOOP AT &amp;lt;fs_itab&amp;gt; INTO &amp;lt;fs_wtab&amp;gt;.&lt;/P&gt;&lt;P&gt;    IF sy-tabix LE sl_lines.&lt;/P&gt;&lt;P&gt;      ss_step = 1.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CLEAR ss_step.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In field SS_STEP put D -  to delete record&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                     M -  to modify/add new record&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF sl_update = 'X'.&lt;/P&gt;&lt;P&gt;      WRITE:/ icon_change AS ICON.&lt;/P&gt;&lt;P&gt;      IF ss_step = 1.&lt;/P&gt;&lt;P&gt;        WRITE:  ss_act INPUT ON.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ss_act = 'M'.&lt;/P&gt;&lt;P&gt;        WRITE:  ss_act.&lt;/P&gt;&lt;P&gt;        CLEAR ss_act.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      WRITE:/ icon_display AS ICON.&lt;/P&gt;&lt;P&gt;      WRITE:  ss_act COLOR 2.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT ifield.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Maintain client dependant tables in the same client&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF ifield-datatype = 'CLNT'.&lt;/P&gt;&lt;P&gt;        sl_mandt = 'X'.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      CONCATENATE itabname '-' ifield-fieldname INTO tab_field.&lt;/P&gt;&lt;P&gt;      ASSIGN (tab_field) TO &amp;lt;f1&amp;gt;.&lt;/P&gt;&lt;P&gt;      IF sl_update = 'X'.&lt;/P&gt;&lt;P&gt;        IF ifield-keyflag = 'X' AND ss_step IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;          WRITE: &amp;lt;f1&amp;gt; COLOR 4.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          WRITE: &amp;lt;f1&amp;gt; INPUT ON.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        IF ifield-keyflag = 'X' AND ss_step IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;          WRITE: &amp;lt;f1&amp;gt; COLOR 4.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          WRITE: &amp;lt;f1&amp;gt; COLOR 2.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      UNASSIGN &amp;lt;f1&amp;gt;.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;AT USER-COMMAND.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT USER-COMMAND.&lt;/P&gt;&lt;P&gt;  CASE sy-ucomm.&lt;/P&gt;&lt;P&gt;    WHEN 'SAVE'.&lt;/P&gt;&lt;P&gt;      IF sl_update = 'X'.&lt;/P&gt;&lt;P&gt;        CLEAR: sl_step,&lt;/P&gt;&lt;P&gt;               sl_status,&lt;/P&gt;&lt;P&gt;               sl_subrc,&lt;/P&gt;&lt;P&gt;               &amp;lt;fs_wtab&amp;gt;,&lt;/P&gt;&lt;P&gt;               d_stat,&lt;/P&gt;&lt;P&gt;               m_stat,&lt;/P&gt;&lt;P&gt;               max_len.&lt;/P&gt;&lt;P&gt;        REFRESH &amp;lt;fs_itd&amp;gt;.&lt;/P&gt;&lt;P&gt;        REFRESH &amp;lt;fs_itm&amp;gt;.&lt;/P&gt;&lt;P&gt;        DO.&lt;/P&gt;&lt;P&gt;          IF sl_status &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;            EXIT.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          ADD 1 TO sl_step.&lt;/P&gt;&lt;P&gt;          IF sl_subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;            EXIT.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          CLEAR ss_step.&lt;/P&gt;&lt;P&gt;          CLEAR ss_act.&lt;/P&gt;&lt;P&gt;          READ LINE sl_step&lt;/P&gt;&lt;P&gt;               FIELD VALUE ss_act INTO f_value.&lt;/P&gt;&lt;P&gt;          sl_subrc = sy-subrc.&lt;/P&gt;&lt;P&gt;          IF f_value(1) EQ 'D' OR f_value(1) = 'd'.&lt;/P&gt;&lt;P&gt;            ss_step = 1.  "Delete&lt;/P&gt;&lt;P&gt;          ELSEIF f_value(1) EQ 'M' OR f_value(1) = 'm'.&lt;/P&gt;&lt;P&gt;            ss_step = 2.  "Modify&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            CLEAR ss_step.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          CHECK sy-lisel(3) = '0Z '.&lt;/P&gt;&lt;P&gt;          IF ss_step GT 0.&lt;/P&gt;&lt;P&gt;            CLEAR sline.&lt;/P&gt;&lt;P&gt;            sline = sy-lisel+5(250).&lt;/P&gt;&lt;P&gt;            max_len = 250.&lt;/P&gt;&lt;P&gt;            CHECK sline(check_len) &amp;lt;&amp;gt; ' '.&lt;/P&gt;&lt;P&gt;            LOOP AT tfield_attr.&lt;/P&gt;&lt;P&gt;              CONCATENATE itabname '-' tfield_attr-fieldname&lt;/P&gt;&lt;P&gt;                                              INTO tab_field.&lt;/P&gt;&lt;P&gt;              ASSIGN (tab_field) TO &amp;lt;f1&amp;gt;.&lt;/P&gt;&lt;P&gt;              IF tfield_attr-fieldname = 'MANDT'.&lt;/P&gt;&lt;P&gt;                &amp;lt;f1&amp;gt; = sy-mandt.&lt;/P&gt;&lt;P&gt;              ELSE.&lt;/P&gt;&lt;P&gt;                CLEAR f_value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                IF max_len LT tfield_attr-outputlen.&lt;/P&gt;&lt;P&gt;                  max_len = 255.&lt;/P&gt;&lt;P&gt;                  ADD 1 TO sl_step.&lt;/P&gt;&lt;P&gt;                  READ LINE sl_step.&lt;/P&gt;&lt;P&gt;                  sline = sy-lisel.&lt;/P&gt;&lt;P&gt;                ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                f_value = sline(tfield_attr-outputlen).&lt;/P&gt;&lt;P&gt;                max_len = max_len - tfield_attr-outputlen - 1.&lt;/P&gt;&lt;P&gt;                IF tfield_attr-inttype = 'D'.&lt;/P&gt;&lt;P&gt;                  IF f_value CO ' 0./-'.&lt;/P&gt;&lt;P&gt;                    CLEAR sl_datum.&lt;/P&gt;&lt;P&gt;                    &amp;lt;f1&amp;gt; = sl_datum.&lt;/P&gt;&lt;P&gt;                  ELSE.&lt;/P&gt;&lt;P&gt;                    CALL FUNCTION 'CONVERT_DATE_INPUT'&lt;/P&gt;&lt;P&gt;                      EXPORTING&lt;/P&gt;&lt;P&gt;                        input                     = f_value&lt;/P&gt;&lt;P&gt;                        plausibility_check        = 'X'&lt;/P&gt;&lt;P&gt;                      IMPORTING&lt;/P&gt;&lt;P&gt;                        output                    = sl_datum&lt;/P&gt;&lt;P&gt;                      EXCEPTIONS&lt;/P&gt;&lt;P&gt;                        plausibility_check_failed = 1&lt;/P&gt;&lt;P&gt;                        wrong_format_in_input     = 2&lt;/P&gt;&lt;P&gt;                        OTHERS                    = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;                      &amp;lt;f1&amp;gt; = sl_datum.&lt;/P&gt;&lt;P&gt;                    ELSE.&lt;/P&gt;&lt;P&gt;                      text = 'Invalid Date'.&lt;/P&gt;&lt;P&gt;                      sl_status = 1.&lt;/P&gt;&lt;P&gt;                      EXIT.&lt;/P&gt;&lt;P&gt;                    ENDIF.&lt;/P&gt;&lt;P&gt;                  ENDIF.&lt;/P&gt;&lt;P&gt;                ELSEIF tfield_attr-inttype = 'T'.&lt;/P&gt;&lt;P&gt;                  IF f_value CO ' 0:'.&lt;/P&gt;&lt;P&gt;                    CLEAR sl_uzeit.&lt;/P&gt;&lt;P&gt;                    &amp;lt;f1&amp;gt; = sl_uzeit.&lt;/P&gt;&lt;P&gt;                  ELSE.&lt;/P&gt;&lt;P&gt;                    CALL FUNCTION 'CONVERT_TIME_INPUT'&lt;/P&gt;&lt;P&gt;                      EXPORTING&lt;/P&gt;&lt;P&gt;                        input                     = f_value&lt;/P&gt;&lt;P&gt;                        plausibility_check        = 'X'&lt;/P&gt;&lt;P&gt;                      IMPORTING&lt;/P&gt;&lt;P&gt;                        output                    = sl_uzeit&lt;/P&gt;&lt;P&gt;                      EXCEPTIONS&lt;/P&gt;&lt;P&gt;                        plausibility_check_failed = 1&lt;/P&gt;&lt;P&gt;                        wrong_format_in_input     = 2&lt;/P&gt;&lt;P&gt;                        OTHERS                    = 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;                      &amp;lt;f1&amp;gt; = sl_uzeit.&lt;/P&gt;&lt;P&gt;                    ELSE.&lt;/P&gt;&lt;P&gt;                      text = 'Invalid Time'.&lt;/P&gt;&lt;P&gt;                      sl_status = 1.&lt;/P&gt;&lt;P&gt;                      EXIT.&lt;/P&gt;&lt;P&gt;                    ENDIF.&lt;/P&gt;&lt;P&gt;                  ENDIF.&lt;/P&gt;&lt;P&gt;                ELSEIF tfield_attr-inttype = 'C'.&lt;/P&gt;&lt;P&gt;                  TRANSLATE f_value TO UPPER CASE.&lt;/P&gt;&lt;P&gt;                  &amp;lt;f1&amp;gt; = f_value.&lt;/P&gt;&lt;P&gt;                ELSE.&lt;/P&gt;&lt;P&gt;                  TRANSLATE f_value USING ', '.&lt;/P&gt;&lt;P&gt;                  CONDENSE f_value NO-GAPS.&lt;/P&gt;&lt;P&gt;                  TRY.&lt;/P&gt;&lt;P&gt;                      &amp;lt;f1&amp;gt; = f_value.&lt;/P&gt;&lt;P&gt;                    CATCH cx_root INTO ref_ptr.&lt;/P&gt;&lt;P&gt;                      text = ref_ptr-&amp;gt;get_text( ).&lt;/P&gt;&lt;P&gt;                      sl_status = 1.&lt;/P&gt;&lt;P&gt;                      EXIT.&lt;/P&gt;&lt;P&gt;                  ENDTRY.&lt;/P&gt;&lt;P&gt;                ENDIF.&lt;/P&gt;&lt;P&gt;                SHIFT sline BY tfield_attr-outputlen PLACES.&lt;/P&gt;&lt;P&gt;                SHIFT sline LEFT.&lt;/P&gt;&lt;P&gt;              ENDIF.&lt;/P&gt;&lt;P&gt;              UNASSIGN &amp;lt;f1&amp;gt;.&lt;/P&gt;&lt;P&gt;            ENDLOOP.&lt;/P&gt;&lt;P&gt;            IF sl_status = 0.&lt;/P&gt;&lt;P&gt;              CASE ss_step.&lt;/P&gt;&lt;P&gt;                WHEN 1.  "Delete&lt;/P&gt;&lt;P&gt;                  ADD 1 TO d_stat.&lt;/P&gt;&lt;P&gt;                  APPEND &amp;lt;fs_wtab&amp;gt; TO &amp;lt;fs_itd&amp;gt;.&lt;/P&gt;&lt;P&gt;                WHEN 2.  "Modify&lt;/P&gt;&lt;P&gt;                  ADD 1 TO m_stat.&lt;/P&gt;&lt;P&gt;                  APPEND &amp;lt;fs_wtab&amp;gt; TO &amp;lt;fs_itm&amp;gt;.&lt;/P&gt;&lt;P&gt;              ENDCASE.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sl_status = 0.&lt;/P&gt;&lt;P&gt;          IF d_stat IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;            slchar = d_stat.&lt;/P&gt;&lt;P&gt;            CONCATENATE 'Deleted -' slchar 'record.' INTO text&lt;/P&gt;&lt;P&gt;              SEPARATED BY space.&lt;/P&gt;&lt;P&gt;            DELETE (tabname) FROM TABLE &amp;lt;fs_itd&amp;gt;.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          IF m_stat IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;            slchar = m_stat.&lt;/P&gt;&lt;P&gt;            CONCATENATE text 'Modified -' slchar 'record.' INTO text&lt;/P&gt;&lt;P&gt;              SEPARATED BY space.&lt;/P&gt;&lt;P&gt;            MODIFY (tabname) FROM TABLE &amp;lt;fs_itm&amp;gt;.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          IF d_stat IS INITIAL AND m_stat IS INITIAL.&lt;/P&gt;&lt;P&gt;            MESSAGE 'No changes were done' TYPE 'S'.&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            MESSAGE text TYPE 'S'.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          LEAVE.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          MESSAGE text TYPE 'I'.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        LEAVE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--&lt;DEL&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="---------" /&gt;END--&lt;P&gt;&lt;/P&gt;&lt;HR originaltext="---------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Below is Function for a Dynamic Selection Screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;FUNCTION zstan_selections.&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;"&lt;/STRONG&gt;"Local interface:&lt;/P&gt;&lt;P&gt;*"  IMPORTING&lt;/P&gt;&lt;P&gt;*"     VALUE(TABNAME) LIKE  DD02L-TABNAME DEFAULT 'ZSCARE'&lt;/P&gt;&lt;P&gt;*"  EXPORTING&lt;/P&gt;&lt;P&gt;*"     VALUE(DS_CLAUSES) TYPE  RSDS_WHERE&lt;/P&gt;&lt;P&gt;*"  EXCEPTIONS&lt;/P&gt;&lt;P&gt;*"      TABLE_NOT_VALID&lt;/P&gt;&lt;P&gt;*"      OTHER_ERROR&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA texpr TYPE rsds_texpr.&lt;/P&gt;&lt;P&gt;  DATA twhere TYPE rsds_twhere.&lt;/P&gt;&lt;P&gt;  DATA trange TYPE rsds_trange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA BEGIN OF qcat.                    "Selections View for&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE rsdsqcat.    "Free Selectoptions&lt;/P&gt;&lt;P&gt;  DATA END OF qcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA BEGIN OF tabs OCCURS 10.&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE rsdstabs.&lt;/P&gt;&lt;P&gt;  DATA END   OF tabs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA BEGIN OF fields OCCURS 10.&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE rsdsfields.&lt;/P&gt;&lt;P&gt;  DATA END   OF fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA BEGIN OF efields OCCURS 10.&lt;/P&gt;&lt;P&gt;          INCLUDE STRUCTURE rsdsfields.&lt;/P&gt;&lt;P&gt;  DATA END   OF efields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA selid LIKE rsdynsel-selid.&lt;/P&gt;&lt;P&gt;  DATA actnum LIKE sy-tfill.&lt;/P&gt;&lt;P&gt;  DATA title LIKE sy-title VALUE 'Selection Screen'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: maxnum LIKE sy-subrc VALUE '69'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR    tabs.&lt;/P&gt;&lt;P&gt;  tabs-prim_tab = tabname.&lt;/P&gt;&lt;P&gt;  COLLECT  tabs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: position LIKE dd03l-position.&lt;/P&gt;&lt;P&gt;  DATA: keyflag  LIKE dd03l-keyflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  fields-tablename = tabname.&lt;/P&gt;&lt;P&gt;  fields-sign      = 'I'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: step LIKE sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT fieldname keyflag position&lt;/P&gt;&lt;P&gt;    INTO (fields-fieldname, keyflag, position)&lt;/P&gt;&lt;P&gt;    FROM dd03l&lt;/P&gt;&lt;P&gt;    WHERE tabname = tabname&lt;/P&gt;&lt;P&gt;      AND fieldname NOT LIKE '.INCLU%'&lt;/P&gt;&lt;P&gt;      AND datatype NE 'CLNT'&lt;/P&gt;&lt;P&gt;    ORDER BY position.&lt;/P&gt;&lt;P&gt;    ADD 1 TO step.&lt;/P&gt;&lt;P&gt;    CHECK step LE maxnum.&lt;/P&gt;&lt;P&gt;    IF keyflag &amp;lt;&amp;gt; 'X'.&lt;/P&gt;&lt;P&gt;      efields = fields.&lt;/P&gt;&lt;P&gt;      APPEND efields.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    APPEND fields.&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    RAISE table_not_valid.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'FREE_SELECTIONS_INIT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      expressions              = texpr&lt;/P&gt;&lt;P&gt;      kind                     = 'F'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      selection_id             = selid&lt;/P&gt;&lt;P&gt;      expressions              = texpr&lt;/P&gt;&lt;P&gt;      where_clauses            = twhere&lt;/P&gt;&lt;P&gt;      field_ranges             = trange&lt;/P&gt;&lt;P&gt;      number_of_active_fields  = actnum&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      tables_tab               = tabs&lt;/P&gt;&lt;P&gt;      fields_tab               = fields&lt;/P&gt;&lt;P&gt;      fields_not_selected      = efields&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      fields_incomplete        = 01&lt;/P&gt;&lt;P&gt;      fields_no_join           = 02&lt;/P&gt;&lt;P&gt;      field_not_found          = 03&lt;/P&gt;&lt;P&gt;      no_tables                = 04&lt;/P&gt;&lt;P&gt;      table_not_found          = 05&lt;/P&gt;&lt;P&gt;      expression_not_supported = 06&lt;/P&gt;&lt;P&gt;      incorrect_expression     = 07&lt;/P&gt;&lt;P&gt;      illegal_kind             = 08&lt;/P&gt;&lt;P&gt;      area_not_found           = 09&lt;/P&gt;&lt;P&gt;      inconsistent_area        = 10&lt;/P&gt;&lt;P&gt;      kind_f_no_fields_left    = 11&lt;/P&gt;&lt;P&gt;      kind_f_no_fields         = 12&lt;/P&gt;&lt;P&gt;      too_many_fields          = 13.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'FREE_SELECTIONS_DIALOG'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        selection_id            = selid&lt;/P&gt;&lt;P&gt;        title                   = title&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        where_clauses           = twhere&lt;/P&gt;&lt;P&gt;        expressions             = texpr&lt;/P&gt;&lt;P&gt;        field_ranges            = trange&lt;/P&gt;&lt;P&gt;        number_of_active_fields = actnum&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        fields_tab              = fields&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        internal_error          = 01&lt;/P&gt;&lt;P&gt;        no_action               = 02&lt;/P&gt;&lt;P&gt;        no_fields_selected      = 03&lt;/P&gt;&lt;P&gt;        no_tables_selected      = 04&lt;/P&gt;&lt;P&gt;        selid_not_found         = 05.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      CLEAR ds_clauses.&lt;/P&gt;&lt;P&gt;      MOVE tabname TO ds_clauses-tablename.&lt;/P&gt;&lt;P&gt;      READ TABLE twhere WITH KEY ds_clauses-tablename INTO ds_clauses.&lt;/P&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        RAISE other_error.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      RAISE other_error.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    RAISE other_error.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFUNCTION.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Shiva&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 May 2008 12:54:22 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730747#M897938</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-07T12:54:22Z</dc:date>
    </item>
    <item>
      <title>Re: ALV and dynamic fields</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730748#M897939</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ben,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Iam not sure but what i feel is &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1 -the dynamic internal sturcture is &amp;lt;ga_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;2- move the &amp;lt;ga_wa&amp;gt; to CT_FIELDCAT TYPE  SLIS_T_FIELDCAT_ALV.&lt;/P&gt;&lt;P&gt;3- passthe CT_FIELDCAT to  FM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you can try and see.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Aditya&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 May 2008 13:00:43 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730748#M897939</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-07T13:00:43Z</dc:date>
    </item>
    <item>
      <title>Re: ALV and dynamic fields</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730749#M897940</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Adatya,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have the same idea. But how can I "move the &amp;lt;ga_wa&amp;gt; to CT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV."?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 May 2008 13:32:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-and-dynamic-fields/m-p/3730749#M897940</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-07T13:32:37Z</dc:date>
    </item>
  </channel>
</rss>

