<?xml version="1.0" encoding="utf-8"?>
<nugget name="ZSY666_203.NUGG">
 <CLAS CLSNAME="Z_C_SY6_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table data" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="Z_C_SY6_MAIN">
  <localImplementation>*&quot;* local class implementation for public class
*&quot;* use this source file for the implementation part of
*&quot;* local helper classes</localImplementation>
  <localTypes>*&quot;* use this source file for any type declarations (class
*&quot;* definitions, interfaces or data types) you need for method
*&quot;* implementation or private method&apos;s signature</localTypes>
  <localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros>
  <attribute CLSNAME="Z_C_SY6_TABLE" CMPNAME="WC_DIALOGGRID" VERSION="1" LANGU="1" DESCRIPT="ALV List Viewer" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_GUI_ALV_GRID" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_TABLE" CMPNAME="WC_DIALOG_CONTAINER" VERSION="1" LANGU="1" DESCRIPT="Abstract Container for GUI Controls" EXPOSURE="0" STATE="1" EDITORDER="2 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_GUI_CUSTOM_CONTAINER" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_TABLE" CMPNAME="WT_SDATA" VERSION="1" LANGU="1" DESCRIPT="Table type for ZSY_S_SE16_SEL" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZSY6_T_SEL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_TABLE" CMPNAME="WT_SFCAT" VERSION="1" LANGU="1" DESCRIPT="Field Catalog for List Viewer Control" EXPOSURE="0" STATE="1" EDITORDER="3 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="LVC_T_FCAT" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <inheritance CLSNAME="Z_C_SY6_TABLE" REFCLSNAME="Z_C_SY6_MAIN" VERSION="1" STATE="1">
   <redefinition CLSNAME="Z_C_SY6_TABLE" REFCLSNAME="Z_C_SY6_MAIN" VERSION="1" MTDNAME="SET_TABLE" EXPOSURE="0"/>
  </inheritance>
  <method CLSNAME="Z_C_SY6_TABLE" CMPNAME="CLOSE_DIALOG" VERSION="1" LANGU="E" DESCRIPT="Close dialog window" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CLOSE_DIALOG" SCONAME="R_MANDT" VERSION="1" LANGU="E" DESCRIPT="Cross-Client Customizing" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="CCCLIINDEP"/>
   <source>METHOD close_dialog.
  DATA:  l_index       TYPE sy-tabix,
         l_num         TYPE numc3,
         ls_sdata      TYPE zsy6_s_sel,
         ls_sel_fields TYPE zsy6_s_sel_fields,
         ls_ddfields   TYPE dfies.
*
  CLEAR r_mandt.

* Need update and restart.
  REFRESH wt_sel_fields.
  wc_dialoggrid-&gt;check_changed_data( ) .
  LOOP AT wt_sdata INTO ls_sdata WHERE zzmark = abap_true.
    l_num = l_num + 1.
    READ TABLE wt_ddfields INTO ls_ddfields WITH KEY fieldname = ls_sdata-fieldname .

    IF ls_ddfields-datatype = &apos;CLNT&apos;.
      r_mandt = abap_true.
    ENDIF.

    ls_sel_fields = fill_sel_fields( i_num       = l_num
                                     is_ddfields = ls_ddfields ).

    INSERT ls_sel_fields INTO TABLE wt_sel_fields.
  ENDLOOP.

  IF wt_sel_fields IS INITIAL.
    recreate_screen( i_flag = &apos;K&apos; ).
  ELSE.
    recreate_screen( i_flag = &apos;S&apos; ).
  ENDIF.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_TABLE" CMPNAME="CONSTRUCTOR" VERSION="1" LANGU="E" DESCRIPT="CONSTRUCTOR" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="2" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CONSTRUCTOR" SCONAME="I_MANDT" VERSION="1" LANGU="E" DESCRIPT="Cross-Client Customizing" CMPTYPE="1" MTDTYPE="2" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CCCLIINDEP"/>
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CONSTRUCTOR" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="2" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABNAME"/>
   <source>METHOD constructor.

  super-&gt;constructor( ) .

  set_table( EXPORTING i_table = i_table
                       i_mandt = i_mandt ) . &quot; We load all we need.

  IF wt_sel_fields IS INITIAL.
    wt_sel_fields = wt_key_fields.
  ENDIF.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_REPORT_SCREEN" VERSION="1" LANGU="E" DESCRIPT="Create report in table" EXPOSURE="2" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_REPORT_SCREEN" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABNAME"/>
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_REPORT_SCREEN" SCONAME="IT_SEL_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Table type for ZSY6_S_SEL_FIELDS" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZSY6_T_SEL_FIELDS"/>
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_REPORT_SCREEN" SCONAME="IT_KEY_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Table type for ZSY6_S_SEL_FIELDS" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZSY6_T_SEL_FIELDS"/>
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_REPORT_SCREEN" SCONAME="I_PROG" VERSION="1" LANGU="E" DESCRIPT="ABAP Program Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="PROGRAMM"/>
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_REPORT_SCREEN" SCONAME="I_FLAG" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR1"/>
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_REPORT_SCREEN" SCONAME="RT_REPORT" VERSION="1" LANGU="E" DESCRIPT="Char255" CMPTYPE="1" MTDTYPE="0" EDITORDER="6 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="TCHAR255"/>
   <source>method create_report_screen.
  data: l_line         type char255,
        ls_sel_fields  type zsy6_s_sel_fields,
        l_field        type char25,
        l_count(3)     type n.

  refresh rt_report.
  clear l_line.
  l_line = &apos;*----------------------------------------------------------------------*&apos;.
  insert l_line into table rt_report.

  clear l_line.
  concatenate &apos;*  Author        :&apos; sy-uname into l_line separated by space.
  l_line+80(1) = &apos;*&apos;.
  insert l_line into table rt_report.

  clear l_line.
  concatenate &apos;*  Date          :&apos; sy-datlo into l_line separated by space.
  l_line+80(1) = &apos;*&apos;.
  insert l_line into table rt_report.

  clear l_line.
  l_line = &apos;*  Description   : Sub screen for table maintenance                    &apos;.
  insert l_line into table rt_report.

  clear l_line.
  l_line = &apos;*----------------------------------------------------------------------*&apos;.
  insert l_line into table rt_report.

  clear l_line.
  l_line = &apos;*  Changes       :                                                     *&apos;.
  insert l_line into table rt_report.

  clear l_line.
  l_line = &apos;*  Author       Date     Description                                   *&apos;.
  insert l_line into table rt_report.

  clear l_line.
  l_line = &apos;*----------------------------------------------------------------------*&apos;.
  insert l_line into table rt_report.

  clear l_line.
  insert l_line into table rt_report.

  clear l_line.
  concatenate &apos;report&apos; i_prog &apos;.&apos; into l_line separated by space.
  insert l_line into table rt_report.

  clear l_line.
  insert l_line into table rt_report.
*
*  clear l_line.
*  concatenate &apos;tables:&apos; i_table &apos;.&apos; into l_line separated by space.
*  insert l_line into table rt_report.
*
*  clear l_line.
*  insert l_line into table rt_report.

  clear l_line.
  clear l_count.
  if i_flag = &apos;K&apos;.
    loop at it_key_fields into ls_sel_fields.
      l_count = l_count + 1.
      if l_count = &apos;001&apos;.
        concatenate &apos;DATA:  w_name&apos; l_count into l_line.
      else.
        concatenate l_line &apos;,&apos; into l_line.
        insert l_line into table rt_report.
        clear l_line.
        concatenate &apos;       w_name&apos; l_count into l_line.
      endif.
      concatenate l_line &apos;type default_va value &apos;&apos;&apos; into l_line separated by space.
      concatenate l_line  i_table &apos;-&apos; ls_sel_fields-fieldname &apos;&apos;&apos;&apos; into l_line.
    endloop.
  else.
    loop at it_sel_fields into ls_sel_fields.
      l_count = l_count + 1.
      if l_count = &apos;001&apos;.
        concatenate &apos;DATA:  w_name&apos; l_count into l_line.
      else.
        concatenate l_line &apos;,&apos; into l_line.
        insert l_line into table rt_report.
        clear l_line.
        concatenate &apos;       w_name&apos; l_count into l_line.
      endif.
      concatenate l_line &apos;type char70 value &apos;&apos;&apos; into l_line separated by space.
      concatenate l_line  i_table &apos;-&apos; ls_sel_fields-fieldname &apos;&apos;&apos;&apos; into l_line.
    endloop.
  endif.
  if l_count &gt; &apos;000&apos;.
    concatenate l_line &apos;.&apos; into l_line.
    insert l_line into table rt_report.
  endif.

  clear l_line.
  insert l_line into table rt_report.

  concatenate &apos;SELECTION-SCREEN BEGIN OF SCREEN&apos; c_dynnr &apos;AS SUBSCREEN.&apos;
               into l_line separated by space.
  insert l_line into table rt_report.

  clear l_line.
  clear l_count.
  if i_flag = &apos;K&apos;.
    loop at it_key_fields into ls_sel_fields.
      l_count = l_count + 1.
      if l_count = &apos;001&apos;.
        concatenate &apos;  SELECT-OPTIONS: &apos; ls_sel_fields-selname &apos;  FOR  (w_name&apos; into l_line separated by space.
      else.
        concatenate l_line &apos;,   &quot;&apos; l_field into l_line.
        insert l_line into table rt_report.
        clear l_line.
        l_line+18 = ls_sel_fields-selname.
        concatenate l_line &apos;  FOR  (w_name&apos; into l_line separated by space.
      endif.
      concatenate l_line l_count &apos;)&apos; into l_line.
      l_field = ls_sel_fields-fieldname.
    endloop.
  else.
    loop at it_sel_fields into ls_sel_fields.
      l_count = l_count + 1.
      if l_count = &apos;001&apos;.
        concatenate &apos;  SELECT-OPTIONS: &apos; ls_sel_fields-selname &apos;  FOR  (w_name&apos; into l_line separated by space.
      else.
        concatenate l_line &apos;,   &quot;&apos; l_field into l_line.
        insert l_line into table rt_report.
        clear l_line.
        l_line+18 = ls_sel_fields-selname.
        concatenate l_line &apos;  FOR  (w_name&apos; into l_line separated by space.
      endif.
      concatenate l_line l_count &apos;)&apos; into l_line.
      l_field = ls_sel_fields-fieldname.
    endloop.
  endif.
  if l_count &gt; &apos;000&apos;.
    concatenate l_line &apos;.   &quot;&apos; l_field into l_line.
    insert l_line into table rt_report.
  endif.
  clear l_line.
  concatenate &apos;SELECTION-SCREEN END   OF SCREEN&apos; c_dynnr &apos;.&apos;
               into l_line separated by space.
  insert l_line into table rt_report.

  clear l_line.
  insert l_line into table rt_report.

  clear l_line.
  l_line = &apos;include  ZSY6U001F01.&apos;.
  insert l_line into table rt_report.

  clear l_line.
  insert l_line into table rt_report.

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_SEL_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Set selection fields" EXPOSURE="1" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="CREATE_SEL_FIELDS" SCONAME="R_MANDT" VERSION="1" LANGU="E" DESCRIPT="Cross-Client Customizing" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="CCCLIINDEP"/>
   <source>METHOD create_sel_fields.
  DATA: l_line    TYPE char255,
      l_string1 TYPE string,
      l_string2 TYPE string,
      l_string3 TYPE string,
      l_string4    TYPE string,
      ls_ddfields  TYPE dfies,
      l_dynnr(4)   TYPE n,
      lt_screen    TYPE STANDARD TABLE OF char255.

  DATA: l_lang  TYPE tcp0c-langu,
        l_cntry TYPE tcp0c-country,
        l_mod   TYPE tcp0c-modifier.

  DATA: ls_sel_fields TYPE zsy6_s_sel_fields,
        l_prog        TYPE programm,
        l_num         TYPE numc3,
        l_lines       TYPE i.

  l_prog = create_name( i_table = w_table ).

  REFRESH wt_sel_fields.

  GET LOCALE LANGUAGE l_lang COUNTRY l_cntry MODIFIER l_mod.
  SET LOCALE LANGUAGE l_lang COUNTRY l_cntry.

  READ REPORT l_prog INTO lt_screen .

  DESCRIBE TABLE lt_screen LINES l_lines.

  IF l_lines &lt; 10.
    recreate_screen( EXPORTING i_flag = &apos;K&apos; ).
    READ REPORT l_prog INTO lt_screen .
  ENDIF.

  LOOP AT lt_screen INTO l_line.
    CLEAR ls_sel_fields.
    CONDENSE l_line NO-GAPS.
    TRANSLATE l_line TO UPPER CASE.
    CLEAR: l_string1,
           l_string2,
           l_string3.

    SPLIT l_line AT &apos;&quot;&apos; INTO l_string1 l_string2 l_string3.
    IF l_string2 IS NOT INITIAL AND sy-subrc = 0.
      l_num = l_num + 1.
      READ TABLE wt_ddfields INTO ls_ddfields WITH KEY tabname   = w_table
                                                       fieldname = l_string2 .
      IF ls_ddfields-datatype = &apos;CLNT&apos;.
        r_mandt = abap_true.
      ENDIF.
      ls_sel_fields = fill_sel_fields( i_num       = l_num
                                       is_ddfields = ls_ddfields ).

      INSERT ls_sel_fields INTO TABLE wt_sel_fields.
    ENDIF.
  ENDLOOP.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_TABLE" CMPNAME="RECREATE_SCREEN" VERSION="1" LANGU="E" DESCRIPT="Recreate existing selection screen" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_TABLE" CMPNAME="RECREATE_SCREEN" SCONAME="I_FLAG" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR1"/>
   <source>METHOD recreate_screen.
  DATA: l_prog     TYPE programm,
        lt_report  TYPE tchar255.

  l_prog = create_name( i_table = w_table ).
  lock_prog( EXPORTING i_prog = l_prog
             EXCEPTIONS no_lock_possible = 1
                        OTHERS           = 2 ).
  IF sy-subrc = 0.
    lt_report = create_report_screen( i_table       = w_table
                                      it_sel_fields = wt_sel_fields
                                      it_key_fields = wt_key_fields
                                      i_prog        = l_prog
                                      i_flag        = i_flag ).
    INSERT REPORT l_prog FROM lt_report  KEEPING DIRECTORY ENTRY.
    COMMIT WORK.

    IF i_flag = &apos;K&apos;.
      reset_sel( i_table = w_table ).
    ENDIF.

    unlock_prog( i_prog = l_prog ).
  ELSE.
* error handling missing
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_TABLE" CMPNAME="SET_DATA" VERSION="1" LANGU="E" DESCRIPT="Set data for dialog grid" EXPOSURE="0" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>method set_data.
  data: ls_ddfields type dfies,
        ls_sdata    type zsy6_s_sel.
  refresh wt_sdata.
  loop at wt_ddfields into ls_ddfields.
    clear ls_sdata.
    move-corresponding ls_ddfields to ls_sdata.
    read table wt_sel_fields transporting no fields with key fieldname = ls_ddfields-fieldname.
    if sy-subrc = 0.
      ls_sdata-zzmark = abap_true.
    endif.
    insert ls_sdata into table wt_sdata.
  endloop.
endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="SET_TABLE" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>METHOD set_table.

  super-&gt;set_table( EXPORTING i_table = i_table
                              i_mandt = i_mandt ).

  w_mandt = create_sel_fields( ).

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_TABLE" CMPNAME="SHOW_DIALOG" VERSION="1" LANGU="E" DESCRIPT="Show dialog for user variant copy" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>method show_dialog.
  data: ls_fcat type lvc_s_fcat.
  data: ls_layout type lvc_s_layo,
        ls_sdata type zsy6_s_sel,
        ls_ddfields type dfies.
  data: l_lines type i.

  if wc_dialog_container is not bound.

    create object wc_dialog_container
      exporting
        container_name              = &apos;CONTAINER_DIALOG&apos;
      exceptions
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        others                      = 6.
    if sy-subrc &lt;&gt; 0.
*                   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.

    create object wc_dialoggrid
      exporting
*        i_shellstyle      = 0
*        i_lifetime        =
        i_parent          = wc_dialog_container
*        i_appl_events     = space
*        i_parentdbg       =
*        i_applogparent    =
*        i_graphicsparent  =
*        i_name            =
*        i_fcat_complete   = space
      exceptions
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        others            = 5
        .
    if sy-subrc &lt;&gt; 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    refresh wt_sfcat.
* Lets get the definitions per default
    call function &apos;LVC_FIELDCATALOG_MERGE&apos;
      exporting
*      i_buffer_active              =
        i_structure_name             = &apos;ZSY6_S_SEL&apos;
*   I_CLIENT_NEVER_DISPLAY       = &apos;X&apos;
        i_bypassing_buffer           = abap_true
      changing
        ct_fieldcat                  = wt_sfcat[]
* EXCEPTIONS
*   INCONSISTENT_INTERFACE       = 1
*   PROGRAM_ERROR                = 2
*   OTHERS                       = 3
              .
    if sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.

    loop at wt_sfcat into ls_fcat.
      case ls_fcat-fieldname.
        when &apos;ROWCOLOR&apos; or &apos;ROWMARK&apos; or &apos;CELLCOLOR&apos; or &apos;CELLSTYLE&apos; .
          ls_fcat-tech       = abap_true.
        when &apos;ZZMARK&apos;.
          ls_fcat-edit       = abap_true.
          ls_fcat-checkbox = abap_true.
      endcase.
      modify wt_sfcat from ls_fcat.
    endloop.

    clear ls_layout.
*    ls_layout-info_fname = &apos;ROWCOLOR&apos; .
*    ls_layout-box_fname  = &apos;ROWMARK&apos;  .
*    ls_layout-ctab_fname = &apos;CELLCOLOR&apos; .
*    ls_layout-stylefname = &apos;CELLSTYLE&apos; .
    ls_layout-no_toolbar = abap_true.
    ls_layout-cwidth_opt = abap_true.

    set_data( ) .

    wc_dialoggrid-&gt;set_table_for_first_display(
      exporting
*    i_buffer_active               =
     i_bypassing_buffer            = abap_true
*    i_consistency_check           =
*    i_structure_name              = &apos;&apos;
*    is_variant                    =
*    i_save                        =
*    i_default                     = &apos;X&apos;
        is_layout                     = ls_layout
*    is_print                      =
*    it_special_groups             =
*    it_toolbar_excluding          = lt_toolbar
*    it_hyperlink                  =
*    it_alv_graphics               =
*    it_except_qinfo               =
*    ir_salv_adapter               =
      changing
        it_outtab                     = wt_sdata
        it_fieldcatalog               = wt_sfcat
*    it_sort                       =
*    it_filter                     =
      exceptions
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
           ).
    if sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.

    call method wc_dialoggrid-&gt;set_ready_for_input
      exporting
        i_ready_for_input = 1.
  else.
    set_data( ) .

    wc_dialoggrid-&gt;refresh_table_display(
*      EXPORTING
*        is_stable      =
*        i_soft_refresh =
*      EXCEPTIONS
*        finished       = 1
           ).
    if sy-subrc &lt;&gt; 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.

  endif.

endmethod.</source>
  </method>
 </CLAS>
 <CLAS CLSNAME="Z_C_SY6_MAIN" VERSION="1" LANGU="E" DESCRIPT="Table Maintenance" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 ">
  <localImplementation>*&quot;* local class implementation for public class
*&quot;* use this source file for the implementation part of
*&quot;* local helper classes</localImplementation>
  <localTypes>*&quot;* use this source file for any type declarations (class
*&quot;* definitions, interfaces or data types) you need for method
*&quot;* implementation or private method&apos;s signature

TYPES: BEGIN OF ts_sdata,
         table   TYPE tabname,
         as4date TYPE as4date,
       END  OF ts_sdata,

       tt_sdata type STANDARD TABLE OF ts_sdata.</localTypes>
  <localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros>
  <typeUsage CLSNAME="Z_C_SY6_MAIN" TYPEGROUP="ABAP" VERSION="1" TPUTYPE="0" EXPLICIT="X"/>
  <forwardDeclaration>ABAP</forwardDeclaration>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="C_DYNNR" VERSION="1" LANGU="1" DESCRIPT="Number of the following screen" EXPOSURE="2" STATE="1" EDITORDER="10 " ATTDECLTYP="2" ATTVALUE="&apos;9000&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="DYNNR" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="C_HOTSPOT" VERSION="1" LANGU="1" DESCRIPT="Object Type Name" EXPOSURE="2" STATE="1" EDITORDER="13 " ATTDECLTYP="2" ATTVALUE="&apos;Z_C_SYH_HOTSPOT&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SEOCLSNAME" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="C_PROGNAME" VERSION="1" LANGU="1" DESCRIPT="ABAP Program Name" EXPOSURE="2" STATE="1" EDITORDER="8 " ATTDECLTYP="2" ATTVALUE="&apos;ZSY6U001&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="PROGNAME" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="C_PROGNAME_" VERSION="1" LANGU="3" DESCRIPT="ABAP Program Name" EXPOSURE="2" STATE="1" EDITORDER="9 " ATTDECLTYP="2" ATTVALUE="&apos;ZSY6U001_&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="PROGNAME" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="C_TCODE" VERSION="1" LANGU="1" DESCRIPT="Transaction Code" EXPOSURE="2" STATE="1" EDITORDER="12 " ATTDECLTYP="2" ATTVALUE="&apos;ZSY666&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TCODE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="WS_SEL_FIELDS" VERSION="1" LANGU="1" DESCRIPT="Table sel key fields" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZSY6_S_SEL_FIELDS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="WS_TRDIR" VERSION="1" LANGU="1" DESCRIPT="Generated Table for View TRDIR" EXPOSURE="2" STATE="1" EDITORDER="11 " ATTDECLTYP="1" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TRDIR" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="WT_DDFIELDS" VERSION="1" LANGU="1" DESCRIPT="DD: Field List" EXPOSURE="2" STATE="1" EDITORDER="7 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="DDFIELDS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="WT_KEY_FIELDS" VERSION="1" LANGU="1" DESCRIPT="Table type for ZSY6_S_SEL_FIELDS" EXPOSURE="2" STATE="1" EDITORDER="2 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZSY6_T_SEL_FIELDS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="WT_RSTABLE" VERSION="1" LANGU="1" DESCRIPT="Table type for RSTABLE" EXPOSURE="2" STATE="1" EDITORDER="6 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZSY6_T_RSTABLE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="WT_SDATA" VERSION="1" LANGU="1" DESCRIPT="Screen data" EXPOSURE="0" STATE="1" EDITORDER="2 " ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TT_SDATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="WT_SEL_FIELDS" VERSION="1" LANGU="1" DESCRIPT="Table sel key fields" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZSY6_T_SEL_FIELDS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="W_ADDSCREEN" VERSION="1" LANGU="1" DESCRIPT="New screen pending to be added" EXPOSURE="0" STATE="1" EDITORDER="3 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="FLAG" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="W_AS4DATE" VERSION="1" LANGU="1" DESCRIPT="Date of Last Change" EXPOSURE="2" STATE="1" EDITORDER="3 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="AS4DATE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="W_CREATE" VERSION="1" LANGU="1" DESCRIPT="We created already one screen" EXPOSURE="2" STATE="1" EDITORDER="5 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="FLAG" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="W_MANDT" VERSION="1" LANGU="3" DESCRIPT="Cross-Client Customizing" EXPOSURE="2" STATE="1" EDITORDER="14 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="CCCLIINDEP" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_MAIN" CMPNAME="W_TABLE" VERSION="1" LANGU="1" DESCRIPT="Table Name" EXPOSURE="2" STATE="1" EDITORDER="4 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TABNAME" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="CHECK_TABLE" VERSION="1" LANGU="E" DESCRIPT="If selectionscreen exists" EXPOSURE="2" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="CHECK_TABLE" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABNAME"/>
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="CHECK_TABLE" SCONAME="R_SUBRC" VERSION="1" LANGU="E" DESCRIPT="Subroutines for return code" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="SYSUBRC"/>
   <source>method check_table.
  data: ls_sdata like line of wt_sdata.

  read table wt_sdata into ls_sdata with key table = i_table.

  w_as4date = ls_sdata-as4date.

  r_subrc = sy-subrc.

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="CLASS_CONSTRUCTOR" VERSION="1" LANGU="E" DESCRIPT="CLASS_CONSTRUCTOR" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="2" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
   <source>method class_constructor.
  data: l_progname type progname,
        ls_trdir type trdir,
        lt_name type standard table of string,
        l_name  type string,
        ls_sdata type ts_sdata,
        l_count type i.

  concatenate c_progname_ &apos;%&apos; into l_progname.

  select * from trdir into ls_trdir where name like l_progname.

    split ls_trdir at &apos;_&apos; into table lt_name.
    describe table lt_name lines l_count.

    read table lt_name into l_name index l_count.
    if sy-subrc eq 0 .
      ls_sdata-table = l_name.
      select single as4date into ls_sdata-as4date
             from  dd02l
             where  tabname   = ls_sdata-table
             and    as4local  = &apos;A&apos;
             and    as4vers   = &apos;000&apos;.
      if sy-subrc eq 0 .
        ls_sdata-as4date = ls_trdir-udat.
        insert ls_sdata into table wt_sdata.
      endif.
    endif.
  endselect.

  ws_trdir-varcl   = abap_true.
  ws_trdir-subc    = &apos;1&apos;.
  ws_trdir-cnam    = sy-uname.
  ws_trdir-unam    = sy-uname.
  ws_trdir-rstat   = &apos;K&apos;.
  ws_trdir-rmand   = sy-mandt.
  ws_trdir-rload   = sy-langu.
  ws_trdir-fixpt   = abap_true.
  ws_trdir-uccheck = abap_true.

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="CLASS_EXISTS" VERSION="1" LANGU="E" DESCRIPT="Check if a class exists" EXPOSURE="2" STATE="1" EDITORDER="11 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="CLASS_EXISTS" SCONAME="I_CLSNAME" VERSION="1" LANGU="E" DESCRIPT="Object Type Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SEOCLSNAME"/>
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="CLASS_EXISTS" SCONAME="R_EXISTS" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="FLAG"/>
   <source>method class_exists.
  data: ls_seoclass type seoclass.

  clear r_exists.

  select single * into ls_seoclass
    from seoclass
    where clsname = i_clsname.

  if sy-subrc = 0.
    r_exists = abap_true.
  endif.

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="CREATE_NAME" VERSION="1" LANGU="E" DESCRIPT="Create include programm name" EXPOSURE="2" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="CREATE_NAME" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABNAME"/>
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="CREATE_NAME" SCONAME="R_PROG" VERSION="1" LANGU="E" DESCRIPT="ABAP Program Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="PROGRAMM"/>
   <source>method create_name.

  concatenate c_progname_ i_table into r_prog.

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="DELETE_REPORT" VERSION="1" LANGU="E" DESCRIPT="Delete report" EXPOSURE="2" STATE="1" EDITORDER="16 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="DELETE_REPORT" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABNAME"/>
   <source>METHOD delete_report.
  DATA: l_prog TYPE programm.

  l_prog = create_name( i_table = i_table ).

  lock_prog( EXPORTING i_prog = l_prog
             EXCEPTIONS no_lock_possible = 1
                        OTHERS           = 2 ).
  IF sy-subrc = 0.
    CALL FUNCTION &apos;RS_DELETE_PROGRAM&apos;
      EXPORTING
*     CORRNUMBER                       =
        program                          = l_prog
        suppress_checks                  = &apos;X&apos;
*     SUPPRESS_COMMIT                  = &apos; &apos;
        suppress_popup                   = &apos;X&apos;
*     MASS_DELETE_CALL                 = &apos; &apos;
*     WITH_CUA                         = &apos;X&apos;
*     WITH_DOCUMENTATION               = &apos;X&apos;
*     WITH_DYNPRO                      = &apos;X&apos;
*     WITH_INCLUDES                    = &apos; &apos;
*     WITH_TEXTPOOL                    = &apos;X&apos;
*     WITH_VARIANTS                    = &apos;X&apos;
*     TADIR_DEVCLASS                   =
*     SKIP_PROGRESS_IND                = &apos; &apos;
*     FORCE_DELETE_USED_INCLUDES       = &apos; &apos;
*     SUPPRESS_DELETE_ENH              = &apos; &apos;
*   IMPORTING
*     CORRNUMBER                       =
*     PROGRAM                          =
*   EXCEPTIONS
*     ENQUEUE_LOCK                     = 1
*     OBJECT_NOT_FOUND                 = 2
*     PERMISSION_FAILURE               = 3
*     REJECT_DELETION                  = 4
*     OTHERS                           = 5
              .
    IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF.
  unlock_prog( i_prog = l_prog ).

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="FILL_SEL_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Fill selection field structure" EXPOSURE="1" STATE="1" EDITORDER="10 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="FILL_SEL_FIELDS" SCONAME="I_NUM" VERSION="1" LANGU="E" DESCRIPT="Numc3, internal use" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="NUMC3"/>
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="FILL_SEL_FIELDS" SCONAME="IS_DDFIELDS" VERSION="1" LANGU="E" DESCRIPT="Table Fields" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="DFIES"/>
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="FILL_SEL_FIELDS" SCONAME="RS_SEL_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Selection fields for se16" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZSY6_S_SEL_FIELDS"/>
   <source>METHOD FILL_SEL_FIELDS.
  DATA: l_name TYPE fieldname.

  CLEAR rs_sel_fields.
  l_name = &apos;W_NAME&apos;.
  CONCATENATE l_name i_num INTO l_name.
  CLEAR ws_sel_fields.
  rs_sel_fields-keyflag   = is_ddfields-keyflag.
  rs_sel_fields-fieldname = is_ddfields-fieldname.
  rs_sel_fields-varname   = l_name.
  rs_sel_fields-datatype  = is_ddfields-datatype.

  CONCATENATE &apos;S_&apos; i_num INTO rs_sel_fields-selname.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_KEY_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Get key fields" EXPOSURE="2" STATE="1" EDITORDER="13 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_KEY_FIELDS" SCONAME="RT_KEY_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Table type for ZSY6_S_SEL_FIELDS" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZSY6_T_SEL_FIELDS"/>
   <source>method GET_KEY_FIELDS.

  rt_key_fields = wt_key_fields.

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_KEY_FIELDS_STRUCTURE" VERSION="1" LANGU="E" DESCRIPT="Get structure of all key fields" EXPOSURE="1" STATE="1" EDITORDER="15 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_KEY_FIELDS_STRUCTURE" SCONAME="I_MANDT" VERSION="1" LANGU="E" DESCRIPT="Cross-Client Customizing" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CCCLIINDEP" PARVALUE="&apos; &apos;"/>
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_KEY_FIELDS_STRUCTURE" SCONAME="RO_STRUC" VERSION="1" LANGU="E" DESCRIPT="Runtime Type Services" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="CL_ABAP_STRUCTDESCR"/>
   <source>METHOD get_key_fields_structure.
  DATA: ls_fields    TYPE zsy6_s_sel_fields,
        ls_ddfields  TYPE dfies.
  DATA: lo_addit                TYPE REF TO cl_abap_elemdescr,
        lo_addit_table          TYPE REF TO cl_abap_tabledescr,
        lt_components_tab       TYPE cl_abap_structdescr=&gt;component_table,
        ls_components           TYPE abap_componentdescr.

  LOOP AT wt_key_fields INTO ls_fields.
    IF i_mandt IS INITIAL AND ls_fields-datatype = &apos;CLNT&apos;.
      CONTINUE.
    ENDIF.
    READ TABLE wt_ddfields INTO ls_ddfields WITH KEY fieldname = ls_fields-fieldname.
    IF sy-subrc = 0.
      ls_components-name   = ls_ddfields-fieldname.
      CASE ls_ddfields-comptype.
        WHEN &apos;L&apos;.
          lo_addit_table      ?= cl_abap_typedescr=&gt;describe_by_name( ls_ddfields-rollname ).
          ls_components-type   = lo_addit_table .
          INSERT ls_components INTO TABLE lt_components_tab.
        WHEN &apos;E&apos;.
          lo_addit            ?= cl_abap_typedescr=&gt;describe_by_name( ls_ddfields-rollname ).
          ls_components-type   = lo_addit           .
          INSERT ls_components INTO TABLE lt_components_tab.
      ENDCASE.
    ENDIF.
  ENDLOOP.
  &quot;create new line type
  TRY.
      ro_struc = cl_abap_structdescr=&gt;create( p_components = lt_components_tab
                                              p_strict     = abap_false ).
    CATCH cx_sy_struct_creation.
      RETURN.
  ENDTRY.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_SEL_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Get sel fields" EXPOSURE="2" STATE="1" EDITORDER="14 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_SEL_FIELDS" SCONAME="RT_SEL_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Table type for ZSY6_S_SEL_FIELDS" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZSY6_T_SEL_FIELDS"/>
   <source>METHOD get_sel_fields.

  rt_sel_fields = wt_sel_fields.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_STRING" VERSION="1" LANGU="E" DESCRIPT="Get SELECTION STRING" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="GET_STRING" SCONAME="R_STRING" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
   <source>METHOD GET_STRING.

  CLEAR r_string.

  LOOP AT wt_sel_fields INTO ws_sel_fields.
    IF r_string IS INITIAL.
      CONCATENATE ws_sel_fields-fieldname &apos;IN&apos; ws_sel_fields-selname
               INTO r_string SEPARATED BY space.
    ELSE.
      CONCATENATE r_string &apos;AND&apos; ws_sel_fields-fieldname &apos;IN&apos; ws_sel_fields-selname
               INTO r_string SEPARATED BY space.
    ENDIF.
  ENDLOOP.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="LOCK_PROG" VERSION="1" LANGU="E" DESCRIPT="Lock programm" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="LOCK_PROG" SCONAME="I_PROG" VERSION="1" LANGU="E" DESCRIPT="ABAP Program Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="PROGRAMM"/>
   <exception CLSNAME="Z_C_SY6_MAIN" CMPNAME="LOCK_PROG" SCONAME="NO_LOCK_POSSIBLE" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/>
   <source>METHOD lock_prog.
  CONSTANTS: c_enqueue_excl    VALUE &apos;X&apos;,  &quot;Art der Kurzzeitsperre
                                           &quot; &apos;X&apos; .. exclusiv, &apos;E&apos; .. kumulativ
             c_enqueue_excl_u  VALUE &apos;E&apos;.  &quot;Art der Kurzzeitsperre für UDM
  &quot; &apos;X&apos; .. exclusiv, &apos;E&apos; .. kumulativ
  CONSTANTS: c_enqueue_scope TYPE ddenqscope VALUE &apos;2&apos;,
               &quot;Sperren für Verbucher (Dtel DDENQSCOPE):
               &quot;&apos;1&apos; .. Sperre nicht an Verbucher geben
               &quot;&apos;2&apos; .. Sperre an Verbucher geben (default)
               &quot;&apos;3&apos; .. Sperre zusätzlich an Verbucher geben
             c_dequeue_scope TYPE ddenqscope VALUE &apos;3&apos;.
  &quot;Sperren für Verbucher (Dtel DDENQSCOPE):
  &quot;&apos;1&apos; .. Sperre nicht an Verbucher geben
  &quot;&apos;2&apos; .. Sperre an Verbucher geben
  &quot;&apos;3&apos; .. Sperre zusätzlich an Verbucher (default)

  CALL FUNCTION &apos;ENQUEUE_ESRDIRE&apos;
    EXPORTING
      mode_trdir     = c_enqueue_excl
      name           = i_prog
      _scope         = c_enqueue_scope
    EXCEPTIONS
      foreign_lock   = 1
      system_failure = 2
      OTHERS         = 3.
  IF sy-subrc &gt; 0.
    PERFORM exc_from_enqueue IN PROGRAM saplseuq
             USING sy-subrc i_prog space i_prog.
    RAISE no_lock_possible.
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="RESET_SEL" VERSION="1" LANGU="E" DESCRIPT="Reset sel fields to key fields" EXPOSURE="2" STATE="1" EDITORDER="8 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="RESET_SEL" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABNAME"/>
   <source>METHOD reset_sel.
  DATA: l_mandt TYPE cccliindep.
  IF i_table = w_table.
    wt_sel_fields = wt_key_fields.
  ELSE.
    set_table( EXPORTING i_table = i_table
                         i_mandt = w_mandt ).
    wt_sel_fields = wt_key_fields.
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="SET_SEL_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Set new selection values" EXPOSURE="2" STATE="1" EDITORDER="12 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="SET_SEL_FIELDS" SCONAME="IT_SEL_FIELDS" VERSION="1" LANGU="E" DESCRIPT="Table type for ZSY6_S_SEL_FIELDS" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZSY6_T_SEL_FIELDS"/>
   <source>METHOD set_sel_fields.

  wt_sel_fields = it_sel_fields.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="SET_TABLE" VERSION="1" LANGU="E" DESCRIPT="Set new table" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="SET_TABLE" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABNAME"/>
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="SET_TABLE" SCONAME="I_MANDT" VERSION="1" LANGU="E" DESCRIPT="Cross-Client Customizing" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CCCLIINDEP" PAROPTIONL="X"/>
   <source>METHOD set_table.
  DATA: ls_ddfields TYPE dfies,
        l_name      TYPE fieldname,
        l_tname     TYPE char80,
        l_num(3)    TYPE n.

  REFRESH: wt_ddfields,
           wt_sel_fields,
           wt_key_fields.

  w_mandt = i_mandt.

  CALL FUNCTION &apos;DDIF_FIELDINFO_GET&apos;
    EXPORTING
      tabname              = i_table
*   FIELDNAME            = &apos; &apos;
      langu                = sy-langu
*   LFIELDNAME           = &apos; &apos;
      all_types            = abap_true
*   GROUP_NAMES          = &apos; &apos;
*   UCLEN                =
* IMPORTING
*   X030L_WA             =
*   DDOBJTYPE            =
*   DFIES_WA             =
*   LINES_DESCR          =
    TABLES
      dfies_tab            = wt_ddfields
*   FIXED_VALUES         =
    EXCEPTIONS
      not_found            = 1
      internal_error       = 2
      OTHERS               = 3
            .
  IF sy-subrc &lt;&gt; 0.
    MESSAGE e402(mo) WITH i_table. .
  ELSE.
    SORT wt_ddfields BY position
                        tabname
                        fieldname.

    w_table = i_table.
* We always start with key fields
    LOOP AT wt_ddfields INTO ls_ddfields WHERE keyflag    =  abap_true.
      IF w_mandt = abap_false AND ls_ddfields-datatype = &apos;CLNT&apos;.
        CONTINUE.
      ENDIF.
      l_num = l_num + 1.
      ws_sel_fields = fill_sel_fields( i_num       = l_num
                                       is_ddfields = ls_ddfields ).

      INSERT ws_sel_fields INTO TABLE wt_key_fields.
      INSERT ws_sel_fields INTO TABLE wt_sel_fields.
    ENDLOOP.
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="UNLOCK_PROG" VERSION="1" LANGU="E" DESCRIPT="Unlock programm" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_MAIN" CMPNAME="UNLOCK_PROG" SCONAME="I_PROG" VERSION="1" LANGU="E" DESCRIPT="ABAP Program Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="PROGRAMM"/>
   <source>METHOD unlock_prog.
  CONSTANTS: c_enqueue_excl    VALUE &apos;X&apos;,  &quot;Art der Kurzzeitsperre
                                           &quot; &apos;X&apos; .. exclusiv, &apos;E&apos; .. kumulativ
             c_enqueue_excl_u  VALUE &apos;E&apos;.  &quot;Art der Kurzzeitsperre für UDM
  &quot; &apos;X&apos; .. exclusiv, &apos;E&apos; .. kumulativ

  CALL FUNCTION &apos;DEQUEUE_ESRDIRE&apos;
    EXPORTING
      mode_trdir = c_enqueue_excl
      name       = i_prog.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_MAIN" CMPNAME="UNLOCK_TABLE" VERSION="1" LANGU="E" DESCRIPT="Unlock all tables" EXPOSURE="2" STATE="1" EDITORDER="9 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>METHOD UNLOCK_TABLE.
  DATA: ls_rstable TYPE rstable.

  LOOP AT wt_rstable INTO ls_rstable.

    CALL FUNCTION &apos;DEQUEUE_E_TABLEE&apos;
      EXPORTING
*   MODE_RSTABLE       = &apos;E&apos;
        tabname            = ls_rstable-tabname
        varkey             = ls_rstable-varkey.
*   X_TABNAME          = &apos; &apos;
*   X_VARKEY           = &apos; &apos;
*   _SCOPE             = &apos;3&apos;
*   _SYNCHRON          = &apos; &apos;
*   _COLLECT           = &apos; &apos;
    .

  ENDLOOP.

  REFRESH wt_rstable.

ENDMETHOD.</source>
  </method>
 </CLAS>
 <CLAS CLSNAME="Z_C_SY6_GRID" VERSION="1" LANGU="E" DESCRIPT="Variant list for call stat skip first screen" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" RSTAT="K" CLSBCCAT="00" MSG_ID="ES" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="Z_C_SY6_MAIN">
  <localImplementation>*&quot;* local class implementation for public class
*&quot;* use this source file for the implementation part of
*&quot;* local helper classes</localImplementation>
  <localTypes>*&quot;* use this source file for any type declarations (class
*&quot;* definitions, interfaces or data types) you need for method
*&quot;* implementation or private method&apos;s signature

TYPES: BEGIN OF ts_fields,
        sign   TYPE bapisign,
        option TYPE bapioption,
        low    TYPE fieldname,
        high   TYPE fieldname,
       END OF ts_fields,

       tt_fields TYPE STANDARD TABLE OF ts_fields.</localTypes>
  <localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros>
  <textPool>
   <language SPRAS="1">
    <textElement ID="I" KEY="001" ENTRY="Insert row" LENGTH="13 "/>
    <textElement ID="I" KEY="002" ENTRY="Default" LENGTH="10 "/>
    <textElement ID="I" KEY="003" ENTRY="User" LENGTH="4 "/>
    <textElement ID="I" KEY="004" ENTRY="Data summary selection" LENGTH="22 "/>
    <textElement ID="I" KEY="005" ENTRY="My variant" LENGTH="10 "/>
    <textElement ID="I" KEY="006" ENTRY="Default" LENGTH="7 "/>
    <textElement ID="I" KEY="007" ENTRY="Monthly totals" LENGTH="14 "/>
    <textElement ID="I" KEY="008" ENTRY="Year" LENGTH="4 "/>
    <textElement ID="I" KEY="009" ENTRY="Status" LENGTH="6 "/>
    <textElement ID="I" KEY="010" ENTRY="Stat." LENGTH="5 "/>
    <textElement ID="I" KEY="011" ENTRY="Def." LENGTH="4 "/>
    <textElement ID="I" KEY="012" ENTRY="Selection field selection" LENGTH="25 "/>
    <textElement ID="I" KEY="013" ENTRY="Table maintenance messages" LENGTH="26 "/>
    <textElement ID="I" KEY="014" ENTRY="Error Log" LENGTH="9 "/>
    <textElement ID="I" KEY="101" ENTRY="Append row" LENGTH="10 "/>
    <textElement ID="I" KEY="102" ENTRY="Insert row" LENGTH="10 "/>
    <textElement ID="I" KEY="103" ENTRY="Duplicate row" LENGTH="13 "/>
   </language>
   <language SPRAS="3">
    <textElement ID="I" KEY="001" ENTRY="Insert row" LENGTH="13 "/>
    <textElement ID="I" KEY="002" ENTRY="Default" LENGTH="10 "/>
    <textElement ID="I" KEY="003" ENTRY="User" LENGTH="4 "/>
    <textElement ID="I" KEY="004" ENTRY="Data summary selection" LENGTH="22 "/>
    <textElement ID="I" KEY="005" ENTRY="My variant" LENGTH="10 "/>
    <textElement ID="I" KEY="006" ENTRY="Default" LENGTH="7 "/>
    <textElement ID="I" KEY="007" ENTRY="Monthly totals" LENGTH="14 "/>
    <textElement ID="I" KEY="008" ENTRY="Year" LENGTH="4 "/>
    <textElement ID="I" KEY="009" ENTRY="Status" LENGTH="6 "/>
    <textElement ID="I" KEY="010" ENTRY="Stat." LENGTH="5 "/>
    <textElement ID="I" KEY="011" ENTRY="Def." LENGTH="4 "/>
    <textElement ID="I" KEY="012" ENTRY="Selection field selection" LENGTH="25 "/>
    <textElement ID="I" KEY="013" ENTRY="Table maintenance messages" LENGTH="26 "/>
    <textElement ID="I" KEY="014" ENTRY="Error Log" LENGTH="9 "/>
    <textElement ID="I" KEY="015" ENTRY="Selection of local data get&apos;&apos;s ignored!" LENGTH="40 "/>
    <textElement ID="I" KEY="016" ENTRY="Adjust" LENGTH="6 "/>
    <textElement ID="I" KEY="017" ENTRY="Adjust from remote data" LENGTH="23 "/>
    <textElement ID="I" KEY="101" ENTRY="Append row" LENGTH="10 "/>
    <textElement ID="I" KEY="102" ENTRY="Insert row" LENGTH="10 "/>
    <textElement ID="I" KEY="103" ENTRY="Duplicate row" LENGTH="13 "/>
   </language>
   <language SPRAS="E">
    <textElement ID="I" KEY="001" ENTRY="Insert row" LENGTH="13 "/>
    <textElement ID="I" KEY="002" ENTRY="Default" LENGTH="10 "/>
    <textElement ID="I" KEY="003" ENTRY="User" LENGTH="4 "/>
    <textElement ID="I" KEY="004" ENTRY="Data summary selection" LENGTH="22 "/>
    <textElement ID="I" KEY="005" ENTRY="My variant" LENGTH="10 "/>
    <textElement ID="I" KEY="006" ENTRY="Default" LENGTH="7 "/>
    <textElement ID="I" KEY="007" ENTRY="Monthly totals" LENGTH="14 "/>
    <textElement ID="I" KEY="008" ENTRY="Year" LENGTH="4 "/>
    <textElement ID="I" KEY="009" ENTRY="Status" LENGTH="6 "/>
    <textElement ID="I" KEY="010" ENTRY="Stat." LENGTH="5 "/>
    <textElement ID="I" KEY="011" ENTRY="Def." LENGTH="4 "/>
    <textElement ID="I" KEY="012" ENTRY="Selection field selection" LENGTH="25 "/>
    <textElement ID="I" KEY="013" ENTRY="Table maintenance messages" LENGTH="26 "/>
    <textElement ID="I" KEY="014" ENTRY="Error Log" LENGTH="9 "/>
    <textElement ID="I" KEY="015" ENTRY="Selection of local data get&apos;&apos;s ignored!" LENGTH="40 "/>
    <textElement ID="I" KEY="016" ENTRY="Adjust" LENGTH="6 "/>
    <textElement ID="I" KEY="017" ENTRY="Adjust from remote data" LENGTH="23 "/>
    <textElement ID="I" KEY="018" ENTRY="Try to save with errors?" LENGTH="24 "/>
    <textElement ID="I" KEY="019" ENTRY="Yes" LENGTH="5 "/>
    <textElement ID="I" KEY="020" ENTRY="No" LENGTH="5 "/>
    <textElement ID="I" KEY="101" ENTRY="Append row" LENGTH="10 "/>
    <textElement ID="I" KEY="102" ENTRY="Insert row" LENGTH="10 "/>
    <textElement ID="I" KEY="103" ENTRY="Duplicate row" LENGTH="13 "/>
   </language>
   <language SPRAS="H">
    <textElement ID="I" KEY="001" ENTRY="Insert row" LENGTH="13 "/>
    <textElement ID="I" KEY="002" ENTRY="Default" LENGTH="10 "/>
    <textElement ID="I" KEY="003" ENTRY="User" LENGTH="4 "/>
    <textElement ID="I" KEY="004" ENTRY="Data summary selection" LENGTH="22 "/>
    <textElement ID="I" KEY="005" ENTRY="My variant" LENGTH="10 "/>
    <textElement ID="I" KEY="006" ENTRY="Default" LENGTH="7 "/>
    <textElement ID="I" KEY="007" ENTRY="Monthly totals" LENGTH="14 "/>
    <textElement ID="I" KEY="008" ENTRY="Year" LENGTH="4 "/>
    <textElement ID="I" KEY="009" ENTRY="Status" LENGTH="6 "/>
    <textElement ID="I" KEY="010" ENTRY="Stat." LENGTH="5 "/>
    <textElement ID="I" KEY="011" ENTRY="Def." LENGTH="4 "/>
    <textElement ID="I" KEY="012" ENTRY="Selection field selection" LENGTH="25 "/>
    <textElement ID="I" KEY="013" ENTRY="Table maintenance messages" LENGTH="26 "/>
    <textElement ID="I" KEY="014" ENTRY="Error Log" LENGTH="9 "/>
    <textElement ID="I" KEY="015" ENTRY="Selection of local data get&apos;&apos;s ignored!" LENGTH="40 "/>
    <textElement ID="I" KEY="016" ENTRY="Adjust" LENGTH="6 "/>
    <textElement ID="I" KEY="017" ENTRY="Adjust from remote data" LENGTH="23 "/>
    <textElement ID="I" KEY="101" ENTRY="Append row" LENGTH="10 "/>
    <textElement ID="I" KEY="102" ENTRY="Insert row" LENGTH="10 "/>
    <textElement ID="I" KEY="103" ENTRY="Duplicate row" LENGTH="13 "/>
   </language>
   <language SPRAS="R">
    <textElement ID="I" KEY="001" ENTRY="Insert row" LENGTH="13 "/>
    <textElement ID="I" KEY="002" ENTRY="Default" LENGTH="10 "/>
    <textElement ID="I" KEY="003" ENTRY="User" LENGTH="4 "/>
    <textElement ID="I" KEY="004" ENTRY="Data summary selection" LENGTH="22 "/>
    <textElement ID="I" KEY="005" ENTRY="My variant" LENGTH="10 "/>
    <textElement ID="I" KEY="006" ENTRY="Default" LENGTH="7 "/>
    <textElement ID="I" KEY="007" ENTRY="Monthly totals" LENGTH="14 "/>
    <textElement ID="I" KEY="008" ENTRY="Year" LENGTH="4 "/>
    <textElement ID="I" KEY="009" ENTRY="Status" LENGTH="6 "/>
    <textElement ID="I" KEY="010" ENTRY="Stat." LENGTH="5 "/>
    <textElement ID="I" KEY="011" ENTRY="Def." LENGTH="4 "/>
    <textElement ID="I" KEY="012" ENTRY="Selection field selection" LENGTH="25 "/>
    <textElement ID="I" KEY="013" ENTRY="Table maintenance messages" LENGTH="26 "/>
    <textElement ID="I" KEY="014" ENTRY="Error Log" LENGTH="9 "/>
    <textElement ID="I" KEY="015" ENTRY="Selection of local data get&apos;&apos;s ignored!" LENGTH="40 "/>
    <textElement ID="I" KEY="016" ENTRY="Adjust" LENGTH="6 "/>
    <textElement ID="I" KEY="017" ENTRY="Adjust from remote data" LENGTH="23 "/>
    <textElement ID="I" KEY="101" ENTRY="Append row" LENGTH="10 "/>
    <textElement ID="I" KEY="102" ENTRY="Insert row" LENGTH="10 "/>
    <textElement ID="I" KEY="103" ENTRY="Duplicate row" LENGTH="13 "/>
   </language>
  </textPool>
  <typeUsage CLSNAME="Z_C_SY6_GRID" TYPEGROUP="ABAP" VERSION="1" TPUTYPE="0" IMPLICIT="X"/>
  <typeUsage CLSNAME="Z_C_SY6_GRID" TYPEGROUP="ICON" VERSION="1" TPUTYPE="0" EXPLICIT="X"/>
  <forwardDeclaration>ABAP</forwardDeclaration>
  <forwardDeclaration>ICON</forwardDeclaration>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="C_GRID" VERSION="1" LANGU="1" DESCRIPT="Table Name" EXPOSURE="0" STATE="1" EDITORDER="7 " ATTDECLTYP="2" ATTVALUE="&apos;ZSY6_S_GRID&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TABNAME" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="C_ORIGIN_LOCAL" VERSION="1" LANGU="3" DESCRIPT="Data origin" EXPOSURE="0" STATE="1" EDITORDER="14 " ATTDECLTYP="2" ATTVALUE="&apos;L&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZSY6ORIGIN" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="C_ORIGIN_REMOTE" VERSION="1" LANGU="3" DESCRIPT="Data origin" EXPOSURE="0" STATE="1" EDITORDER="15 " ATTDECLTYP="2" ATTVALUE="&apos;R&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZSY6ORIGIN" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="C_UI_FUNC_ADJUST" VERSION="1" LANGU="3" DESCRIPT="Function Code" EXPOSURE="0" STATE="1" EDITORDER="13 " ATTDECLTYP="2" ATTVALUE="&apos;___ADJUST&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="UI_FUNC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="C_UI_FUNC_MSG" VERSION="1" LANGU="1" DESCRIPT="Function Code" EXPOSURE="0" STATE="1" EDITORDER="12 " ATTDECLTYP="2" ATTVALUE="&apos;___MSG&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="UI_FUNC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="C_UI_FUNC_UPDATE" VERSION="1" LANGU="3" DESCRIPT="Function Code" EXPOSURE="2" STATE="1" EDITORDER="3 " ATTDECLTYP="2" ATTVALUE="&apos;___UPDATE&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="UI_FUNC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WC_CONTAINER" VERSION="1" LANGU="1" DESCRIPT="Container for Custom Controls in the Screen Area" EXPOSURE="0" STATE="1" EDITORDER="2 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_GUI_CUSTOM_CONTAINER" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WC_GRID" VERSION="1" LANGU="1" DESCRIPT="ALV List Viewer" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_GUI_ALV_GRID" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WO_MSG" VERSION="1" LANGU="1" DESCRIPT="Saves Error Messages in a Queue, Output in Dialog" EXPOSURE="0" STATE="1" EDITORDER="11 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_ERROR_MSG" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WO_STRUC" VERSION="1" LANGU="1" DESCRIPT="Runtime Type Services" EXPOSURE="0" STATE="1" EDITORDER="9 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_ABAP_STRUCTDESCR" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WO_TABLE" VERSION="1" LANGU="1" DESCRIPT="Runtime Type Services" EXPOSURE="0" STATE="1" EDITORDER="8 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_ABAP_TABLEDESCR" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WO_TABLEDATA" VERSION="1" LANGU="3" EXPOSURE="0" STATE="1" EDITORDER="19 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WS_RSEUMOD" VERSION="1" LANGU="1" DESCRIPT="Settings for ABAP Workbench" EXPOSURE="2" STATE="1" EDITORDER="2 " ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="RSEUMOD" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WT_DATA" VERSION="1" LANGU="1" DESCRIPT="Table for data" EXPOSURE="0" STATE="1" EDITORDER="4 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WT_DATA_D" VERSION="1" LANGU="1" EXPOSURE="0" STATE="1" EDITORDER="5 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WT_DDSTYLE" VERSION="1" LANGU="1" DESCRIPT="Table type for table dd03l" EXPOSURE="0" STATE="1" EDITORDER="10 " ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="DDFIELDS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WT_FCAT" VERSION="1" LANGU="1" DESCRIPT="Field Catalog for List Viewer Control" EXPOSURE="0" STATE="1" EDITORDER="3 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="LVC_T_FCAT" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WT_FCAT_STYLE" VERSION="1" LANGU="1" DESCRIPT="Field Catalog for List Viewer Control" EXPOSURE="0" STATE="1" EDITORDER="6 " ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="LVC_T_FCAT" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WT_FIELDS" VERSION="1" LANGU="1" DESCRIPT="Hotspot fields" EXPOSURE="0" STATE="1" EDITORDER="17 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TT_FIELDS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WT_MSG1" VERSION="1" LANGU="1" DESCRIPT="ALV Control: Messages" EXPOSURE="0" STATE="1" EDITORDER="16 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="LVC_T_MSG1" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="WT_STYLE" VERSION="1" LANGU="3" DESCRIPT="ALV Control: Style Table for Cells" EXPOSURE="0" STATE="1" EDITORDER="20 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="LVC_T_STYL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="W_DISPLAY_ONLY" VERSION="1" LANGU="1" DESCRIPT="Display Only" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="FLAG" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="W_LINES" VERSION="1" LANGU="3" DESCRIPT="Natural Number" EXPOSURE="0" STATE="1" EDITORDER="18 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT4" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <attribute CLSNAME="Z_C_SY6_GRID" CMPNAME="W_SYNC" VERSION="1" LANGU="3" DESCRIPT="Sync data is active" EXPOSURE="2" STATE="1" EDITORDER="4 " ATTDECLTYP="0" ATTRDONLY="X" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ABAP_BOOL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <inheritance CLSNAME="Z_C_SY6_GRID" REFCLSNAME="Z_C_SY6_MAIN" VERSION="1" STATE="1"/>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ADD_REMOTE" VERSION="1" LANGU="E" DESCRIPT="Add remote data" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADD_REMOTE" SCONAME="I_SYSID" VERSION="1" LANGU="E" DESCRIPT="Name of the SAP System" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SYSYSID"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADD_REMOTE" SCONAME="IO_DATA" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <source>METHOD add_remote.
  DATA: lo_key_l       TYPE REF TO data,
        lo_key_r       TYPE REF TO data,
        lt_sort        TYPE abap_sortorder_tab,
        ls_sort        TYPE abap_sortorder,
        ls_key         TYPE zsy6_s_sel_fields.

  FIELD-SYMBOLS: &lt;fs_lt&gt;   TYPE ANY TABLE,
                 &lt;fcat_fs&gt; TYPE lvc_s_fcat.

* Create 2 new internal tables with only key from both datasets.
* Load tables from both datasets.
  create_check_tables( EXPORTING    io_data_r = io_data
                       CHANGING     xo_key_l  = lo_key_l
                                    xo_key_r  = lo_key_r ).
* Loop at local and check for remote merge data.
  merge_data( EXPORTING i_sysid   = i_sysid
                        io_data   = io_data
                        io_key_r  = lo_key_r
                        io_key_l  = lo_key_l ).

* Sort grid and Show grid.
  CLEAR ls_sort.
  LOOP AT wt_key_fields INTO ls_key WHERE keyflag = abap_true.
    ls_sort-name = ls_key-fieldname.
    APPEND ls_sort TO lt_sort.
  ENDLOOP.

  ls_sort-name = &apos;___ORIGIN&apos;.
  APPEND ls_sort TO lt_sort.

  ASSIGN wt_data-&gt;* TO &lt;fs_lt&gt;.
  IF sy-subrc = 0.
    SORT &lt;fs_lt&gt; BY  (lt_sort).
  ENDIF.

  wc_grid-&gt;get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ).

  LOOP AT wt_fcat ASSIGNING &lt;fcat_fs&gt; WHERE fieldname = &apos;___SYSID&apos;
                                      OR    fieldname = &apos;___CODES&apos;.                                 .
    &lt;fcat_fs&gt;-no_out   = abap_false.
    &lt;fcat_fs&gt;-tech     = abap_false.
  ENDLOOP.

  wc_grid-&gt;set_frontend_fieldcatalog( EXPORTING it_fieldcatalog = wt_fcat ).

  wc_grid-&gt;refresh_table_display( ).

  w_sync = abap_true.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_CELLS" VERSION="1" LANGU="E" DESCRIPT="Adjust the selected cells" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_CELLS" SCONAME="IT_STYLE" VERSION="1" LANGU="E" DESCRIPT="ALV Control: Style Table for Cells" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="LVC_T_STYL"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_CELLS" SCONAME="IT_FIDX" VERSION="1" LANGU="E" DESCRIPT="ALV control: Filter index" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="LVC_T_FIDX"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_CELLS" SCONAME="XO_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_CELLS" SCONAME="X_FOUND" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_BOOL"/>
   <source>METHOD adjust_cells.
  DATA: lt_cell  TYPE lvc_t_cell,
        ls_cell  TYPE lvc_s_cell,
        l_found  TYPE abap_bool,
        l_index1 TYPE sytabix,
        l_lines  TYPE i,
        lo_data  TYPE REF TO data,
        lo_table TYPE REF TO data,
        ls_color TYPE lvc_s_scol.

  FIELD-SYMBOLS: &lt;fs_ls&gt;  TYPE ANY,
                 &lt;fs_ls1&gt; TYPE ANY,
                 &lt;fs_lt&gt;  TYPE STANDARD TABLE,
                 &lt;fs_lt1&gt; TYPE STANDARD TABLE,
                 &lt;fs&gt;     TYPE ANY,
                 &lt;fs1&gt;    TYPE ANY,
                 &lt;fs_t&gt;   TYPE lvc_t_scol,
                 &lt;fs_t1&gt;  TYPE lvc_t_scol.

  wc_grid-&gt;get_selected_cells(
    IMPORTING
       et_cell = lt_cell
         ).

  CREATE DATA lo_data TYPE HANDLE wo_struc.
  ASSIGN lo_data-&gt;* TO &lt;fs_ls&gt;.
  ASSIGN wt_data-&gt;* TO &lt;fs_lt&gt;.

  ASSIGN xo_table-&gt;*      TO &lt;fs_lt1&gt;.

  LOOP AT lt_cell INTO ls_cell.
    READ TABLE &lt;fs_lt&gt; ASSIGNING &lt;fs_ls&gt; INDEX ls_cell-row_id-index.
    IF sy-subrc = 0.
      CLEAR l_index1.
      ASSIGN COMPONENT &apos;___CODES&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
      IF sy-subrc = 0.
        IF &lt;fs&gt; = &apos;DR&apos;.
          l_index1 =  ls_cell-row_id-index - 1.
          READ TABLE it_fidx TRANSPORTING NO FIELDS FROM l_index1.
          IF sy-subrc = 0.
            CONTINUE.
          ENDIF.
          READ TABLE &lt;fs_lt&gt; ASSIGNING &lt;fs_ls1&gt; INDEX l_index1.
          ASSIGN COMPONENT &apos;___CELLCOLOR&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs_t&gt;.
          IF sy-subrc = 0.
            x_found = abap_true.
            CLEAR ls_color.
            READ TABLE &lt;fs_t&gt; INTO ls_color WITH KEY fname = ls_cell-col_id-fieldname.
            IF ls_color-color-col = 7 AND sy-subrc = 0. &quot; We have a difference.
              ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs&gt;.
              IF sy-subrc = 0.
                &lt;fs&gt; = &apos;U&apos;.
              ENDIF.
              ASSIGN COMPONENT ls_color-fname OF STRUCTURE &lt;fs_ls&gt;  TO &lt;fs&gt;.
              ASSIGN COMPONENT ls_color-fname OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs1&gt;.
              IF &lt;fs&gt; IS ASSIGNED AND &lt;fs1&gt; IS ASSIGNED.
                &lt;fs1&gt; = &lt;fs&gt;.
              ENDIF.
* Update DL line and remove diff color if both lines stay.
              DELETE TABLE &lt;fs_t&gt; FROM ls_color.
            ENDIF.
* Update DR line and remove diff color if both lines stay.
            ASSIGN COMPONENT &apos;___CELLCOLOR&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs_t1&gt;.
            IF &lt;fs_t1&gt; IS ASSIGNED AND &lt;fs_t&gt; IS ASSIGNED.
              &lt;fs_t1&gt; = &lt;fs_t&gt;.
            ENDIF.
            READ TABLE &lt;fs_t&gt; TRANSPORTING NO FIELDS WITH KEY color-col = 7.
            IF sy-subrc NE 0.
              ASSIGN COMPONENT &apos;___CODES&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs&gt;.
              IF sy-subrc = 0.
                CLEAR &lt;fs&gt;.
              ENDIF.
              ASSIGN COMPONENT &apos;___ROWCOLOR&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs&gt;.
              IF sy-subrc = 0.
                &lt;fs&gt; = &apos;C510&apos;. &quot; Green
              ENDIF.
              INSERT &lt;fs_ls&gt; INTO TABLE &lt;fs_lt1&gt; .
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDLOOP.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_COLUMNS" VERSION="1" LANGU="E" DESCRIPT="Adjust the selected columns" EXPOSURE="0" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_COLUMNS" SCONAME="IT_STYLE" VERSION="1" LANGU="E" DESCRIPT="ALV Control: Style Table for Cells" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="LVC_T_STYL"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_COLUMNS" SCONAME="IT_FIDX" VERSION="1" LANGU="E" DESCRIPT="ALV control: Filter index" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="LVC_T_FIDX"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_COLUMNS" SCONAME="XO_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_COLUMNS" SCONAME="X_FOUND" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_BOOL"/>
   <source>METHOD adjust_columns.
  DATA: lt_col   TYPE lvc_t_col,
        ls_col   TYPE lvc_s_col,
        l_found  TYPE abap_bool,
        l_index  TYPE sytabix,
        l_index1 TYPE sytabix,
        l_lines  TYPE i,
        lo_data  TYPE REF TO data,
        lo_table TYPE REF TO data,
        ls_color TYPE lvc_s_scol.

  FIELD-SYMBOLS: &lt;fs_ls&gt;  TYPE ANY,
                 &lt;fs_ls1&gt; TYPE ANY,
                 &lt;fs_lt&gt;  TYPE STANDARD TABLE,
                 &lt;fs_lt1&gt; TYPE STANDARD TABLE,
                 &lt;fs&gt;     TYPE ANY,
                 &lt;fs1&gt;    TYPE ANY,
                 &lt;fs_t&gt;   TYPE lvc_t_scol,
                 &lt;fs_t1&gt;  TYPE lvc_t_scol.

*GET_SELECTED_CELLS
*GET_SELECTED_CELLS_ID
*GET_SELECTED_COLUMNS

  wc_grid-&gt;get_selected_columns(
    IMPORTING
      et_index_columns = lt_col
         ).
  CREATE DATA lo_data TYPE HANDLE wo_struc.
  ASSIGN lo_data-&gt;* TO &lt;fs_ls&gt;.
  ASSIGN wt_data-&gt;* TO &lt;fs_lt&gt;.

  ASSIGN xo_table-&gt;*      TO &lt;fs_lt1&gt;.

  DESCRIBE TABLE lt_col LINES l_lines.

  IF l_lines &gt; 0.
    LOOP AT &lt;fs_lt&gt; ASSIGNING &lt;fs_ls&gt;.
      l_index = sy-tabix.
      ASSIGN COMPONENT &apos;___CODES&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
      IF sy-subrc = 0.
        IF &lt;fs&gt; = &apos;DL&apos;.
          l_index1 =  l_index + 1.
          READ TABLE it_fidx TRANSPORTING NO FIELDS FROM l_index1.
          IF sy-subrc = 0.
            CONTINUE.
          ENDIF.
          READ TABLE &lt;fs_lt&gt; ASSIGNING &lt;fs_ls1&gt; INDEX l_index1.
          ASSIGN COMPONENT &apos;___CELLCOLOR&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs_t&gt;.
          IF sy-subrc = 0.
            x_found = abap_true.
            LOOP AT lt_col INTO ls_col.
              CLEAR ls_color.
              READ TABLE &lt;fs_t&gt; INTO ls_color WITH KEY fname = ls_col-fieldname.
              IF ls_color-color-col = 7 AND sy-subrc = 0. &quot; We have a difference.
                ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
                IF sy-subrc = 0.
                  &lt;fs&gt; = &apos;U&apos;.
                ENDIF.
                ASSIGN COMPONENT ls_color-fname OF STRUCTURE &lt;fs_ls&gt;  TO &lt;fs&gt;.
                ASSIGN COMPONENT ls_color-fname OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs1&gt;.
                IF &lt;fs&gt; IS ASSIGNED AND &lt;fs1&gt; IS ASSIGNED.
                  &lt;fs&gt; = &lt;fs1&gt;.
                ENDIF.
* Update DL line and remove diff color if both lines stay.
                DELETE TABLE &lt;fs_t&gt; FROM ls_color.
              ENDIF.
            ENDLOOP.
* Update DR line and remove diff color if both lines stay.
            ASSIGN COMPONENT &apos;___CELLCOLOR&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs_t1&gt;.
            IF &lt;fs_t1&gt; IS ASSIGNED AND &lt;fs_t&gt; IS ASSIGNED.
              &lt;fs_t1&gt; = &lt;fs_t&gt;.
            ENDIF.
            READ TABLE &lt;fs_t&gt; TRANSPORTING NO FIELDS WITH KEY color-col = 7.
            IF sy-subrc NE 0.
              ASSIGN COMPONENT &apos;___CODES&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
              IF sy-subrc = 0.
                CLEAR &lt;fs&gt;.
              ENDIF.
              ASSIGN COMPONENT &apos;___ROWCOLOR&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
              IF sy-subrc = 0.
                &lt;fs&gt; = &apos;C510&apos;. &quot; Green
              ENDIF.
              INSERT &lt;fs_ls1&gt; INTO TABLE &lt;fs_lt1&gt; .
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_LOCAL_FROM_REMOTE" VERSION="1" LANGU="E" DESCRIPT="Based on user selection copy/update local data from remote" EXPOSURE="2" STATE="1" EDITORDER="11 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>METHOD adjust_local_from_remote.
  DATA: lo_table TYPE REF TO data,
        ls_style TYPE lvc_s_styl,
        lt_style TYPE lvc_t_styl,
        l_found  TYPE abap_bool,
        lt_fidx  TYPE lvc_t_fidx,
        ls_sel_fields TYPE zsy6_s_sel_fields.

  FIELD-SYMBOLS: &lt;fs_ls&gt;  TYPE ANY,
                 &lt;fs_ls1&gt; TYPE ANY,
                 &lt;fs_lt&gt;  TYPE STANDARD TABLE,
                 &lt;fs_lt1&gt; TYPE STANDARD TABLE.

  LOOP AT wt_key_fields INTO ls_sel_fields.
    ls_style-fieldname  = ls_sel_fields-fieldname.
    ls_style-style      = cl_gui_alv_grid=&gt;mc_style_disabled.
    INSERT ls_style INTO TABLE lt_style.
  ENDLOOP.

  CREATE DATA lo_table TYPE HANDLE wo_table.
  ASSIGN lo_table-&gt;*      TO &lt;fs_lt1&gt;.
  ASSIGN wt_data-&gt;* TO &lt;fs_lt&gt;.

  wc_grid-&gt;get_filtered_entries( IMPORTING et_filtered_entries = lt_fidx ) .

  adjust_rows( EXPORTING it_style = lt_style
                         it_fidx  = lt_fidx
               CHANGING  xo_table = lo_table
                         x_found  = l_found ) .

  adjust_columns( EXPORTING it_style = lt_style
                            it_fidx  = lt_fidx
                  CHANGING  xo_table = lo_table
                            x_found  = l_found ) .

  adjust_cells( EXPORTING it_style = lt_style
                          it_fidx  = lt_fidx
                CHANGING  xo_table = lo_table
                          x_found  = l_found ) .

  IF l_found = abap_true.
    LOOP AT &lt;fs_lt1&gt; ASSIGNING &lt;fs_ls1&gt;.
      READ TABLE &lt;fs_lt&gt; FROM &lt;fs_ls1&gt; ASSIGNING &lt;fs_ls&gt;.
      DELETE TABLE &lt;fs_lt&gt; FROM &lt;fs_ls&gt;.
    ENDLOOP.
    wc_grid-&gt;refresh_table_display( ) .
  ELSE.
    MESSAGE i001.
  ENDIF.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_ROWS" VERSION="1" LANGU="E" DESCRIPT="Adjust the selected rows" EXPOSURE="0" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_ROWS" SCONAME="IT_STYLE" VERSION="1" LANGU="E" DESCRIPT="ALV Control: Style Table for Cells" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="LVC_T_STYL"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_ROWS" SCONAME="IT_FIDX" VERSION="1" LANGU="E" DESCRIPT="ALV control: Filter index" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="LVC_T_FIDX"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_ROWS" SCONAME="XO_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ADJUST_ROWS" SCONAME="X_FOUND" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_BOOL"/>
   <source>METHOD adjust_rows.
  DATA: lt_row   TYPE lvc_t_row,
        ls_row   TYPE lvc_s_row,
        lt_rowid TYPE lvc_t_roid,
        l_found  TYPE abap_bool,
        l_index  TYPE sytabix,
        lo_data  TYPE REF TO data,
        lo_table TYPE REF TO data,
        ls_color TYPE lvc_s_scol.

  FIELD-SYMBOLS: &lt;fs_ls&gt;  TYPE ANY,
                 &lt;fs_ls1&gt; TYPE ANY,
                 &lt;fs_lt&gt;  TYPE STANDARD TABLE,
                 &lt;fs_lt1&gt; TYPE STANDARD TABLE,
                 &lt;fs&gt;     TYPE ANY,
                 &lt;fs1&gt;    TYPE ANY,
                 &lt;fs_t&gt;   TYPE ANY TABLE.

*GET_SELECTED_CELLS
*GET_SELECTED_CELLS_ID
*GET_SELECTED_COLUMNS
  wc_grid-&gt;get_selected_rows(
    IMPORTING
      et_index_rows = lt_row
      et_row_no     = lt_rowid
         ).

  CREATE DATA lo_data TYPE HANDLE wo_struc.
  ASSIGN lo_data-&gt;* TO &lt;fs_ls&gt;.
  ASSIGN wt_data-&gt;* TO &lt;fs_lt&gt;.

  ASSIGN xo_table-&gt;*      TO &lt;fs_lt1&gt;.

  LOOP AT lt_row INTO ls_row.
    l_index = ls_row-index.
    READ TABLE it_fidx TRANSPORTING NO FIELDS FROM l_index.
    IF sy-subrc = 0.
      CONTINUE.
    ENDIF.
    l_found = abap_true.
    READ TABLE &lt;fs_lt&gt; ASSIGNING &lt;fs_ls&gt; INDEX ls_row-index.
    ASSIGN COMPONENT &apos;___CODES&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
    IF sy-subrc = 0.
      CASE &lt;fs&gt;.
        WHEN &apos;R&apos;.
          x_found = abap_true.
          CLEAR &lt;fs&gt;.
          ASSIGN COMPONENT &apos;___CELLSTYLE&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs_t&gt;.
          IF sy-subrc = 0.
            &lt;fs_t&gt; = it_style[].
          ENDIF.
          ASSIGN COMPONENT &apos;___SYSID&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = sy-sysid.
          ENDIF.
          ASSIGN COMPONENT &apos;___ORIGIN&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = c_origin_local.
          ENDIF.
          ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = &apos;I&apos;.
          ENDIF.
          ASSIGN COMPONENT &apos;___ROWCOLOR&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
** Populate color variable with colour properties
** Char 1 = C (This is a color property)
** Char 2 = 3 (Color codes: 1 - 7)
** Char 3 = Intensified on/off ( 1 or 0 )
** Char 4 = Inverse display on/off ( 1 or 0 )
            &lt;fs&gt; = &apos;C510&apos;. &quot; Green
          ENDIF.
        WHEN &apos;DR&apos;.
          l_index = ls_row-index - 1.
          READ TABLE &lt;fs_lt&gt; ASSIGNING &lt;fs_ls1&gt; INDEX l_index.
          ASSIGN COMPONENT &apos;___CELLCOLOR&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs_t&gt;.
          IF sy-subrc = 0.
            LOOP AT &lt;fs_t&gt; INTO ls_color.
              IF ls_color-color-col = 7. &quot; We have a difference.
                ASSIGN COMPONENT ls_color-fname OF STRUCTURE &lt;fs_ls&gt;  TO &lt;fs&gt;.
                ASSIGN COMPONENT ls_color-fname OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs1&gt;.
                IF &lt;fs&gt; IS ASSIGNED AND &lt;fs1&gt; IS ASSIGNED.
                  &lt;fs1&gt; = &lt;fs&gt;.
                ENDIF.
                DELETE TABLE &lt;fs_t&gt; FROM ls_color.
              ENDIF.
            ENDLOOP.
            ASSIGN COMPONENT &apos;___CODES&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs&gt;.
            IF sy-subrc = 0.
              CLEAR &lt;fs&gt;.
            ENDIF.
            ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs&gt;.
            IF sy-subrc = 0.
              &lt;fs&gt; = &apos;U&apos;.
            ENDIF.
            ASSIGN COMPONENT &apos;___ROWCOLOR&apos; OF STRUCTURE &lt;fs_ls1&gt; TO &lt;fs&gt;.
            IF sy-subrc = 0.
              &lt;fs&gt; = &apos;C510&apos;. &quot; Green
            ENDIF.
            INSERT &lt;fs_ls&gt; INTO TABLE &lt;fs_lt1&gt; .
            x_found = abap_true.
          ENDIF.
        WHEN OTHERS.
          MESSAGE i000 WITH &apos;Selection of local data get&apos;&apos;s ignored!&apos;(015).
      ENDCASE.
    ENDIF.
  ENDLOOP.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="CHANGE_USER_SETTINGS" VERSION="1" LANGU="E" DESCRIPT="Switch column header" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="CHANGE_USER_SETTINGS" SCONAME="IS_RSEUMOD" VERSION="1" LANGU="E" DESCRIPT="Settings for ABAP Workbench" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="RSEUMOD"/>
   <source>METHOD CHANGE_USER_SETTINGS.
  DATA: ls_fcat TYPE lvc_s_fcat.
  IF is_rseumod-tbmode &lt;&gt; ws_rseumod-tbmode.

    wc_grid-&gt;get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ).

    LOOP AT wt_fcat INTO ls_fcat.
      IF is_rseumod-tbmode IS INITIAL.
        ls_fcat-coltext = ls_fcat-fieldname.
      ELSE.
        ls_fcat-coltext = ls_fcat-scrtext_s.
      ENDIF.
      MODIFY wt_fcat FROM ls_fcat .
    ENDLOOP.

    wc_grid-&gt;set_frontend_fieldcatalog( it_fieldcatalog = wt_fcat ).
    wc_grid-&gt;refresh_table_display( ) .

  ENDIF.

  ws_rseumod = is_rseumod.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="CLASS_CONSTRUCTOR" VERSION="1" LANGU="E" DESCRIPT="CLASS_CONSTRUCTOR" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="2" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
   <source>METHOD class_constructor.
  FIELD-SYMBOLS: &lt;fcat_fs&gt; TYPE lvc_s_fcat.

  CALL FUNCTION &apos;LVC_FIELDCATALOG_MERGE&apos;
   EXPORTING
*   I_BUFFER_ACTIVE              =
     i_structure_name             = c_grid
*   I_CLIENT_NEVER_DISPLAY       = &apos;X&apos;
*   I_BYPASSING_BUFFER           =
*   I_INTERNAL_TABNAME           =
    CHANGING
      ct_fieldcat                  = wt_fcat_style
* EXCEPTIONS
*   INCONSISTENT_INTERFACE       = 1
*   PROGRAM_ERROR                = 2
*   OTHERS                       = 3
            .
  IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
    LOOP AT wt_fcat_style ASSIGNING &lt;fcat_fs&gt;.
      CASE &lt;fcat_fs&gt;-fieldname.
        WHEN &apos;___SYSID&apos;.
          &lt;fcat_fs&gt;-key      = abap_true.
          &lt;fcat_fs&gt;-key_sel  = abap_true.
          &lt;fcat_fs&gt;-no_out   = abap_true.
        WHEN &apos;___CODES&apos;.
          &lt;fcat_fs&gt;-key      = abap_true.
          &lt;fcat_fs&gt;-key_sel  = abap_true.
          &lt;fcat_fs&gt;-tech     = abap_true.
        WHEN OTHERS.
          &lt;fcat_fs&gt;-tech     = abap_true.
      ENDCASE.
    ENDLOOP.
  ENDIF.
  CALL FUNCTION &apos;DDIF_FIELDINFO_GET&apos;
    EXPORTING
      tabname              = c_grid
*   FIELDNAME            = &apos; &apos;
      langu                = sy-langu
*   LFIELDNAME           = &apos; &apos;
      all_types            = abap_true
*   GROUP_NAMES          = &apos; &apos;
*   UCLEN                =
* IMPORTING
*   X030L_WA             =
*   DDOBJTYPE            =
*   DFIES_WA             =
*   LINES_DESCR          =
    TABLES
      dfies_tab            = wt_ddstyle
*   FIXED_VALUES         =
    EXCEPTIONS
      not_found            = 1
      internal_error       = 2
      OTHERS               = 3  .
  IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  SELECT SINGLE *
         INTO ws_rseumod
         FROM  rseumod
         WHERE  uname  = sy-uname .
  IF sy-subrc NE 0 OR
     ws_rseumod-tbmaxsel IS INITIAL.
    ws_rseumod-tbmaxsel = 500.
  ENDIF.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="CONSTRUCTOR" VERSION="1" LANGU="E" DESCRIPT="CONSTRUCTOR" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " MTDTYPE="2" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="CONSTRUCTOR" SCONAME="I_CONTAINER" VERSION="1" LANGU="E" DESCRIPT="Parent Container" CMPTYPE="1" MTDTYPE="2" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="C"/>
   <exception CLSNAME="Z_C_SY6_GRID" CMPNAME="CONSTRUCTOR" SCONAME="ZCX_SY6_MAIN" VERSION="1" LANGU="E" MTDTYPE="2" EDITORDER="1 "/>
   <source>METHOD constructor.
  DATA: l_offline(1) TYPE c,
        lcx_sy6          TYPE REF TO zcx_sy6_main.

  super-&gt;constructor( ) . &quot; We load all we need.

  CALL METHOD cl_gui_alv_grid=&gt;offline
    RECEIVING
      e_offline = l_offline.

  IF l_offline = &apos;0&apos; .
    CREATE OBJECT wc_container
      EXPORTING
        container_name = i_container.
*
*    CREATE OBJECT wc_splitter
*      EXPORTING
*        parent      = wc_container
*        orientation = cl_gui_easy_splitter_container=&gt;orientation_vertical.
*
*
*    wc_split_cont_1 = wc_splitter-&gt;top_left_container.
*    wc_split_cont_2 = wc_splitter-&gt;bottom_right_container.

    CREATE OBJECT wc_grid
      EXPORTING
*    i_shellstyle      = 0
*    i_lifetime        =
        i_parent          = wc_container
*        i_appl_events     = abap_true
*    i_parentdbg       =
*    i_applogparent    =
*    i_graphicsparent  =
*    i_name            =
*    i_fcat_complete   = space
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5.

    IF sy-subrc &lt;&gt; 0.
      CASE sy-subrc .
        WHEN 1.
          RAISE EXCEPTION TYPE zcx_sy6_main
                          EXPORTING textid = zcx_sy6_main=&gt;error_cntl_create.
        WHEN 2.
          RAISE EXCEPTION TYPE zcx_sy6_main
                          EXPORTING textid = zcx_sy6_main=&gt;error_cntl_init.
        WHEN 3.
          RAISE EXCEPTION TYPE zcx_sy6_main
                          EXPORTING textid = zcx_sy6_main=&gt;error_cntl_link.
        WHEN 4.
          RAISE EXCEPTION TYPE zcx_sy6_main
                          EXPORTING textid = zcx_sy6_main=&gt;error_dp_create.
        WHEN OTHERS.
          RAISE EXCEPTION TYPE zcx_sy6_main
                EXPORTING textid = zcx_sy6_main=&gt;cx_root.
      ENDCASE.
    ENDIF.

  ELSE.
    RAISE EXCEPTION TYPE zcx_sy6_main
                EXPORTING textid = zcx_sy6_main=&gt;error_grid_in_background.
  ENDIF .

  CREATE OBJECT wo_msg
    EXPORTING
      mid   = &apos;SV&apos;
      title = &apos;Table maintenance messages&apos;(013).

  SET HANDLER on_data_changed
         FOR wc_grid .

  SET HANDLER on_button_click
         FOR wc_grid.

  SET HANDLER on_f4
         FOR wc_grid.

  SET HANDLER on_user_command
         FOR wc_grid .

  SET HANDLER on_before_user_command
         FOR wc_grid .

  SET HANDLER on_toolbar
         FOR wc_grid .

  SET HANDLER on_context_menu_request
         FOR wc_grid .

  SET HANDLER on_data_changed_finished
         FOR wc_grid .
*
  wc_grid-&gt;register_edit_event( EXPORTING  i_event_id = cl_gui_alv_grid=&gt;mc_evt_modified ).


ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="CREATE_CHECK_TABLES" VERSION="1" LANGU="E" DESCRIPT="Creates tables with only key data for row comparision" EXPOSURE="0" STATE="1" EDITORDER="4 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="CREATE_CHECK_TABLES" SCONAME="IO_DATA_R" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="CREATE_CHECK_TABLES" SCONAME="XO_KEY_R" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="CREATE_CHECK_TABLES" SCONAME="XO_KEY_L" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <source>METHOD create_check_tables.
  DATA: lo_struc       TYPE REF TO cl_abap_structdescr,
        lo_data        TYPE REF TO data,
        lo_table       TYPE REF TO cl_abap_tabledescr.

  FIELD-SYMBOLS: &lt;fs_rt&gt; TYPE ANY TABLE,
                 &lt;fs_lt&gt; TYPE ANY TABLE,
                 &lt;fs_r&gt; TYPE ANY TABLE,
                 &lt;fs_l&gt; TYPE ANY TABLE,
                 &lt;fs&gt;   TYPE ANY,
                 &lt;fs1&gt;  TYPE ANY.

  lo_struc = get_key_fields_structure( ).

  lo_table = cl_abap_tabledescr=&gt;create( lo_struc ).

  CREATE DATA xo_key_r   TYPE HANDLE lo_table.
  CREATE DATA xo_key_l   TYPE HANDLE lo_table.

  ASSIGN io_data_r-&gt;* TO &lt;fs_rt&gt;.
  ASSIGN xo_key_r-&gt;*  TO &lt;fs_r&gt;.

  CREATE DATA lo_data TYPE HANDLE lo_struc.
  ASSIGN lo_data-&gt;* TO &lt;fs1&gt;.

  LOOP AT &lt;fs_rt&gt; ASSIGNING &lt;fs&gt;.
    MOVE-CORRESPONDING &lt;fs&gt; TO &lt;fs1&gt;.
    INSERT &lt;fs1&gt; INTO TABLE &lt;fs_r&gt;.
  ENDLOOP.

  ASSIGN wt_data-&gt;* TO &lt;fs_lt&gt;.
  ASSIGN xo_key_l-&gt;*  TO &lt;fs_l&gt;.

  LOOP AT &lt;fs_lt&gt; ASSIGNING &lt;fs&gt;.
    MOVE-CORRESPONDING &lt;fs&gt; TO &lt;fs1&gt;.
    INSERT &lt;fs1&gt; INTO TABLE &lt;fs_l&gt;.
  ENDLOOP.

  load_style_table( ) .
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="DISPLAY" VERSION="1" LANGU="E" DESCRIPT="Set display only mode" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="DISPLAY" SCONAME="I_FLAG" VERSION="1" LANGU="E" DESCRIPT="General Flag" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PARVALUE="&apos;X&apos;" PAROPTIONL="X"/>
   <source>METHOD display.
  DATA: ls_fields  TYPE ts_fields.

  FIELD-SYMBOLS: &lt;fs_fcat&gt; TYPE lvc_s_fcat.

  IF i_flag = abap_true.
    w_display_only = abap_true.

    IF wt_fields IS NOT INITIAL.
      wc_grid-&gt;get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ).
      LOOP AT wt_fcat ASSIGNING &lt;fs_fcat&gt; WHERE fieldname IN wt_fields.
        &lt;fs_fcat&gt;-hotspot = abap_true.
        CLEAR &lt;fs_fcat&gt;-edit.
      ENDLOOP.
      wc_grid-&gt;set_frontend_fieldcatalog( EXPORTING it_fieldcatalog = wt_fcat ).
      CALL METHOD wc_grid-&gt;set_ready_for_input
        EXPORTING
          i_ready_for_input = 0.
* We need to undo the hotspots.
      wc_grid-&gt;refresh_table_display(
             EXPORTING
*    IS_STABLE      =
              i_soft_refresh = abap_true
*  exceptions
*    FINISHED       = 1
       ).
    ELSE.
      CALL METHOD wc_grid-&gt;set_ready_for_input
        EXPORTING
          i_ready_for_input = 0.
    ENDIF.
  ELSE.
    w_display_only = space.
    wc_grid-&gt;get_frontend_fieldcatalog( IMPORTING et_fieldcatalog = wt_fcat ).
    REFRESH wt_fields.
    LOOP AT wt_fcat ASSIGNING &lt;fs_fcat&gt; WHERE hotspot = abap_true.
      ls_fields-sign = &apos;I&apos;.
      ls_fields-option = &apos;EQ&apos;.
      ls_fields-low = &lt;fs_fcat&gt;-fieldname.
      INSERT ls_fields INTO TABLE wt_fields.
      CLEAR &lt;fs_fcat&gt;-hotspot.
      &lt;fs_fcat&gt;-edit = abap_true.
    ENDLOOP.
    wc_grid-&gt;set_frontend_fieldcatalog( EXPORTING it_fieldcatalog = wt_fcat ).
    CALL METHOD wc_grid-&gt;set_ready_for_input
      EXPORTING
        i_ready_for_input = 1.
* We need to undo the hotspots.
    wc_grid-&gt;refresh_table_display(
           EXPORTING
*    IS_STABLE      =
            i_soft_refresh = abap_true
*  exceptions
*    FINISHED       = 1
     ).

  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="LOAD_STYLE_TABLE" VERSION="1" LANGU="E" DESCRIPT="Load style to disable all remote fields" EXPOSURE="0" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>METHOD load_style_table.
  DATA: ls_dfies TYPE dfies,
        ls_style TYPE lvc_s_styl.

  REFRESH wt_style.

  LOOP AT   wt_ddfields INTO ls_dfies.
    CLEAR ls_style.
    ls_style-fieldname =  ls_dfies-fieldname.
    ls_style-style = cl_gui_alv_grid=&gt;mc_style_disabled.
    INSERT ls_style INTO TABLE wt_style.
  ENDLOOP.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="MERGE_DATA" VERSION="1" LANGU="E" DESCRIPT="Merge remote and local data into wt_data" EXPOSURE="0" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="MERGE_DATA" SCONAME="I_SYSID" VERSION="1" LANGU="E" DESCRIPT="Name of the SAP System" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SYSYSID"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="MERGE_DATA" SCONAME="IO_DATA" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="MERGE_DATA" SCONAME="IO_KEY_R" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="MERGE_DATA" SCONAME="IO_KEY_L" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <source>METHOD merge_data.
  DATA: ls_style       TYPE lvc_s_styl,
        ls_color       TYPE lvc_s_scol,
        lt_color       TYPE lvc_t_scol,
        lo_rs          TYPE REF TO data,
        lo_rs1         TYPE REF TO data,
        lo_l           TYPE REF TO data,
        lo_data        TYPE REF TO data,
        lo_data_r      TYPE REF TO data,
        lo_data_l      TYPE REF TO data,
        ls_key         TYPE zsy6_s_sel_fields,
        ls_dfies       TYPE dfies,
        l_tabix        TYPE sytabix,
        l_tabix_r      TYPE sytabix.

  FIELD-SYMBOLS: &lt;fs_lt&gt;   TYPE STANDARD TABLE,
                 &lt;fs_lt1&gt;  TYPE STANDARD TABLE,
                 &lt;fs_ls&gt;   TYPE ANY,
                 &lt;fs_rls&gt;  TYPE ANY,
                 &lt;fs_rls1&gt; TYPE ANY,
                 &lt;fs_rs&gt;   TYPE ANY,
                 &lt;fs_rs1&gt;  TYPE ANY,
                 &lt;fs_rt&gt;   TYPE STANDARD TABLE,
                 &lt;fs_rkt&gt;  TYPE STANDARD TABLE,
                 &lt;fs_lkt&gt;  TYPE STANDARD TABLE,
                 &lt;fs_lks&gt;  TYPE ANY,
                 &lt;fs_rks&gt;  TYPE ANY,
                 &lt;fs&gt;      TYPE ANY,
                 &lt;fs1&gt;     TYPE ANY.

  CLEAR ls_key.
  READ TABLE wt_key_fields INTO ls_key WITH KEY datatype = &apos;CLNT&apos;.

  ASSIGN wt_data-&gt;*   TO &lt;fs_lt&gt;.
  ASSIGN io_key_r-&gt;*  TO &lt;fs_rkt&gt;.
  ASSIGN io_key_l-&gt;*  TO &lt;fs_lkt&gt;.
  ASSIGN io_data-&gt;*   TO &lt;fs_rt&gt;.

  CREATE DATA lo_data LIKE LINE OF &lt;fs_rt&gt;.
  ASSIGN      lo_data-&gt;* TO &lt;fs_rs&gt;.
  CREATE DATA lo_rs1 LIKE LINE OF &lt;fs_rt&gt;.
  ASSIGN      lo_rs1-&gt;* TO &lt;fs_rs1&gt;.
  CREATE DATA lo_rs LIKE LINE OF &lt;fs_lt&gt;.
  ASSIGN      lo_rs-&gt;* TO &lt;fs_rls&gt;.
  CREATE DATA lo_rs1 LIKE LINE OF &lt;fs_lt&gt;.
  ASSIGN      lo_rs1-&gt;* TO &lt;fs_rls1&gt;.

  CREATE DATA lo_l TYPE HANDLE wo_table.
  ASSIGN lo_l-&gt;*      TO &lt;fs_lt1&gt;.
  &lt;fs_lt1&gt; = &lt;fs_lt&gt;.

  CREATE DATA lo_data_r LIKE LINE OF &lt;fs_rkt&gt;.
  ASSIGN      lo_data_r-&gt;* TO &lt;fs_rks&gt;.
  CREATE DATA lo_data_l LIKE LINE OF &lt;fs_lkt&gt;.
  ASSIGN      lo_data_l-&gt;* TO &lt;fs_lks&gt;.

  IF sy-subrc = 0.
    DESCRIBE TABLE &lt;fs_lt1&gt; LINES w_lines.
    LOOP AT &lt;fs_lt1&gt; ASSIGNING &lt;fs_ls&gt;.
      l_tabix = sy-tabix.
      READ TABLE &lt;fs_lt&gt; ASSIGNING &lt;fs_rls&gt; INDEX l_tabix.
      CLEAR &lt;fs_rks&gt;.
      MOVE-CORRESPONDING &lt;fs_rls&gt; TO &lt;fs_rks&gt;.
      READ TABLE &lt;fs_rkt&gt; FROM &lt;fs_rks&gt; TRANSPORTING NO FIELDS.
      IF sy-subrc = 0.
        l_tabix_r = sy-tabix.
* We have same key in both tables need to check if equal values.
        MOVE-CORRESPONDING &lt;fs_rls&gt; TO &lt;fs_rs1&gt;.
        READ TABLE &lt;fs_rt&gt; ASSIGNING &lt;fs_rs&gt; INDEX l_tabix_r.
        IF ls_key IS NOT INITIAL.
          ASSIGN COMPONENT ls_key-fieldname OF STRUCTURE &lt;fs_rs&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            CLEAR &lt;fs&gt;.
          ENDIF.
          ASSIGN COMPONENT ls_key-fieldname OF STRUCTURE &lt;fs_rs1&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            CLEAR &lt;fs&gt;.
          ENDIF.
        ENDIF.
        IF &lt;fs_rs1&gt; = &lt;fs_rs&gt;.
          &quot; Remote and local are equal.
          ASSIGN COMPONENT  &apos;___CODES&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            CLEAR &lt;fs&gt;.
          ENDIF.
          ASSIGN COMPONENT  &apos;___SYSID&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = sy-sysid.
          ENDIF.
          ASSIGN COMPONENT &apos;___ROWCOLOR&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
** Populate color variable with colour properties
** Char 1 = C (This is a color property)
** Char 2 = 3 (Color codes: 1 - 7)
** Char 3 = Intensified on/off ( 1 or 0 )
** Char 4 = Inverse display on/off ( 1 or 0 )
            &lt;fs&gt; = &apos;C510&apos;. &quot; Green
          ENDIF.
        ELSE.
          &quot; We have differences.
          ASSIGN COMPONENT  &apos;___CODES&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = &apos;DL&apos;.
          ENDIF.
          ASSIGN COMPONENT  &apos;___SYSID&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = sy-sysid.
          ENDIF.
          &lt;fs_rls1&gt; = &lt;fs_rls&gt;.
          READ TABLE &lt;fs_rt&gt; ASSIGNING &lt;fs_rs&gt; INDEX l_tabix_r.
          MOVE-CORRESPONDING &lt;fs_rs&gt; TO &lt;fs_rls1&gt;.
* Now lets do the color game.
          REFRESH lt_color.
          LOOP AT wt_ddfields INTO ls_dfies.
            ASSIGN COMPONENT ls_dfies-fieldname OF STRUCTURE &lt;fs_rs&gt; TO &lt;fs&gt;.
            IF sy-subrc = 0.
              ASSIGN COMPONENT ls_dfies-fieldname OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs1&gt;.
              IF sy-subrc = 0.
                IF &lt;fs&gt; &lt;&gt; &lt;fs1&gt;.
                  ls_color-fname      = ls_dfies-fieldname.
                  ls_color-color-col  =  7. &quot; Orange
                  ls_color-color-int  =  1. &quot; Orange
                  ls_color-color-inv  =  0. &quot; Orange
                  INSERT ls_color INTO TABLE lt_color.
                ENDIF.
              ENDIF.
            ENDIF.
          ENDLOOP.
          ASSIGN COMPONENT  &apos;___CELLCOLOR&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = lt_color.
          ENDIF.
          ASSIGN COMPONENT  &apos;___CELLCOLOR&apos; OF STRUCTURE &lt;fs_rls1&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = lt_color.
          ENDIF.
          ASSIGN COMPONENT  &apos;___SYSID&apos; OF STRUCTURE &lt;fs_rls1&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = i_sysid.
          ENDIF.
          ASSIGN COMPONENT  &apos;___CODES&apos; OF STRUCTURE &lt;fs_rls1&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = &apos;DR&apos;.
          ENDIF.
          ASSIGN COMPONENT &apos;___ORIGIN&apos; OF STRUCTURE &lt;fs_rls1&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = c_origin_remote.
          ENDIF.
          ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;fs_rls1&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            CLEAR &lt;fs&gt;.
          ENDIF.
          ASSIGN COMPONENT &apos;___CELLSTYLE&apos; OF STRUCTURE &lt;fs_rls1&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            &lt;fs&gt; = wt_style.
          ENDIF.
          APPEND &lt;fs_rls1&gt; TO &lt;fs_lt&gt;.
        ENDIF.
      ELSE.
* table is only in local and not in remote table L
        ASSIGN COMPONENT  &apos;___CODES&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = &apos;L&apos;.
        ENDIF.
        ASSIGN COMPONENT &apos;___SYSID&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = sy-sysid.
        ENDIF.
        ASSIGN COMPONENT &apos;___ORIGIN&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = c_origin_local.
        ENDIF.
        ASSIGN COMPONENT &apos;___ROWCOLOR&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = &apos;C610&apos;. &quot; Red
        ENDIF.
      ENDIF.
    ENDLOOP.
* Now we need to only check if we have a record remote but not local.
    LOOP AT &lt;fs_rt&gt; ASSIGNING &lt;fs_rs&gt;.
      l_tabix = sy-tabix.
      CLEAR &lt;fs_lks&gt;.
      MOVE-CORRESPONDING &lt;fs_rs&gt; TO &lt;fs_lks&gt;.
      READ TABLE &lt;fs_lkt&gt; FROM &lt;fs_lks&gt; TRANSPORTING NO FIELDS.
      IF sy-subrc &lt;&gt; 0.
        l_tabix_r = sy-tabix.
* table is only in local and not in remote table L
        CLEAR &lt;fs_rls&gt;.
        MOVE-CORRESPONDING &lt;fs_rs&gt; TO &lt;fs_rls&gt;.
        ASSIGN COMPONENT  &apos;___CODES&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = &apos;R&apos;.
        ENDIF.
        ASSIGN COMPONENT &apos;___LINENR&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          w_lines = w_lines + 1.
          &lt;fs&gt; = w_lines.
        ENDIF.
        ASSIGN COMPONENT &apos;___SYSID&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = i_sysid.
        ENDIF.
        ASSIGN COMPONENT &apos;___ORIGIN&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = c_origin_remote.
        ENDIF.
        ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          CLEAR &lt;fs&gt;.
        ENDIF.
        ASSIGN COMPONENT &apos;___CELLSTYLE&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = wt_style.
        ENDIF.
        ASSIGN COMPONENT &apos;___ROWCOLOR&apos; OF STRUCTURE &lt;fs_rls&gt; TO &lt;fs&gt;.
        IF sy-subrc = 0.
          &lt;fs&gt; = &apos;C610&apos;. &quot; Read
        ENDIF.
        APPEND &lt;fs_rls&gt; TO &lt;fs_lt&gt;.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="MSG_COUNT" VERSION="1" LANGU="E" DESCRIPT="Get error messages" EXPOSURE="2" STATE="1" EDITORDER="10 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="MSG_COUNT" SCONAME="R_COUNT" VERSION="1" LANGU="E" DESCRIPT="Natural Number" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="INT4"/>
   <source>METHOD msg_count.
  IF wo_msg IS BOUND.
    r_count = wo_msg-&gt;get_count( ) .
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="MSG_SHOW" VERSION="1" LANGU="E" DESCRIPT="Show error messages" EXPOSURE="2" STATE="1" EDITORDER="9 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>METHOD msg_show.
  IF wo_msg IS BOUND.
    wo_msg-&gt;show( ).
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_BEFORE_USER_COMMAND" VERSION="1" LANGU="E" DESCRIPT="Handles before user command" EXPOSURE="0" STATE="1" EDITORDER="15 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="BEFORE_USER_COMMAND" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_BEFORE_USER_COMMAND" SCONAME="E_UCOMM" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>method ON_BEFORE_USER_COMMAND.

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_BUTTON_CLICK" VERSION="1" LANGU="E" DESCRIPT="Handles button click event of grid" EXPOSURE="0" STATE="1" EDITORDER="13 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="BUTTON_CLICK" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_BUTTON_CLICK" SCONAME="ES_COL_ID" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_BUTTON_CLICK" SCONAME="ES_ROW_NO" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>METHOD on_button_click.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_CONTEXT_MENU_REQUEST" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="CONTEXT_MENU_REQUEST" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_CONTEXT_MENU_REQUEST" SCONAME="E_OBJECT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>METHOD on_context_menu_request.
  DATA: lt_fcodes TYPE ui_funcattr,
        lt_functions TYPE ui_functions,
        l_functions  TYPE ui_func,
        l_count TYPE int4.

  e_object-&gt;get_functions(
    IMPORTING
      fcodes = lt_fcodes
         ).

  READ TABLE lt_fcodes TRANSPORTING NO FIELDS WITH KEY fcode = c_ui_func_adjust.
  IF sy-subrc &lt;&gt; 0 .
* .. Trennlinie
    e_object-&gt;add_separator( ).

    cl_ctmenu=&gt;load_gui_status(
      EXPORTING
        program    = &apos;SAPLZSY60&apos;
        status     = &apos;0005&apos;
*      disable    =
        menu       = e_object
      EXCEPTIONS
        read_error = 1
           ).
    IF sy-subrc &lt;&gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF.

  l_count = wo_msg-&gt;get_count( ).

  IF w_display_only = abap_true.
    l_functions = c_ui_func_adjust.
    INSERT l_functions INTO TABLE lt_functions.
    l_functions = c_ui_func_update.
    INSERT l_functions INTO TABLE lt_functions.
    e_object-&gt;disable_functions( fcodes = lt_functions ).
  ELSE.
    IF l_count &gt; 0.
      l_functions = c_ui_func_msg.
      INSERT l_functions INTO TABLE lt_functions.
      l_functions = c_ui_func_adjust.
      INSERT l_functions INTO TABLE lt_functions.
      l_functions = c_ui_func_update.
      INSERT l_functions INTO TABLE lt_functions.
      e_object-&gt;disable_functions( fcodes = lt_functions ).
    ELSE.
      IF w_sync IS INITIAL.
        l_functions = c_ui_func_adjust.
        INSERT l_functions INTO TABLE lt_functions.
        e_object-&gt;disable_functions( fcodes = lt_functions ).
      ENDIF.
    ENDIF.
  ENDIF.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED" VERSION="1" LANGU="E" DESCRIPT="Handles data change event of Grid" EXPOSURE="0" STATE="1" EDITORDER="8 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="DATA_CHANGED" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED" SCONAME="SENDER" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="6 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED" SCONAME="ER_DATA_CHANGED" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED" SCONAME="E_ONF4" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED" SCONAME="E_ONF4_BEFORE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED" SCONAME="E_ONF4_AFTER" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED" SCONAME="E_UCOMM" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="5 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>METHOD on_data_changed.
  DATA: l_flag      TYPE flag,
        ls_ddfields TYPE dfies,
        ls_dd05s    TYPE dd05s,
        ls_msg1     TYPE lvc_s_msg1,
        lt_msg1     TYPE lvc_t_msg1,
        ls_modi     TYPE lvc_s_modi,
        ls_modi_    TYPE lvc_s_modi,
        lt_modi     TYPE lvc_t_modi,
        ls_del      TYPE lvc_s_moce,
        ls_ins      TYPE lvc_s_moce,
        ls_style    TYPE lvc_s_styl,
        lt_style    TYPE lvc_t_styl,
        ls_sel_fields TYPE zsy6_s_sel_fields,
        l_string      TYPE string.
  DATA: l_lang       TYPE tcp0c-langu,
        l_cntry      TYPE tcp0c-country,
        l_mod        TYPE tcp0c-modifier,
        l_updateflag TYPE update_type.
  DATA: lo_data TYPE REF TO data,
        ls_data TYPE REF TO data.
  DATA: l_varkey TYPE vim_enqkey,
        l_char(500) TYPE c,
        l_leng  TYPE i,
        l_kleng TYPE i,
        l_count TYPE i,
        l_key   TYPE flag.
  DATA: ls_rstable TYPE rstable,
        lt_row_id  TYPE zsy6_t_msg1,
        ls_row_id  TYPE zsy6_s_msg1.

  FIELD-SYMBOLS: &lt;ls_fs&gt;   TYPE ANY,
                 &lt;ls_fs_d&gt; TYPE ANY,
                 &lt;l_fs&gt;    TYPE ANY,
                 &lt;fs_msg&gt;  TYPE lvc_s_msg1,
                 &lt;fs&gt;      TYPE STANDARD TABLE,
                 &lt;fs_d&gt;    TYPE STANDARD TABLE.

  GET LOCALE LANGUAGE l_lang COUNTRY l_cntry MODIFIER l_mod.
  SET LOCALE LANGUAGE l_lang COUNTRY l_cntry.

  ASSIGN wt_data-&gt;*    TO &lt;fs&gt;.
  ASSIGN wt_data_d-&gt;*  TO &lt;fs_d&gt;.
  CREATE DATA ls_data TYPE (w_table).
  ASSIGN ls_data-&gt;* TO &lt;ls_fs&gt;.

  CREATE DATA lo_data LIKE LINE OF &lt;fs&gt;.
  ASSIGN lo_data-&gt;* TO &lt;ls_fs_d&gt;.

* Let&apos;s check for new rows.
  LOOP AT er_data_changed-&gt;mt_inserted_rows INTO ls_ins.
    er_data_changed-&gt;modify_cell(
        i_row_id    = ls_ins-row_id
        i_fieldname = &apos;___SYSID&apos;
        i_value     = sy-sysid ).

    er_data_changed-&gt;modify_cell(
        i_row_id    = ls_ins-row_id
        i_fieldname = &apos;___ORIGIN&apos;
        i_value     = c_origin_local ).

    er_data_changed-&gt;modify_cell(
        i_row_id    = ls_ins-row_id
        i_fieldname = &apos;___UPDATEFLAG&apos;
        i_value     = &apos;I&apos; ).

    er_data_changed-&gt;modify_cell(
        i_row_id    = ls_ins-row_id
        i_fieldname = &apos;___CELLSTYLE&apos;
        i_value     = lt_style ).

    w_lines = w_lines + 1.
    er_data_changed-&gt;modify_cell(
        i_row_id    = ls_ins-row_id
        i_fieldname = &apos;___LINENR&apos;
        i_value     = w_lines ).

    LOOP AT wt_ddfields INTO ls_ddfields WHERE datatype = &apos;CLNT&apos;.
*      if ls_ddfields-datatype = &apos;CLNT&apos;.
      er_data_changed-&gt;modify_cell(
          i_row_id    = ls_ins-row_id
          i_fieldname = ls_ddfields-fieldname
          i_value     = sy-mandt ).
*      else.
*        er_data_changed-&gt;modify_cell(
*            i_row_id    = ls_ins-row_id
*            i_fieldname = ls_ddfields-fieldname
*            i_value     = space ).
*      endif.
    ENDLOOP.
* remmeber line to clean error log
    ls_row_id-linenr = w_lines.
    ls_row_id-row_id = ls_ins-row_id.
    INSERT ls_row_id INTO TABLE lt_row_id.
  ENDLOOP.
* Now let&apos;s look at deleted cells.
  LOOP AT er_data_changed-&gt;mt_deleted_rows INTO ls_del.
    READ TABLE &lt;fs&gt; INTO &lt;ls_fs_d&gt; INDEX ls_del-row_id.
    IF sy-subrc EQ 0 .
* First we need the lock
      CLEAR: l_varkey,
             l_char,
             l_leng.
      LOOP AT wt_ddfields INTO ls_ddfields WHERE keyflag = abap_true.
        ASSIGN COMPONENT ls_ddfields-fieldname OF STRUCTURE &lt;ls_fs_d&gt; TO &lt;l_fs&gt;.
        IF sy-subrc = 0.
          l_kleng = ls_ddfields-leng.
          l_char+l_leng(l_kleng) = &lt;l_fs&gt;.
          l_leng = l_leng + l_kleng.
        ELSE.
          CLEAR: l_varkey,
                 l_char.
          EXIT.
        ENDIF.
      ENDLOOP.
      l_varkey = l_char.
      CALL FUNCTION &apos;ENQUEUE_E_TABLE&apos;
        EXPORTING
          mode_rstable   = &apos;E&apos;
          tabname        = w_table
          varkey         = l_varkey
        EXCEPTIONS
          foreign_lock   = 1
          system_failure = 2
          OTHERS         = 3.
      IF sy-subrc &lt;&gt; 0.
        CALL METHOD er_data_changed-&gt;add_protocol_entry
          EXPORTING
            i_msgid     = sy-msgid
            i_msgno     = sy-msgno
            i_msgty     = sy-msgty
            i_msgv1     = sy-msgv1
            i_msgv2     = sy-msgv2
            i_msgv3     = sy-msgv3
            i_msgv4     = sy-msgv4
            i_fieldname = ls_modi_-fieldname
            i_row_id    = ls_modi_-row_id.
      ELSE.
        ls_rstable-tabname = w_table.
        ls_rstable-varkey  = l_varkey.
        INSERT ls_rstable INTO TABLE wt_rstable.

        ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;ls_fs_d&gt; TO &lt;l_fs&gt; .
        IF &lt;l_fs&gt; &lt;&gt; &apos;I&apos;.
          INSERT &lt;ls_fs_d&gt; INTO TABLE &lt;fs_d&gt;.
        ENDIF.
      ENDIF.
* remmeber line to clean error log
      ASSIGN COMPONENT &apos;___LINENR&apos; OF STRUCTURE &lt;ls_fs_d&gt; TO &lt;l_fs&gt; .
      ls_row_id-linenr = &lt;l_fs&gt;.
      ls_row_id-row_id = ls_del-row_id.
      INSERT ls_row_id  INTO TABLE lt_row_id.
    ENDIF.
  ENDLOOP.
* Now let&apos;s check on modified cells.
  lt_modi = er_data_changed-&gt;mt_mod_cells.

  LOOP AT lt_modi INTO ls_modi.
    READ TABLE er_data_changed-&gt;mt_good_cells TRANSPORTING NO FIELDS WITH KEY row_id      = ls_modi-row_id
                                                                              tabix       = ls_modi-tabix
                                                                              fieldname   = ls_modi-fieldname.

    IF sy-subrc NE 0. &quot; We always change not our call do what you want
      er_data_changed-&gt;modify_cell(
             i_row_id      = ls_modi-row_id
             i_tabix       = ls_modi-tabix
             i_fieldname   = ls_modi-fieldname
             i_value       = ls_modi-value ).
    ENDIF.
    ls_modi_ = ls_modi.
    AT NEW row_id.
* First we need the lock.
      CLEAR: l_varkey,
             l_char,
             l_leng,
             l_key.
      er_data_changed-&gt;get_cell_value(
        EXPORTING
           i_row_id    = ls_modi_-row_id
           i_tabix     = ls_modi_-tabix
           i_fieldname = &apos;___UPDATEFLAG&apos;
        IMPORTING
          e_value      = l_updateflag ).
* remmeber line to clean error log
      er_data_changed-&gt;get_cell_value(
        EXPORTING
           i_row_id    = ls_modi_-row_id
           i_tabix     = ls_modi_-tabix
           i_fieldname = &apos;___LINENR&apos;
        IMPORTING
          e_value      = ls_row_id-linenr ).
      ls_row_id-row_id = ls_modi_-row_id.
      INSERT ls_row_id INTO TABLE lt_row_id.

      LOOP AT wt_ddfields INTO ls_ddfields WHERE keyflag = abap_true.
        ASSIGN COMPONENT ls_ddfields-fieldname OF STRUCTURE &lt;ls_fs_d&gt; TO &lt;l_fs&gt;.
        IF sy-subrc = 0.
          er_data_changed-&gt;get_cell_value(
            EXPORTING
               i_row_id    = ls_modi_-row_id
               i_tabix     = ls_modi_-tabix
               i_fieldname = ls_ddfields-fieldname
            IMPORTING
              e_value      = &lt;l_fs&gt; ).

          l_kleng = ls_ddfields-leng.
          l_char+l_leng(l_kleng) = &lt;l_fs&gt;.
          l_leng = l_leng + l_kleng.
          IF &lt;l_fs&gt; IS INITIAL.
            l_key = abap_true.
          ENDIF.
        ELSE.
          CLEAR: l_varkey,
                 l_char.
          EXIT.
        ENDIF.
      ENDLOOP.
      l_varkey = l_char.
      IF ( l_key IS INITIAL AND l_updateflag = &apos;I&apos; ) OR &quot; We have a full key for new
         l_updateflag &lt;&gt; &apos;I&apos; .                          &quot;We use what we have in any other case.
        CALL FUNCTION &apos;ENQUEUE_E_TABLE&apos;
          EXPORTING
            mode_rstable   = &apos;E&apos;
            tabname        = w_table
            varkey         = l_varkey
          EXCEPTIONS
            foreign_lock   = 1
            system_failure = 2
            OTHERS         = 3.
      ENDIF.
      IF sy-subrc &lt;&gt; 0.
        CALL METHOD er_data_changed-&gt;add_protocol_entry
          EXPORTING
            i_msgid     = sy-msgid
            i_msgno     = sy-msgno
            i_msgty     = sy-msgty
            i_msgv1     = sy-msgv1
            i_msgv2     = sy-msgv2
            i_msgv3     = sy-msgv3
            i_msgv4     = sy-msgv4
            i_fieldname = ls_modi_-fieldname
            i_row_id    = ls_modi_-row_id.
      ELSE.
        ls_rstable-tabname = w_table.
        ls_rstable-varkey  = l_varkey.
        INSERT ls_rstable INTO TABLE wt_rstable.

        IF l_updateflag IS INITIAL.
          er_data_changed-&gt;modify_cell(
              i_row_id    = ls_modi_-row_id
              i_tabix     = ls_modi_-tabix
              i_fieldname = &apos;___UPDATEFLAG&apos;
              i_value     = &apos;U&apos; ).
        ENDIF.
        IF l_updateflag = &apos;I&apos;.
          CLEAR l_string.
* let&apos;s get cell values.
          LOOP AT wt_sel_fields INTO ls_sel_fields WHERE keyflag = abap_true.
            ASSIGN COMPONENT ls_sel_fields-fieldname OF STRUCTURE &lt;ls_fs&gt; TO &lt;l_fs&gt; .
            er_data_changed-&gt;get_cell_value(
              EXPORTING
                 i_row_id    = ls_modi_-row_id
                 i_tabix     = ls_modi_-tabix
                 i_fieldname = ls_sel_fields-fieldname
              IMPORTING
                 e_value      = &lt;l_fs&gt; ).
            IF l_string IS INITIAL.
              CONCATENATE ls_sel_fields-fieldname &apos;= &apos;&apos;&apos;
                       INTO l_string SEPARATED BY space.
            ELSE.
              CONCATENATE l_string &apos;AND&apos; ls_sel_fields-fieldname &apos;= &apos;&apos;&apos;
                       INTO l_string SEPARATED BY space.
            ENDIF.
            CONCATENATE l_string &lt;l_fs&gt; &apos;&apos;&apos;&apos; INTO l_string.
          ENDLOOP.
          SELECT SINGLE  *
                   INTO &lt;ls_fs&gt;
                   FROM (w_table)
                   WHERE (l_string).
          IF sy-subrc EQ 0 .
            CALL METHOD er_data_changed-&gt;add_protocol_entry
              EXPORTING
                i_msgid     = &apos;SV&apos;
                i_msgno     = &apos;015&apos;
                i_msgty     = &apos;E&apos;
                i_fieldname = ls_modi_-fieldname
                i_row_id    = ls_modi_-row_id.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDAT.
  ENDLOOP.
* Now let&apos;s see if we need to clear an error.
* We ignore all errors and show error msg box instead
  lt_msg1 = er_data_changed-&gt;mt_protocol.
  LOOP AT lt_msg1 ASSIGNING &lt;fs_msg&gt;.
    READ TABLE lt_row_id INTO ls_row_id WITH KEY row_id = &lt;fs_msg&gt;-row_id.
    IF sy-subrc = 0.
      &lt;fs_msg&gt;-row_id = ls_row_id-linenr.
    ENDIF.
  ENDLOOP.
  LOOP AT lt_msg1 INTO ls_msg1.
    DELETE wt_msg1 WHERE row_id    = ls_msg1-row_id.
  ENDLOOP.
* perhaps change and/or deleted without error.
  LOOP AT lt_row_id INTO ls_row_id.
    DELETE wt_msg1 WHERE row_id    = ls_row_id-linenr.
  ENDLOOP.
  INSERT LINES OF lt_msg1 INTO TABLE wt_msg1.

  er_data_changed-&gt;refresh_protocol( ) .
  l_leng = wo_msg-&gt;get_count( ).
  wo_msg-&gt;reset( ) .
* For message boc only next errors.
  lt_msg1 = wt_msg1.
  DELETE ADJACENT DUPLICATES FROM lt_msg1 COMPARING msgid msgno row_id.
  DESCRIBE TABLE lt_msg1 LINES l_count.
  LOOP AT lt_msg1 INTO ls_msg1.
    IF l_count = 1.
      wo_msg-&gt;set(
          mid          = ls_msg1-msgid
          num          = ls_msg1-msgno
          pa1          = ls_msg1-msgv1
          pa2          = ls_msg1-msgv2
          pa3          = ls_msg1-msgv3
          pa4          = ls_msg1-msgv4
          typ          = &apos;I&apos;
          no_duplicate = &apos; &apos;
      ).
    ELSE.
      wo_msg-&gt;set(
          mid          = ls_msg1-msgid
          num          = ls_msg1-msgno
          pa1          = ls_msg1-msgv1
          pa2          = ls_msg1-msgv2
          pa3          = ls_msg1-msgv3
          pa4          = ls_msg1-msgv4
          typ          = ls_msg1-msgty
          no_duplicate = &apos; &apos;
             ).
    ENDIF.
  ENDLOOP.
  IF ( sy-subrc = 0  AND l_leng = 0 ) OR
     ( sy-subrc &lt;&gt; 0 AND l_leng &gt; 0 ).
    cl_gui_cfw=&gt;set_new_ok_code( new_code = &apos;ENTER&apos; ) .
  ENDIF.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED_FINISHED" VERSION="1" LANGU="E" DESCRIPT="Handles DATA_CHANGED_FINISHED event from grid" EXPOSURE="0" STATE="1" EDITORDER="9 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="DATA_CHANGED_FINISHED" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED_FINISHED" SCONAME="E_MODIFIED" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_DATA_CHANGED_FINISHED" SCONAME="ET_GOOD_CELLS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="0"/>
   <source>METHOD on_data_changed_finished.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_F4" VERSION="1" LANGU="E" DESCRIPT="On F4 for catalogs" EXPOSURE="0" STATE="1" EDITORDER="14 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="ONF4" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_F4" SCONAME="E_FIELDNAME" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_F4" SCONAME="E_FIELDVALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_F4" SCONAME="ES_ROW_NO" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_F4" SCONAME="ER_EVENT_DATA" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_F4" SCONAME="ET_BAD_CELLS" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="5 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_F4" SCONAME="E_DISPLAY" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="6 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>METHOD ON_F4.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_HOTSPOT_CLICK" VERSION="1" LANGU="E" DESCRIPT="Handles hotspot click" EXPOSURE="0" STATE="1" EDITORDER="16 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="HOTSPOT_CLICK" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_HOTSPOT_CLICK" SCONAME="E_ROW_ID" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_HOTSPOT_CLICK" SCONAME="E_COLUMN_ID" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_HOTSPOT_CLICK" SCONAME="ES_ROW_NO" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>method ON_HOTSPOT_CLICK.

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_MENU_BUTTON" VERSION="1" LANGU="E" DESCRIPT="Handles menu button events" EXPOSURE="0" STATE="1" EDITORDER="12 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="MENU_BUTTON" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_MENU_BUTTON" SCONAME="E_OBJECT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_MENU_BUTTON" SCONAME="E_UCOMM" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>METHOD ON_MENU_BUTTON.
  DATA: lt_func TYPE ui_funcattr.

  e_object-&gt;get_functions(
    IMPORTING
      fcodes = lt_func ).

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_TOOLBAR" VERSION="1" LANGU="E" DESCRIPT="Handles toolbar events" EXPOSURE="0" STATE="1" EDITORDER="11 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="TOOLBAR" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_TOOLBAR" SCONAME="E_OBJECT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_TOOLBAR" SCONAME="E_INTERACTIVE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>METHOD on_toolbar.
  DATA: ls_toolbar TYPE stb_button,
        l_count    TYPE sy-tabix.

* First let see if we are active or inactive.
*  IF wo_msg IS BOUND.
*    l_count = wo_msg-&gt;get_count( ).
*  ENDIF.
*  IF l_count = 0.
*    LOOP AT e_object-&gt;mt_toolbar INTO ls_toolbar WHERE function = c_ui_func_msg.
*      ls_toolbar-disabled = abap_true.
*      MODIFY e_object-&gt;mt_toolbar FROM ls_toolbar.
*    ENDLOOP.
*    IF sy-subrc &lt;&gt; 0.
*      CLEAR ls_toolbar.
*      MOVE 3 TO ls_toolbar-butn_type.
*      APPEND ls_toolbar TO e_object-&gt;mt_toolbar.
*      CLEAR ls_toolbar.
*      MOVE c_ui_func_msg TO ls_toolbar-function.            &quot;#EC NOTEXT
*      MOVE icon_error_protocol TO ls_toolbar-icon.
*      MOVE &apos;Error Log&apos;(014) TO ls_toolbar-quickinfo.
*      MOVE &apos;Error Log&apos;(014) TO ls_toolbar-text.
*      MOVE abap_true TO ls_toolbar-disabled.                &quot;#EC NOTEXT
*      APPEND ls_toolbar TO e_object-&gt;mt_toolbar.
*    ENDIF.
*  ELSE.
*    LOOP AT e_object-&gt;mt_toolbar INTO ls_toolbar WHERE function = c_ui_func_msg.
*      ls_toolbar-disabled = abap_false.
*      MODIFY e_object-&gt;mt_toolbar FROM ls_toolbar.
*    ENDLOOP.
*    IF sy-subrc &lt;&gt; 0.
*      CLEAR ls_toolbar.
*      MOVE 3 TO ls_toolbar-butn_type.
*      APPEND ls_toolbar TO e_object-&gt;mt_toolbar.
*      CLEAR ls_toolbar.
*      MOVE c_ui_func_msg TO ls_toolbar-function.            &quot;#EC NOTEXT
*      MOVE icon_error_protocol TO ls_toolbar-icon.
*      MOVE &apos;Error Log&apos;(014) TO ls_toolbar-quickinfo.
*      MOVE &apos;Error Log&apos;(014) TO ls_toolbar-text.
*      MOVE abap_false TO ls_toolbar-disabled.               &quot;#EC NOTEXT
*      APPEND ls_toolbar TO e_object-&gt;mt_toolbar.
*    ENDIF.
*  ENDIF.
*
*  IF w_display_only = abap_true OR w_sync IS INITIAL.
*    LOOP AT e_object-&gt;mt_toolbar INTO ls_toolbar WHERE function = c_ui_func_adjust.
*      ls_toolbar-disabled = abap_true.
*      MODIFY e_object-&gt;mt_toolbar FROM ls_toolbar.
*    ENDLOOP.
*    IF sy-subrc &lt;&gt; 0.
*      CLEAR ls_toolbar.
*      MOVE c_ui_func_adjust TO ls_toolbar-function.         &quot;#EC NOTEXT
*      MOVE icon_relation TO ls_toolbar-icon.
*      MOVE &apos;Adjust from remote data&apos;(017) TO ls_toolbar-quickinfo.
*      MOVE &apos;Adjust&apos;(016) TO ls_toolbar-text.
*      MOVE abap_true TO ls_toolbar-disabled.                &quot;#EC NOTEXT
*      APPEND ls_toolbar TO e_object-&gt;mt_toolbar.
*    ENDIF.
*  ELSEIF w_sync = abap_true.
*    LOOP AT e_object-&gt;mt_toolbar INTO ls_toolbar WHERE function = c_ui_func_adjust.
*      ls_toolbar-disabled = abap_false.
*      MODIFY e_object-&gt;mt_toolbar FROM ls_toolbar.
*    ENDLOOP.
*    IF sy-subrc &lt;&gt; 0.
*      CLEAR ls_toolbar.
*      MOVE c_ui_func_adjust TO ls_toolbar-function.         &quot;#EC NOTEXT
*      MOVE icon_relation  TO ls_toolbar-icon.
*      MOVE &apos;Adjust from remote data&apos;(017) TO ls_toolbar-quickinfo.
*      MOVE &apos;Adjust&apos;(016) TO ls_toolbar-text.
*      MOVE abap_false TO ls_toolbar-disabled.               &quot;#EC NOTEXT
*      APPEND ls_toolbar TO e_object-&gt;mt_toolbar.
*    ENDIF.
*  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_USER_COMMAND" VERSION="1" LANGU="E" DESCRIPT="handles user commands" EXPOSURE="0" STATE="1" EDITORDER="10 " DISPID="0 " MTDTYPE="1" MTDDECLTYP="0" REFCLSNAME="CL_GUI_ALV_GRID" REFCMPNAME="USER_COMMAND" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="ON_USER_COMMAND" SCONAME="E_UCOMM" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="1" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="0"/>
   <source>METHOD on_user_command.

  CASE e_ucomm .
    WHEN c_ui_func_msg .
      IF wo_msg IS BOUND.
        wo_msg-&gt;show( ).
      ENDIF.
    WHEN c_ui_func_adjust.
      adjust_local_from_remote( ).
    WHEN c_ui_func_update.
      update_with( ).
  ENDCASE .

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="REFRESH_SELECTION" VERSION="1" LANGU="E" DESCRIPT="Load selection to backend" EXPOSURE="2" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>method REFRESH_SELECTION.
  data: lt_rows   type  lvc_t_row,
        lt_row_no type  lvc_t_roid.

  wc_grid-&gt;get_selected_rows(
  importing
    et_index_rows = lt_rows
    et_row_no     = lt_row_no
         ).

endmethod.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="SAVE" VERSION="1" LANGU="E" DESCRIPT="Save" EXPOSURE="2" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>METHOD save.
  DATA: l_string      TYPE string,
        l_value       TYPE string,
        l_count       TYPE i,
        lo_data       TYPE REF TO data,
        lo_data_d     TYPE REF TO data,
        lo_data_t     TYPE REF TO data,
        ls_style      TYPE lvc_s_styl,
        lt_style      TYPE lvc_t_styl,
        ls_sel_fields TYPE zsy6_s_sel_fields,
        l_answer(1)   TYPE c VALUE &apos;1&apos;.

  FIELD-SYMBOLS: &lt;ls_fs&gt;   TYPE any,
                 &lt;ls_fs_t&gt; TYPE any,
                 &lt;ls_fs_d&gt; TYPE any,
                 &lt;l_fs&gt;    TYPE any,
                 &lt;l_fs_u&gt;  TYPE any,
                 &lt;fs&gt;      TYPE ANY TABLE,
                 &lt;fs_d&gt;    TYPE ANY TABLE.

  ASSIGN wt_data-&gt;* TO &lt;fs&gt;.
  ASSIGN wt_data_d-&gt;* TO &lt;fs_d&gt;.

  CREATE DATA lo_data_t TYPE (w_table).
  ASSIGN lo_data_t-&gt;* TO &lt;ls_fs_t&gt;.
* lET&apos;S THE STYLE.
  LOOP AT wt_sel_fields INTO ls_sel_fields WHERE keyflag = abap_true.
    ls_style-fieldname  = ls_sel_fields-fieldname.
    ls_style-style      = cl_gui_alv_grid=&gt;mc_style_disabled.
    INSERT ls_style INTO TABLE lt_style.
  ENDLOOP.
*
  wc_grid-&gt;check_changed_data(
*    IMPORTING
*      e_valid   =
*    CHANGING
*      c_refresh = &apos;X&apos;
         ).

  l_count = wo_msg-&gt;show( ) .
  IF l_count &gt; 0 .
    clear l_answer.
    CALL FUNCTION &apos;POPUP_TO_CONFIRM&apos;
      EXPORTING
*       TITLEBAR              = &apos; &apos;
*       DIAGNOSE_OBJECT       = &apos; &apos;
        text_question         = &apos;Try to save with errors?&apos;(018)
*       text_button_1         = &apos;Yes&apos;(019)
*       ICON_BUTTON_1         = &apos; &apos;
*       text_button_2         = &apos;No&apos;(020)
*       ICON_BUTTON_2         = &apos; &apos;
*       DEFAULT_BUTTON        = &apos;1&apos;
        display_cancel_button = &apos;X&apos;
*       USERDEFINED_F1_HELP   = &apos; &apos;
*       START_COLUMN          = 25
*       START_ROW             = 6
*       POPUP_TYPE            =
*       IV_QUICKINFO_BUTTON_1 = &apos; &apos;
*       IV_QUICKINFO_BUTTON_2 = &apos; &apos;
      IMPORTING
        answer                = l_answer
*     TABLES
*       PARAMETER             =
      EXCEPTIONS
        text_not_found        = 1
        OTHERS                = 2.
    IF sy-subrc &lt;&gt; 0.
* Implement suitable error handling here
    ENDIF.

  ENDIF.
  IF l_answer = &apos;1&apos;.
* First update
    LOOP AT &lt;fs&gt; ASSIGNING &lt;ls_fs&gt;.
      CLEAR &lt;ls_fs_t&gt;.
      MOVE-CORRESPONDING &lt;ls_fs&gt; TO &lt;ls_fs_t&gt;.
      ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;ls_fs&gt; TO &lt;l_fs_u&gt;.
      CASE &lt;l_fs_u&gt;.
        WHEN &apos;U&apos;.
          CLEAR l_string.
          LOOP AT wt_sel_fields INTO ls_sel_fields WHERE keyflag = abap_true.
            ASSIGN COMPONENT ls_sel_fields-fieldname OF STRUCTURE &lt;ls_fs_t&gt; TO &lt;l_fs&gt;.
            IF sy-subrc = 0.
              l_value = &lt;l_fs&gt;.
              IF strlen( l_string ) = 0.
                CONCATENATE ls_sel_fields-fieldname &apos;= &apos;&apos;&apos;       INTO l_string SEPARATED BY space.
              ELSE.
                CONCATENATE l_string &apos;AND&apos; ls_sel_fields-fieldname &apos;= &apos;&apos;&apos; INTO l_string SEPARATED BY space.
              ENDIF.
              CONCATENATE l_string l_value &apos;&apos;&apos;&apos; INTO l_string.
            ELSE.
* WE STOP AND DON&apos;T DO ANYTHING THIS IS A STRANGE ERROR.
              CLEAR l_string.
              EXIT.
            ENDIF.
          ENDLOOP.
          IF strlen( l_string ) &gt; 0.
            IF w_mandt = abap_true.
              DELETE FROM (w_table) CLIENT SPECIFIED WHERE (l_string).
            ELSE.
              DELETE FROM (w_table) WHERE (l_string).
            ENDIF.
            IF sy-subrc EQ 0 .
              IF w_mandt = abap_true.
                INSERT INTO (w_table) CLIENT SPECIFIED VALUES &lt;ls_fs_t&gt;.
              ELSE.
                INSERT INTO (w_table) VALUES &lt;ls_fs_t&gt;.
              ENDIF.
              IF sy-subrc EQ 0 .
                CLEAR &lt;l_fs_u&gt;.
              ENDIF.
            ENDIF.
          ENDIF.
        WHEN &apos;I&apos;.
          IF w_mandt = abap_true.
            INSERT INTO (w_table) CLIENT SPECIFIED VALUES &lt;ls_fs_t&gt;.
          ELSE.
            INSERT INTO (w_table) VALUES &lt;ls_fs_t&gt;.
          ENDIF.
          IF sy-subrc EQ 0 .
            CLEAR &lt;l_fs_u&gt;.
            ASSIGN COMPONENT &apos;___CELLSTYLE&apos; OF STRUCTURE &lt;ls_fs&gt; TO &lt;l_fs_u&gt;.
            &lt;l_fs_u&gt; = lt_style.
          ENDIF.
      ENDCASE.
    ENDLOOP.

* Now we do delete
    LOOP AT &lt;fs_d&gt; ASSIGNING &lt;ls_fs_d&gt;.
      CLEAR l_string.
      LOOP AT wt_sel_fields INTO ls_sel_fields WHERE keyflag = abap_true.
        ASSIGN COMPONENT ls_sel_fields-fieldname OF STRUCTURE &lt;ls_fs_d&gt; TO &lt;l_fs&gt;.
        IF sy-subrc = 0.
          l_value = &lt;l_fs&gt;.
          IF strlen( l_string ) = 0.
            CONCATENATE ls_sel_fields-fieldname       &apos;= &apos;&apos;&apos; INTO l_string SEPARATED BY space.
          ELSE.
            CONCATENATE l_string &apos;AND&apos; ls_sel_fields-fieldname &apos;= &apos;&apos;&apos; INTO l_string SEPARATED BY space.
          ENDIF.
          CONCATENATE l_string l_value &apos;&apos;&apos;&apos; INTO l_string.
        ELSE.
* WE STOP AND DON&apos;T DO ANYTHING THIS IS A STRANGE ERROR.
          CLEAR l_string.
          EXIT.
        ENDIF.
      ENDLOOP.
      IF strlen( l_string ) &gt; 0.
        IF w_mandt = abap_true.
          DELETE FROM (w_table) CLIENT SPECIFIED WHERE (l_string).
        ELSE.
          DELETE FROM (w_table) WHERE (l_string).
        ENDIF.
      ENDIF.
    ENDLOOP.
    REFRESH &lt;fs_d&gt;.

    wo_msg-&gt;reset( ) .
    REFRESH wt_msg1.
    display( i_flag = abap_true ) .
    wc_grid-&gt;refresh_table_display( ) .
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="SET_FOR_DISPLAY" VERSION="1" LANGU="E" DESCRIPT="Show grid" EXPOSURE="2" STATE="1" EDITORDER="8 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="SET_FOR_DISPLAY" SCONAME="I_MANDT" VERSION="1" LANGU="E" DESCRIPT="Cross-Client Customizing" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CCCLIINDEP"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="SET_FOR_DISPLAY" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABNAME"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="SET_FOR_DISPLAY" SCONAME="IT_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="TABLE"/>
   <source>METHOD set_for_display.
  DATA: ls_fcat TYPE lvc_s_fcat,
        lt_fcat TYPE lvc_t_fcat.
  DATA: ls_layout  TYPE lvc_s_layo,
        ls_variant TYPE disvariant, &quot;for parameter IS_VARIANT
        l_toolbar  TYPE c.
  DATA: l_repid    TYPE sy-repid,
        lt_toolbar TYPE ui_functions.
  DATA: l_lines        TYPE i.
  DATA: ls_ddfields   TYPE dfies,
        ls_sel_fields TYPE zsy6_s_sel_fields,
        ls_style      TYPE lvc_s_styl,
        lt_style      TYPE lvc_t_styl,
        ls_config     TYPE zsyh_s_config,
        l_ucomm       TYPE syucomm VALUE &apos;___LINES___&apos;,
        lt_ucomm      TYPE ui_functions.

  DATA: lo_addit           TYPE REF TO cl_abap_elemdescr,
        lo_addit_table     TYPE REF TO cl_abap_tabledescr,
        lo_addit_struc     TYPE REF TO cl_abap_structdescr,
        lt_components_tab1 TYPE cl_abap_structdescr=&gt;component_table,
        lt_components_tab  TYPE cl_abap_structdescr=&gt;component_table,
        ls_components      TYPE abap_componentdescr.
  DATA: lo_data                 TYPE REF TO data.

  FIELD-SYMBOLS: &lt;fs&gt;      TYPE STANDARD TABLE,
                 &lt;l_fs&gt;    TYPE any,
                 &lt;ls_fs&gt;   TYPE any,
                 &lt;ls_fs_g&gt; TYPE any.

  set_table( EXPORTING i_table = i_table
                       i_mandt = i_mandt ).
* We start new.
  wo_msg-&gt;reset( ) .
  REFRESH: wt_msg1,
           wt_fields.
  CLEAR w_sync.

  CLEAR ls_layout.
  ls_layout-cwidth_opt = abap_true.
  ls_layout-zebra      = abap_true.
  ls_layout-info_fname = &apos;___ROWCOLOR&apos; .
  ls_layout-box_fname  = &apos;___ROWMARK&apos;  .
  ls_layout-ctab_fname = &apos;___CELLCOLOR&apos; .
  ls_layout-stylefname = &apos;___CELLSTYLE&apos; .
  ls_layout-sel_mode   = &apos;D&apos;.
*  ls_layout-edit       = abap_true.

  CONCATENATE c_progname_ w_table INTO l_repid.
  ls_variant-report = l_repid.

  toolbar_buttons( CHANGING xt_toolbar =  lt_toolbar ).

  REFRESH: wt_fcat.

* Lets get the definitions per default
  CALL FUNCTION &apos;LVC_FIELDCATALOG_MERGE&apos;
    EXPORTING
*     i_buffer_active        =
      i_structure_name       = w_table
      i_client_never_display = abap_false
      i_bypassing_buffer     = abap_true
    CHANGING
      ct_fieldcat            = lt_fcat[]
* EXCEPTIONS
*     INCONSISTENT_INTERFACE = 1
*     PROGRAM_ERROR          = 2
*     OTHERS                 = 3
    .
  IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  LOOP AT lt_fcat INTO ls_fcat.
    IF ls_fcat-datatype   = &apos;CLNT&apos; AND i_mandt = abap_false.
      ls_fcat-tech = abap_true.
    ELSE.
      ls_fcat-edit = abap_true.
    ENDIF.
    IF ws_rseumod-tbmode IS INITIAL.
      ls_fcat-coltext = ls_fcat-fieldname.
    ENDIF.
    MODIFY lt_fcat FROM ls_fcat .
  ENDLOOP.

  DESCRIBE TABLE wt_fcat_style LINES l_lines.

  wt_fcat = wt_fcat_style.

  LOOP AT lt_fcat INTO ls_fcat.
    ls_fcat-col_pos = ls_fcat-col_pos + l_lines.
    INSERT ls_fcat INTO TABLE wt_fcat.
  ENDLOOP.

  &quot; First get the style fields
  LOOP AT wt_ddstyle INTO ls_ddfields.
    &quot;then get comp of addit tables/struct for grid
    ls_components-name   = ls_ddfields-fieldname.
    CASE ls_ddfields-comptype.
      WHEN &apos;L&apos;.
        lo_addit_table      ?= cl_abap_typedescr=&gt;describe_by_name( ls_ddfields-rollname ).
        ls_components-type   = lo_addit_table .
        INSERT ls_components INTO TABLE lt_components_tab.
      WHEN &apos;E&apos;.
        lo_addit            ?= cl_abap_typedescr=&gt;describe_by_name( ls_ddfields-rollname ).
        ls_components-type   = lo_addit           .
        INSERT ls_components INTO TABLE lt_components_tab.
    ENDCASE.
  ENDLOOP.
  &quot;second get all components of user table
  wo_struc            ?= cl_abap_typedescr=&gt;describe_by_name( w_table ).
  lt_components_tab1    = wo_struc-&gt;get_components( ).
  APPEND LINES OF lt_components_tab1 TO lt_components_tab.

  &quot;create new line type
  TRY.
      wo_struc = cl_abap_structdescr=&gt;create( p_components = lt_components_tab
                                              p_strict     = abap_false ).
    CATCH cx_sy_struct_creation.
      RETURN.
  ENDTRY.
  wo_table = cl_abap_tabledescr=&gt;create( wo_struc ).

  CREATE DATA wt_data   TYPE HANDLE wo_table.
  CREATE DATA wt_data_d TYPE HANDLE wo_table.
  GET REFERENCE OF it_table[] INTO wo_tabledata.

  ASSIGN wt_data-&gt;* TO &lt;fs&gt;.

  CREATE DATA lo_data   LIKE LINE OF &lt;fs&gt;.
  ASSIGN lo_data-&gt;* TO &lt;ls_fs_g&gt;.

  LOOP AT wt_key_fields INTO ls_sel_fields.
    ls_style-fieldname  = ls_sel_fields-fieldname.
    ls_style-style      = cl_gui_alv_grid=&gt;mc_style_disabled.
    INSERT ls_style INTO TABLE lt_style.
  ENDLOOP.
  CLEAR w_lines.
  LOOP AT it_table ASSIGNING &lt;ls_fs&gt;.
    w_lines = w_lines + 1.
    MOVE-CORRESPONDING &lt;ls_fs&gt; TO &lt;ls_fs_g&gt;.
    ASSIGN COMPONENT &apos;___CELLSTYLE&apos; OF STRUCTURE &lt;ls_fs_g&gt; TO &lt;l_fs&gt;.
    IF sy-subrc = 0.
      &lt;l_fs&gt; = lt_style.
    ENDIF.
    ASSIGN COMPONENT &apos;___LINENR&apos; OF STRUCTURE &lt;ls_fs_g&gt; TO &lt;l_fs&gt;.
    IF sy-subrc = 0.
      &lt;l_fs&gt; = w_lines.
    ENDIF.
    ASSIGN COMPONENT &apos;___SYSID&apos; OF STRUCTURE &lt;ls_fs_g&gt; TO &lt;l_fs&gt;.
    IF sy-subrc = 0.
      IF &lt;l_fs&gt; IS INITIAL.
        &lt;l_fs&gt; = sy-sysid.
      ENDIF.
    ENDIF.
    ASSIGN COMPONENT &apos;___ORIGIN&apos; OF STRUCTURE &lt;ls_fs_g&gt; TO &lt;l_fs&gt;.
    IF sy-subrc = 0.
      IF &lt;l_fs&gt; IS INITIAL.
        &lt;l_fs&gt; = c_origin_local.
      ENDIF.
    ENDIF.
    INSERT &lt;ls_fs_g&gt; INTO TABLE &lt;fs&gt;.
  ENDLOOP.
* Lets run set display for first time
  wc_grid-&gt;set_table_for_first_display(
   EXPORTING
*    i_buffer_active               =
     i_bypassing_buffer            = abap_true
*    i_consistency_check           =
*     i_structure_name              = w_table
     is_variant                    = ls_variant
*    i_save                        =
*    i_default                     = &apos;X&apos;
     is_layout                     = ls_layout
*    is_print                      =
*    it_special_groups             =
   it_toolbar_excluding          = lt_toolbar
*    it_hyperlink                  =
*    it_alv_graphics               =
*    it_except_qinfo               =
*    ir_salv_adapter               =
    CHANGING
      it_outtab                     = &lt;fs&gt;
      it_fieldcatalog               = wt_fcat
*    it_sort                       =
*    it_filter                     =
*  EXCEPTIONS
*    invalid_parameter_combination = 1
*    program_error                 = 2
*    too_many_lines                = 3
         ).
  IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  IF class_exists( i_clsname = c_hotspot ) = abap_true.
    INSERT l_ucomm INTO TABLE  ls_config-exclude_ucomm.
* Let&apos;s  try hotspots
    CALL METHOD (c_hotspot)=&gt;factory
      EXPORTING
        it_data   = &lt;fs&gt;
        is_config = ls_config
        ic_grid   = wc_grid.
  ENDIF.

* AT THE END WE SET INPUT NO FOR START
  display( ) .

*  INSERT c_ui_func_update INTO TABLE lt_ucomm.
*  INSERT c_ui_func_msg INTO TABLE lt_ucomm.
*  INSERT c_ui_func_adjust INTO TABLE lt_ucomm.
*  wc_grid-&gt;process_ucomm_on_invalid_input( EXPORTING it_ucomms = lt_ucomm ).
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="SHOW_SELECTION" VERSION="1" LANGU="E" DESCRIPT="Show F4 for data summary selection" EXPOSURE="0" STATE="1" EDITORDER="18 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="SHOW_SELECTION" SCONAME="I_TABLENAME" VERSION="1" LANGU="E" DESCRIPT="Table Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="TABNAME"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="SHOW_SELECTION" SCONAME="I_FIELDNAME" VERSION="1" LANGU="E" DESCRIPT="Field Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="FIELDNAME"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="SHOW_SELECTION" SCONAME="I_TITLE" VERSION="1" LANGU="E" DESCRIPT="Dialog title" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="C"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="SHOW_SELECTION" SCONAME="IT_TABLE" VERSION="1" LANGU="E" DESCRIPT="Value table" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="SHOW_SELECTION" SCONAME="R_INDEX" VERSION="1" LANGU="E" DESCRIPT="Data selection" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="SYTABIX"/>
   <source>METHOD SHOW_SELECTION.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="TOOLBAR_BUTTONS" VERSION="1" LANGU="E" DESCRIPT="Activate tool bar buttons" EXPOSURE="0" STATE="1" EDITORDER="17 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="TOOLBAR_BUTTONS" SCONAME="XT_TOOLBAR" VERSION="1" LANGU="E" DESCRIPT="Function Code Table" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="1" TYPE="UI_FUNCTIONS"/>
   <source>METHOD TOOLBAR_BUTTONS.
  DATA: ls_toolbar TYPE ui_func.

  REFRESH xt_toolbar.
* Drilldown Totals Level
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_auf .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
* Calculate Average
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_average .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
* Check Entries
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_check .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
* ABC Analysis
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_abc .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	Call Sequence
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_chain .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	Seagate Info Batch Processing
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_crbatch .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	Seagate Info Web Processing
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_crweb .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	Line Items
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_lineitems .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	Master Data
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_master_data .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	More Calls
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_more .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	Call Report
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_report .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	Additional Functions of SAPQuery
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_xint .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*	XXL - Excel
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_call_xxl .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
* Current Variant
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_current_variant .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
* Save Data
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_data_save .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_delete_filter .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_filter .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_find .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_graph .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_html .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_info .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_load_variant .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_copy .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .

  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_append_row .
  INSERT ls_toolbar INTO TABLE xt_toolbar .

  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_copy_row .
  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_cut .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_delete_row .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_insert_row .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_move_row .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_paste .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_paste_new_row .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_loc_undo .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_maintain_variant .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_maximum .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_minimum .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_pc_file .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_url_copy_to_clipboard .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_print .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_print_back .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_print_prev .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_refresh .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_save_variant .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_select_all .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_send .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_separator .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_sort .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_sort_asc .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_sort_dsc .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_subtot .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_sum .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_to_office .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_to_rep_tree .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_views .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_view_crystal .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_view_excel .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_view_grid .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .
*
*  ls_toolbar = cl_gui_alv_grid=&gt;mc_fc_word_processor .
*  INSERT ls_toolbar INTO TABLE xt_toolbar .

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_CELLS" VERSION="1" LANGU="E" DESCRIPT="Update cell selection with value" EXPOSURE="0" STATE="1" EDITORDER="19 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_CELLS" SCONAME="IO_FIELD" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_CELLS" SCONAME="IT_FIDX" VERSION="1" LANGU="E" DESCRIPT="ALV control: Filter index" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="LVC_T_FIDX"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_CELLS" SCONAME="X_FOUND" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_BOOL"/>
   <source>METHOD update_cells.
  DATA: ls_cell   TYPE lvc_s_cell,
        lt_cell   TYPE lvc_t_cell,
        l_index   TYPE sytabix,
        l_lines   TYPE int4.

  FIELD-SYMBOLS: &lt;fs&gt;    TYPE ANY,
                 &lt;fs1&gt;   TYPE ANY,
                 &lt;fs_lt&gt; TYPE STANDARD TABLE,
                 &lt;fs_ls&gt; TYPE ANY.

  wc_grid-&gt;get_selected_cells(
    IMPORTING
       et_cell = lt_cell
         ).

  ASSIGN io_field-&gt;* TO &lt;fs1&gt;.

  ASSIGN wt_data-&gt;* TO &lt;fs_lt&gt;.
  LOOP AT lt_cell INTO ls_cell.
    l_index = ls_cell-row_id-index.
    READ TABLE it_fidx TRANSPORTING NO FIELDS FROM l_index.
    IF sy-subrc = 0.
      CONTINUE.
    ENDIF.
    READ TABLE &lt;fs_lt&gt; ASSIGNING &lt;fs_ls&gt; INDEX l_index.
    IF sy-subrc = 0.
      ASSIGN COMPONENT &apos;___ORIGIN&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
      IF sy-subrc = 0.
        IF &lt;fs&gt; = &apos;L&apos;.
          ASSIGN COMPONENT ls_cell-col_id-fieldname OF STRUCTURE &lt;fs_ls&gt;  TO &lt;fs&gt;.
          IF &lt;fs&gt; IS ASSIGNED AND &lt;fs1&gt; IS ASSIGNED.
            &lt;fs&gt; = &lt;fs1&gt;.
            x_found = abap_true.
          ENDIF.
          ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            IF &lt;fs&gt; IS INITIAL.
              &lt;fs&gt; = &apos;U&apos;.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDLOOP.

ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_COLUMNS" VERSION="1" LANGU="E" DESCRIPT="Update column selection with value" EXPOSURE="0" STATE="1" EDITORDER="20 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_COLUMNS" SCONAME="IO_FIELD" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="DATA"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_COLUMNS" SCONAME="IT_FIDX" VERSION="1" LANGU="E" DESCRIPT="ALV control: Filter index" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="LVC_T_FIDX"/>
   <parameter CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_COLUMNS" SCONAME="X_FOUND" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_BOOL"/>
   <source>METHOD update_columns.
  DATA: ls_col    TYPE lvc_s_col,
        lt_col    TYPE lvc_t_col,
        l_index   TYPE sytabix,
        l_lines   TYPE int4.

  FIELD-SYMBOLS: &lt;fs&gt;    TYPE ANY,
                 &lt;fs1&gt;   TYPE ANY,
                 &lt;fs_lt&gt; TYPE STANDARD TABLE,
                 &lt;fs_ls&gt; TYPE ANY.

  wc_grid-&gt;get_selected_columns(
    IMPORTING
      et_index_columns = lt_col
         ).

  ASSIGN io_field-&gt;* TO &lt;fs1&gt;.

  ASSIGN wt_data-&gt;* TO &lt;fs_lt&gt;.
  DESCRIBE TABLE lt_col LINES l_lines.

  IF l_lines &gt; 0.
    LOOP AT &lt;fs_lt&gt; ASSIGNING &lt;fs_ls&gt;.
      l_index = sy-tabix.
      ASSIGN COMPONENT &apos;___ORIGIN&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
      IF sy-subrc = 0.
        IF &lt;fs&gt; = &apos;L&apos;.
          READ TABLE it_fidx TRANSPORTING NO FIELDS FROM l_index.
          IF sy-subrc = 0.
            CONTINUE.
          ENDIF.
          LOOP AT lt_col INTO ls_col.
            ASSIGN COMPONENT ls_col-fieldname OF STRUCTURE &lt;fs_ls&gt;  TO &lt;fs&gt;.
            IF &lt;fs&gt; IS ASSIGNED AND &lt;fs1&gt; IS ASSIGNED.
              &lt;fs&gt; = &lt;fs1&gt;.
              x_found = abap_true.
            ENDIF.
          ENDLOOP.
          ASSIGN COMPONENT &apos;___UPDATEFLAG&apos; OF STRUCTURE &lt;fs_ls&gt; TO &lt;fs&gt;.
          IF sy-subrc = 0.
            IF &lt;fs&gt; IS INITIAL.
              &lt;fs&gt; = &apos;U&apos;.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDMETHOD.</source>
  </method>
  <method CLSNAME="Z_C_SY6_GRID" CMPNAME="UPDATE_WITH" VERSION="1" LANGU="E" DESCRIPT="Update selections with selected value." EXPOSURE="2" STATE="1" EDITORDER="12 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
   <source>METHOD update_with.
  DATA: l_found TYPE abap_bool.
  DATA: ls_col    TYPE lvc_s_col,
        ls_dfies  TYPE dfies,
        lt_fidx   TYPE lvc_t_fidx,
        lo_field  TYPE REF TO data,
        l_name001 TYPE char70.

  wc_grid-&gt;get_current_cell(
    IMPORTING
       es_col_id = ls_col
         ).

  CONCATENATE w_table &apos;-&apos; ls_col-fieldname INTO l_name001.
  CREATE DATA lo_field TYPE (l_name001).

  READ TABLE wt_ddfields INTO ls_dfies WITH KEY fieldname = ls_col-fieldname.

  CALL FUNCTION &apos;ZSY60_UPDATE_WITH&apos;
    EXPORTING
      i_tabname   = w_table
      i_fieldname = ls_col-fieldname
      i_text      = ls_dfies-fieldtext
    CHANGING
      xo_data     = lo_field
    EXCEPTIONS
      no_update   = 1
      OTHERS      = 2.

  IF sy-subrc = 0.
    wc_grid-&gt;get_filtered_entries( IMPORTING et_filtered_entries = lt_fidx ) .
    update_columns( EXPORTING io_field = lo_field
                              it_fidx  = lt_fidx
                    CHANGING  x_found  = l_found ) .
    update_cells( EXPORTING io_field = lo_field
                            it_fidx  = lt_fidx
                  CHANGING  x_found  = l_found ) .
  ENDIF.

  IF l_found = abap_true.
    wc_grid-&gt;refresh_table_display( ) .
  ELSE.
    MESSAGE i001.
  ENDIF.

ENDMETHOD.</source>
  </method>
 </CLAS>
 <CLAS CLSNAME="ZCX_SY6_MAIN" VERSION="1" LANGU="E" CATEGORY="40" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="CX_STATIC_CHECK">
  <localImplementation>*&quot;* local class implementation for public class
*&quot;* use this source file for the implementation part of
*&quot;* local helper classes</localImplementation>
  <localTypes>*&quot;* use this source file for any type declarations (class
*&quot;* definitions, interfaces or data types) you need for method
*&quot;* implementation or private method&apos;s signature</localTypes>
  <localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="ERROR_CNTL_CREATE" VERSION="1" LANGU="1" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
   <sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
    <sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="Error Creating Control"/>
   </sotr>
  </attribute>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="ERROR_CNTL_INIT" VERSION="1" LANGU="1" EXPOSURE="2" STATE="1" EDITORDER="2 " ATTDECLTYP="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
   <sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
    <sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="Error While Initializing Control"/>
   </sotr>
  </attribute>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="ERROR_CNTL_LINK" VERSION="1" LANGU="1" EXPOSURE="2" STATE="1" EDITORDER="3 " ATTDECLTYP="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
   <sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
    <sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="Error While Linking Control"/>
   </sotr>
  </attribute>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="ERROR_DP_CREATE" VERSION="1" LANGU="1" EXPOSURE="2" STATE="1" EDITORDER="4 " ATTDECLTYP="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
   <sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
    <sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="Error While Creating DataProvider Control"/>
   </sotr>
  </attribute>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="ERROR_GRID_IN_BACKGROUND" VERSION="1" LANGU="1" EXPOSURE="2" STATE="1" EDITORDER="5 " ATTDECLTYP="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
   <sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
    <sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="Error grid creation in background"/>
   </sotr>
  </attribute>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="ERROR_INVALID_TCODE" VERSION="1" LANGU="1" EXPOSURE="2" STATE="1" EDITORDER="7 " ATTDECLTYP="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
   <sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
    <sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="Error invalid &apos;&amp;TOKEN&amp;&apos; transaction code provided"/>
   </sotr>
  </attribute>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="ERROR_NO_TCODE" VERSION="1" LANGU="1" EXPOSURE="2" STATE="1" EDITORDER="6 " ATTDECLTYP="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
   <sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
    <sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="Error no transaction code provided"/>
   </sotr>
  </attribute>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="ERROR_VKORG_MISSING" VERSION="1" LANGU="1" EXPOSURE="2" STATE="1" EDITORDER="9 " ATTDECLTYP="2" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SOTR_CONC" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " LOCKED="X" TYPESRC_LENG="0 ">
   <sotr PAKET="$TMP" CREA_LAN="E" TRALA_TYPE="1" LST_IMPORT="00000000" TRALA_VEC="00000000000000000000" CATGY_VEC="00000000000000000000" OBJID_VEC="08000000000000000000">
    <sotrText LANGU="E" LFD_NUM="0001" FLAG_CNTXT="X" STATUS="R" VERSION="0002" LENGTH="255" TEXT="Error sales organisation has not been provided"/>
   </sotr>
  </attribute>
  <attribute CLSNAME="ZCX_SY6_MAIN" CMPNAME="TOKEN" VERSION="1" LANGU="1" DESCRIPT="Wrong word" EXPOSURE="2" STATE="1" EDITORDER="8 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
  <inheritance CLSNAME="ZCX_SY6_MAIN" REFCLSNAME="CX_STATIC_CHECK" VERSION="1" STATE="1"/>
 </CLAS>
 <DEVC DEVCLASS="ZSY6" CTEXT="Table maintenance transaction" LANGUAGE="E" MASTERLANG="E" KORRFLAG="X" PDEVCLASS="ZIZ4" DLVUNIT="HOME" NAMESPACE="/0CUST/" CREATED_BY="RTURNHEIM" CREATED_ON="20111112" CHANGED_BY="RTURNHEIM" CHANGED_ON="20160606" PROJECT_GUID="00000000000000000000000000000000"/>
 <DOMA DOMNAME="ZZCODE" MultiLanguageSupport="X">
  <DDLANGUAGE LANGU="1">
   <DD01V DOMNAME="ZZCODE" DDLANGUAGE="1" DATATYPE="INT1" LENG="000003" OUTPUTLEN="000003" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Transaction code 1 Create; 2 Change; 3 Display" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0001" DDLANGUAGE="1" DOMVALUE_L="1" DDTEXT="Create"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0002" DDLANGUAGE="1" DOMVALUE_L="2" DDTEXT="Change"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0003" DDLANGUAGE="1" DOMVALUE_L="3" DDTEXT="Display"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="3">
   <DD01V DOMNAME="ZZCODE" DDLANGUAGE="3" DATATYPE="INT1" LENG="000003" OUTPUTLEN="000003" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Transaction code 1 Create; 2 Change; 3 Display" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0001" DDLANGUAGE="3" DOMVALUE_L="1" DDTEXT="Create"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0002" DDLANGUAGE="3" DOMVALUE_L="2" DDTEXT="Change"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0003" DDLANGUAGE="3" DOMVALUE_L="3" DDTEXT="Display"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="E">
   <DD01V DOMNAME="ZZCODE" DDLANGUAGE="E" DATATYPE="INT1" LENG="000003" OUTPUTLEN="000003" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Transaction code 1 Create; 2 Change; 3 Display" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0001" DDLANGUAGE="E" DOMVALUE_L="1" DDTEXT="Create"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0002" DDLANGUAGE="E" DOMVALUE_L="2" DDTEXT="Change"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0003" DDLANGUAGE="E" DOMVALUE_L="3" DDTEXT="Display"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="H">
   <DD01V DOMNAME="ZZCODE" DDLANGUAGE="H" DATATYPE="INT1" LENG="000003" OUTPUTLEN="000003" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Transaction code 1 Create; 2 Change; 3 Display" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0001" DDLANGUAGE="H" DOMVALUE_L="1" DDTEXT="Create"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0002" DDLANGUAGE="H" DOMVALUE_L="2" DDTEXT="Change"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0003" DDLANGUAGE="H" DOMVALUE_L="3" DDTEXT="Display"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="R">
   <DD01V DOMNAME="ZZCODE" DDLANGUAGE="R" DATATYPE="INT1" LENG="000003" OUTPUTLEN="000003" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Transaction code 1 Create; 2 Change; 3 Display" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0001" DDLANGUAGE="R" DOMVALUE_L="1" DDTEXT="Create"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0002" DDLANGUAGE="R" DOMVALUE_L="2" DDTEXT="Change"/>
   <DD07V DOMNAME="ZZCODE" VALPOS="0003" DDLANGUAGE="R" DOMVALUE_L="3" DDTEXT="Display"/>
  </DDLANGUAGE>
 </DOMA>
 <DOMA DOMNAME="ZZEVENT" MultiLanguageSupport="X">
  <DDLANGUAGE LANGU="1">
   <DD01V DOMNAME="ZZEVENT" DDLANGUAGE="1" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Hotspot event logic" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0001" DDLANGUAGE="1" DDTEXT="No default event handling"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0002" DDLANGUAGE="1" DOMVALUE_L="A" DDTEXT="ALV grid event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0003" DDLANGUAGE="1" DOMVALUE_L="S" DDTEXT="SALV event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0004" DDLANGUAGE="1" DOMVALUE_L="T" DDTEXT="SALV tree event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0005" DDLANGUAGE="1" DOMVALUE_L="H" DDTEXT="SALV hierachy table event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0006" DOMVALUE_L="B"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="3">
   <DD01V DOMNAME="ZZEVENT" DDLANGUAGE="3" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Hotspot event logic" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0001" DDLANGUAGE="3" DDTEXT="No default event handling"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0002" DDLANGUAGE="3" DOMVALUE_L="A" DDTEXT="ALV grid event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0003" DDLANGUAGE="3" DOMVALUE_L="S" DDTEXT="SALV event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0004" DDLANGUAGE="3" DOMVALUE_L="T" DDTEXT="SALV tree event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0005" DDLANGUAGE="3" DOMVALUE_L="H" DDTEXT="SALV hierachy table event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0006" DOMVALUE_L="B"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="E">
   <DD01V DOMNAME="ZZEVENT" DDLANGUAGE="E" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Hotspot event logic" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0001" DDLANGUAGE="E" DDTEXT="No default event handling"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0002" DDLANGUAGE="E" DOMVALUE_L="A" DDTEXT="ALV grid event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0003" DDLANGUAGE="E" DOMVALUE_L="S" DDTEXT="SALV event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0004" DDLANGUAGE="E" DOMVALUE_L="T" DDTEXT="SALV tree event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0005" DDLANGUAGE="E" DOMVALUE_L="H" DDTEXT="SALV hierachy table event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0006" DDLANGUAGE="E" DOMVALUE_L="B" DDTEXT="ALV tree event handling for hotspot"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="H">
   <DD01V DOMNAME="ZZEVENT" DDLANGUAGE="H" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Hotspot event logic" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0001" DDLANGUAGE="H" DDTEXT="No default event handling"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0002" DDLANGUAGE="H" DOMVALUE_L="A" DDTEXT="ALV grid event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0003" DDLANGUAGE="H" DOMVALUE_L="S" DDTEXT="SALV event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0004" DDLANGUAGE="H" DOMVALUE_L="T" DDTEXT="SALV tree event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0005" DDLANGUAGE="H" DOMVALUE_L="H" DDTEXT="SALV hierachy table event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0006" DDLANGUAGE="H" DOMVALUE_L="B" DDTEXT="ALV tree event handling for hotspot"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="R">
   <DD01V DOMNAME="ZZEVENT" DDLANGUAGE="R" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Hotspot event logic" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0001" DDLANGUAGE="R" DDTEXT="No default event handling"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0002" DDLANGUAGE="R" DOMVALUE_L="A" DDTEXT="ALV grid event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0003" DDLANGUAGE="R" DOMVALUE_L="S" DDTEXT="SALV event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0004" DDLANGUAGE="R" DOMVALUE_L="T" DDTEXT="SALV tree event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0005" DDLANGUAGE="R" DOMVALUE_L="H" DDTEXT="SALV hierachy table event handling for hotspot"/>
   <DD07V DOMNAME="ZZEVENT" VALPOS="0006" DOMVALUE_L="B"/>
  </DDLANGUAGE>
 </DOMA>
 <DOMA DOMNAME="ZSY6CODES" MultiLanguageSupport="X">
  <DDLANGUAGE LANGU="3">
   <DD01V DOMNAME="ZSY6CODES" DDLANGUAGE="3" DATATYPE="CHAR" LENG="000002" OUTPUTLEN="000002" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Comparision code" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0001" DDLANGUAGE="3" DOMVALUE_L="DL" DDTEXT="Differences, local client entry"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0002" DDLANGUAGE="3" DOMVALUE_L="DR" DDTEXT="Differences, remote client entry"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0003" DDLANGUAGE="3" DOMVALUE_L="L" DDTEXT="Entry only exists in local client"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0004" DDLANGUAGE="3" DOMVALUE_L="R" DDTEXT="Entry only exists in remote client"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0005" DDLANGUAGE="3" DDTEXT="Identical entries"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="E">
   <DD01V DOMNAME="ZSY6CODES" DDLANGUAGE="E" DATATYPE="CHAR" LENG="000002" OUTPUTLEN="000002" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Comparision code" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0001" DDLANGUAGE="E" DOMVALUE_L="DL" DDTEXT="Differences, local client entry"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0002" DDLANGUAGE="E" DOMVALUE_L="DR" DDTEXT="Differences, remote client entry"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0003" DDLANGUAGE="E" DOMVALUE_L="L" DDTEXT="Entry only exists in local client"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0004" DDLANGUAGE="E" DOMVALUE_L="R" DDTEXT="Entry only exists in remote client"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0005" DDLANGUAGE="E" DDTEXT="Identical entries"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="H">
   <DD01V DOMNAME="ZSY6CODES" DDLANGUAGE="H" DATATYPE="CHAR" LENG="000002" OUTPUTLEN="000002" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Comparision code" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0001" DDLANGUAGE="H" DOMVALUE_L="DL" DDTEXT="Differences, local client entry"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0002" DDLANGUAGE="H" DOMVALUE_L="DR" DDTEXT="Differences, remote client entry"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0003" DDLANGUAGE="H" DOMVALUE_L="L" DDTEXT="Entry only exists in local client"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0004" DDLANGUAGE="H" DOMVALUE_L="R" DDTEXT="Entry only exists in remote client"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0005" DDLANGUAGE="H" DDTEXT="Identical entries"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="R">
   <DD01V DOMNAME="ZSY6CODES" DDLANGUAGE="R" DATATYPE="CHAR" LENG="000002" OUTPUTLEN="000002" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Comparision code" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0001" DDLANGUAGE="R" DOMVALUE_L="DL" DDTEXT="Differences, local client entry"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0002" DDLANGUAGE="R" DOMVALUE_L="DR" DDTEXT="Differences, remote client entry"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0003" DDLANGUAGE="R" DOMVALUE_L="L" DDTEXT="Entry only exists in local client"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0004" DDLANGUAGE="R" DOMVALUE_L="R" DDTEXT="Entry only exists in remote client"/>
   <DD07V DOMNAME="ZSY6CODES" VALPOS="0005" DDLANGUAGE="R" DDTEXT="Identical entries"/>
  </DDLANGUAGE>
 </DOMA>
 <DOMA DOMNAME="ZSY6ORIGIN" MultiLanguageSupport="X">
  <DDLANGUAGE LANGU="1">
   <DD01V DOMNAME="ZSY6ORIGIN" DDLANGUAGE="1" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Issue origin" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0001" DOMVALUE_L="L"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0002" DOMVALUE_L="R"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="3">
   <DD01V DOMNAME="ZSY6ORIGIN" DDLANGUAGE="3" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Data origin" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0001" DDLANGUAGE="3" DOMVALUE_L="L" DDTEXT="Local"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0002" DDLANGUAGE="3" DOMVALUE_L="R" DDTEXT="Remote"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="E">
   <DD01V DOMNAME="ZSY6ORIGIN" DDLANGUAGE="E" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Data origin" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0001" DDLANGUAGE="E" DOMVALUE_L="L" DDTEXT="Local"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0002" DDLANGUAGE="E" DOMVALUE_L="R" DDTEXT="Remote"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="H">
   <DD01V DOMNAME="ZSY6ORIGIN" DDLANGUAGE="H" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Data origin" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0001" DDLANGUAGE="H" DOMVALUE_L="L" DDTEXT="Local"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0002" DDLANGUAGE="H" DOMVALUE_L="R" DDTEXT="Remote"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="R">
   <DD01V DOMNAME="ZSY6ORIGIN" DDLANGUAGE="R" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASKLEN="0000" DDTEXT="Data origin" AUTHCLASS="00" OUTPUTSTYLE="00"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0001" DDLANGUAGE="R" DOMVALUE_L="L" DDTEXT="Local"/>
   <DD07V DOMNAME="ZSY6ORIGIN" VALPOS="0002" DDLANGUAGE="R" DOMVALUE_L="R" DDTEXT="Remote"/>
  </DDLANGUAGE>
 </DOMA>
 <DTEL ROLLNAME="ZZTOOLBAR" DDLANGUAGE="E" DOMNAME="FLAG" ROUTPUTLEN="000000" HEADLEN="07" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DDTEXT="Object toolbar is inactive?" REPTEXT="Toolbar" SCRTEXT_S="Toolbar" SCRTEXT_M="Toolbar inact." SCRTEXT_L="Toolbar incative" AUTHCLASS="00" DTELMASTER="E" DATATYPE="CHAR" LENG="000001" DECIMALS="000000" OUTPUTLEN="000001" VALEXI="X" REFKIND="D" MultiLanguageSupport="X">
  <tpara/>
  <DDLANGUAGE LANGU="E">
   <DD04V ROLLNAME="ZZTOOLBAR" DDLANGUAGE="E" DOMNAME="FLAG" ROUTPUTLEN="000000" HEADLEN="07" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DDTEXT="Object toolbar is inactive?" REPTEXT="Toolbar" SCRTEXT_S="Toolbar" SCRTEXT_M="Toolbar inact." SCRTEXT_L="Toolbar incative" AUTHCLASS="00" DTELMASTER="E" DATATYPE="CHAR" LENG="000001" DECIMALS="000000" OUTPUTLEN="000001" VALEXI="X" REFKIND="D"/>
  </DDLANGUAGE>
 </DTEL>
 <DTEL ROLLNAME="ZZEVENT" DDLANGUAGE="E" DOMNAME="ZZEVENT" ROUTPUTLEN="000000" HEADLEN="19" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DDTEXT="Hotspot event logic" REPTEXT="Hotspot event logic" SCRTEXT_S="Hots. evt." SCRTEXT_M="Hotspot event" SCRTEXT_L="Hotspot event logic" AUTHCLASS="00" DTELMASTER="E" DATATYPE="CHAR" LENG="000001" DECIMALS="000000" OUTPUTLEN="000001" VALEXI="X" REFKIND="D" MultiLanguageSupport="X">
  <tpara/>
  <DDLANGUAGE LANGU="E">
   <DD04V ROLLNAME="ZZEVENT" DDLANGUAGE="E" DOMNAME="ZZEVENT" ROUTPUTLEN="000000" HEADLEN="19" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DDTEXT="Hotspot event logic" REPTEXT="Hotspot event logic" SCRTEXT_S="Hots. evt." SCRTEXT_M="Hotspot event" SCRTEXT_L="Hotspot event logic" AUTHCLASS="00" DTELMASTER="E" DATATYPE="CHAR" LENG="000001" DECIMALS="000000" OUTPUTLEN="000001" VALEXI="X" REFKIND="D"/>
  </DDLANGUAGE>
  <DDLANGUAGE LANGU="S">
   <DD04V ROLLNAME="ZZEVENT" DDLANGUAGE="S" DOMNAME="ZZEVENT" ROUTPUTLEN="000000" HEADLEN="19" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DDTEXT="Hotspot event logic" REPTEXT="Hotspot event logic" SCRTEXT_S="Hots. evt." SCRTEXT_M="Hotspot event" SCRTEXT_L="Hotspot event logic" AUTHCLASS="00" DTELMASTER="E" DATATYPE="CHAR" LENG="000001" DECIMALS="000000" OUTPUTLEN="000001" VALEXI="X" REFKIND="D"/>
  </DDLANGUAGE>
 </DTEL>
 <DTEL ROLLNAME="ZZCODE" DDLANGUAGE="E" DOMNAME="ZZCODE" ROUTPUTLEN="000000" HEADLEN="16" SCRLEN1="10" SCRLEN2="16" SCRLEN3="20" DDTEXT="Transaction code 1 Create; 2 Change; 3 Display" REPTEXT="Transaction code" SCRTEXT_S="t. code" SCRTEXT_M="Transaction code" SCRTEXT_L="Transaction code" AUTHCLASS="00" DTELMASTER="E" DATATYPE="INT1" LENG="000003" DECIMALS="000000" OUTPUTLEN="000003" VALEXI="X" REFKIND="D" MultiLanguageSupport="X">
  <tpara/>
  <DDLANGUAGE LANGU="E">
   <DD04V ROLLNAME="ZZCODE" DDLANGUAGE="E" DOMNAME="ZZCODE" ROUTPUTLEN="000000" HEADLEN="16" SCRLEN1="10" SCRLEN2="16" SCRLEN3="20" DDTEXT="Transaction code 1 Create; 2 Change; 3 Display" REPTEXT="Transaction code" SCRTEXT_S="t. code" SCRTEXT_M="Transaction code" SCRTEXT_L="Transaction code" AUTHCLASS="00" DTELMASTER="E" DATATYPE="INT1" LENG="000003" DECIMALS="000000" OUTPUTLEN="000003" VALEXI="X" REFKIND="D"/>
  </DDLANGUAGE>
 </DTEL>
 <FUGR AREA="ZSY60" SPRAS="E" AREAT="Table maintenance">
  <functionGroupDocumentation/>
  <mainprogram NAME="SAPLZSY60" VARCL="X" DBAPL="S" DBNA="D$" SUBC="F" APPL="S" RMAND="333" RLOAD="E" FIXPT="X" LDBNAME="D$S" UCCHECK="X">
   <textPool>
    <language SPRAS="3">
     <textElement ID="I" KEY="014" ENTRY="Display" LENGTH="10 "/>
     <textElement ID="I" KEY="015" ENTRY="Change" LENGTH="10 "/>
    </language>
    <language SPRAS="E">
     <textElement ID="I" KEY="014" ENTRY="Display" LENGTH="10 "/>
     <textElement ID="I" KEY="015" ENTRY="Change" LENGTH="10 "/>
    </language>
    <language SPRAS="H">
     <textElement ID="I" KEY="014" ENTRY="Display" LENGTH="10 "/>
     <textElement ID="I" KEY="015" ENTRY="Change" LENGTH="10 "/>
    </language>
    <language SPRAS="R">
     <textElement ID="I" KEY="014" ENTRY="Display" LENGTH="10 "/>
     <textElement ID="I" KEY="015" ENTRY="Change" LENGTH="10 "/>
    </language>
   </textPool>
   <dynpros>
    <dynpro PROG="SAPLZSY60" DNUM="0001" FNUM="0001" BZMX="61 " BZBR="240 " MILI="192 " MICO="37 " MALI="0 " MACO="0 " NOLI="90 " NOCO="240 " VALP="0 " CUAN="G" SPRA="E" DTEXT="Maintain table &amp;">
     <dynprofield FNAM="CONTAINER" DIDX="003D" FLG1="00" FLG2="30" FLG3="00" FILL="U" FMB1="00" FMB2="00" LENG="F0" LINE="01" COLN="02" LANF="00" LBLK="00" LREP="00" AUTH="101" AGLT="19" ADEZ="50"/>
     <dynprofield FNAM="OK_CODE" DIDX="0000" FLG1="80" FLG2="10" FLG3="00" FMB1="00" FMB2="00" LENG="14" LINE="FF" COLN="01" LTYP="O" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="____________________"/>
     <dynproflowsource>PROCESS BEFORE OUTPUT.

  MODULE status_0001.

PROCESS AFTER INPUT.
  MODULE exit AT EXIT-COMMAND.

  MODULE user_command_0001.</dynproflowsource>
    </dynpro>
    <dynpro PROG="SAPLZSY60" DNUM="0002" FNUM="0002" BZMX="90 " BZBR="176 " MILI="192 " MICO="37 " MALI="0 " MACO="0 " NOLI="90 " NOCO="240 " VALP="0 " CUAN="G" SPRA="E" DTEXT="Maintain table &amp;">
     <dynprofield FNAM="SELECTION" DIDX="0058" FLG1="00" FLG2="30" FLG3="00" FILL="B" FMB1="00" FMB2="00" LENG="B0" LINE="01" COLN="02" LANF="00" LBLK="00" LREP="00" AUTH="101" AGLT="0A" ADEZ="32"/>
     <dynprofield FNAM="*RSEUMOD-TBMAXSEL" DIDX="0000" FLG1="30" FLG2="00" FLG3="00" FMB1="30" FMB2="00" LENG="14" LINE="5A" COLN="02" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" ITYP="3" AGLT="00" ADEZ="00" STXT="Maximum No. of Hits" RES1="                                                                                                                                                                                                                                                        X"/>
     <dynprofield FNAM="*RSEUMOD-TBMAXSEL" DIDX="0000" FLG1="A0" FLG2="00" FLG3="90" FMB1="00" FMB2="00" LENG="0B" LINE="5A" COLN="24" LANF="00" LBLK="00" LREP="00" TYPE="INT4" ITYP="X" AGLT="0A" ADEZ="00" STXT="__________V" RES1="                                       00"/>
     <dynprofield FNAM="OK_CODE" DIDX="0000" FLG1="80" FLG2="10" FLG3="00" FMB1="00" FMB2="00" LENG="14" LINE="FF" COLN="01" LTYP="O" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="____________________"/>
     <dynproflowsource>process before output.

  module status_0002.

  call subscreen selection including w_prog z_c_sy6_main=&gt;c_dynnr.

process after input.

  call subscreen selection.

  module user_command_0002.</dynproflowsource>
    </dynpro>
    <dynpro PROG="SAPLZSY60" DNUM="0003" TYPE="M" FNUM="0003" BZMX="3 " BZBR="45 " MILI="192 " MICO="37 " MALI="0 " MACO="0 " NOLI="21 " NOCO="83 " VALP="0 " CUAN="G" SPRA="E" DTEXT="Display number of entries">
     <dynprofield FNAM="%_AUTOTEXT001" DIDX="0000" FLG1="00" FLG2="00" FLG3="00" FMB1="30" FMB2="00" LENG="2D" LINE="01" COLN="02" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="Number of entries which meet"/>
     <dynprofield FNAM="%_AUTOTEXT002" DIDX="0000" FLG1="00" FLG2="00" FLG3="00" FMB1="30" FMB2="00" LENG="2D" LINE="02" COLN="02" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="the selection criteria:"/>
     <dynprofield FNAM="W_COUNT" DIDX="0000" FLG1="80" FLG2="00" FLG3="90" FMB1="31" FMB2="00" LENG="0B" LINE="03" COLN="02" LANF="00" LBLK="00" LREP="00" TYPE="INT4" ITYP="X" AGLT="00" ADEZ="00" STXT="__________V"/>
     <dynprofield FNAM="OK_CODE" DIDX="0000" FLG1="80" FLG2="10" FLG3="00" FMB1="00" FMB2="00" LENG="14" LINE="FF" COLN="01" LTYP="O" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="____________________"/>
     <dynproflowsource>PROCESS BEFORE OUTPUT.
  MODULE STATUS_0003.
*
PROCESS AFTER INPUT.
  MODULE USER_COMMAND_0003.</dynproflowsource>
    </dynpro>
    <dynpro PROG="SAPLZSY60" DNUM="0004" TYPE="M" FNUM="0004" BZMX="30 " BZBR="100 " MILI="192 " MICO="37 " MALI="0 " MACO="0 " NOLI="30 " NOCO="100 " VALP="0 " CUAN="G" SPRA="E" DTEXT="Field Selection">
     <dynprofield FNAM="CONTAINER_DIALOG" DIDX="001E" FLG1="00" FLG2="30" FLG3="00" FILL="U" FMB1="00" FMB2="00" LENG="64" LINE="01" COLN="02" LANF="00" LBLK="00" LREP="00" AUTH="101" AGLT="0E" ADEZ="31"/>
     <dynprofield FNAM="OK_CODE" DIDX="0000" FLG1="80" FLG2="10" FLG3="00" FMB1="00" FMB2="00" LENG="14" LINE="FF" COLN="01" LTYP="O" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="____________________"/>
     <dynproflowsource>PROCESS BEFORE OUTPUT.
 MODULE STATUS_0004.
*
PROCESS AFTER INPUT.
 MODULE USER_COMMAND_0004.</dynproflowsource>
    </dynpro>
    <dynpro PROG="SAPLZSY60" DNUM="0005" TYPE="M" FNUM="0005" BZMX="10 " BZBR="100 " MILI="192 " MICO="37 " MALI="0 " MACO="0 " NOLI="10 " NOCO="100 " VALP="0 " CUAN="G" SPRA="E" DTEXT="Dialog screen for field selection">
     <dynprofield FNAM="CONTAINER_SEL_GRID" DIDX="000A" FLG1="00" FLG2="30" FLG3="00" FILL="U" FMB1="00" FMB2="00" LENG="64" LINE="01" COLN="02" LANF="00" LBLK="00" LREP="00" AUTH="101" AGLT="01" ADEZ="1E"/>
     <dynprofield FNAM="OK_CODE" DIDX="0000" FLG1="80" FLG2="10" FLG3="00" FMB1="00" FMB2="00" LENG="14" LINE="FF" COLN="01" LTYP="O" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="____________________"/>
     <dynproflowsource>PROCESS BEFORE OUTPUT.

  MODULE status_0005.
  MODULE create_grid.

PROCESS AFTER INPUT.
  MODULE user_command_0005.</dynproflowsource>
    </dynpro>
   </dynpros>
   <pfstatus>
    <pfstatus_sta CODE="0001" MODAL="D" ACTCODE="000003" PFKCODE="000003" BUTCODE="0001" INT_NOTE="Maitain table"/>
    <pfstatus_sta CODE="0002" MODAL="D" ACTCODE="000006" PFKCODE="000006" BUTCODE="0001" INT_NOTE="Report execution standard status"/>
    <pfstatus_sta CODE="0003" MODAL="P" PFKCODE="000007" BUTCODE="0001" INT_NOTE="Display number of chosen entries"/>
    <pfstatus_sta CODE="0004" MODAL="P" PFKCODE="000008" BUTCODE="0001" INT_NOTE="Field Selection"/>
    <pfstatus_sta CODE="0005" MODAL="C" INT_NOTE="Grid add on functions" CTXCODE="000007"/>
    <pfstatus_fun CODE="ADJUST" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_MASS_CHANGE" ICON_ID="@HB@" FUN_TEXT="Adjust" INFO_TEXT="Adjust from remote" PATH="A"/>
    <pfstatus_fun CODE="AEIN" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Number of Entries" PATH="N"/>
    <pfstatus_fun CODE="ALLS" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="All Selections" PATH="L"/>
    <pfstatus_fun CODE="BACK" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Back"/>
    <pfstatus_fun CODE="CANCEL" TEXTNO="001" TYPE="E" TEXT_TYPE="S" TEXT_NAME="ICON_CANCEL" ICON_ID="@0W@" FUN_TEXT="Cancel"/>
    <pfstatus_fun CODE="CHANGE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_TOGGLE_DISPLAY_CHANGE" ICON_ID="@3I@" FUN_TEXT="Change"/>
    <pfstatus_fun CODE="DELA" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Delete Entire Selection Line" PATH="E"/>
    <pfstatus_fun CODE="DELS" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_DELETE_ROW" ICON_ID="@18@" FUN_TEXT="Delete Selection Criterion" PATH="S"/>
    <pfstatus_fun CODE="DYNS" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Dynamic Selections" PATH="D"/>
    <pfstatus_fun CODE="DYNS" TEXTNO="002" TEXT_TYPE="D" TEXT_NAME="SSCRTEXTS-DYNSEL"/>
    <pfstatus_fun CODE="E" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Back" PATH="B"/>
    <pfstatus_fun CODE="ECAN" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Cancel" PATH="A"/>
    <pfstatus_fun CODE="ENDE" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Exit" PATH="X"/>
    <pfstatus_fun CODE="ENTER" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_OKAY" ICON_ID="@0V@" FUN_TEXT="Enter"/>
    <pfstatus_fun CODE="EXECUTE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_EXECUTE_OBJECT" ICON_ID="@15@" FUN_TEXT="Execute"/>
    <pfstatus_fun CODE="EXIT" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Exit"/>
    <pfstatus_fun CODE="FC01" TEXTNO="001" TEXT_TYPE="D" TEXT_NAME="SSCRFIELDS-FUNCTXT_01"/>
    <pfstatus_fun CODE="FC02" TEXTNO="001" TEXT_TYPE="D" TEXT_NAME="SSCRFIELDS-FUNCTXT_02"/>
    <pfstatus_fun CODE="FC03" TEXTNO="001" TEXT_TYPE="D" TEXT_NAME="SSCRFIELDS-FUNCTXT_03"/>
    <pfstatus_fun CODE="FC04" TEXTNO="001" TEXT_TYPE="D" TEXT_NAME="SSCRFIELDS-FUNCTXT_04"/>
    <pfstatus_fun CODE="FC05" TEXTNO="001" TEXT_TYPE="D" TEXT_NAME="SSCRFIELDS-FUNCTXT_05"/>
    <pfstatus_fun CODE="FELD" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Choose Fields..." PATH="F"/>
    <pfstatus_fun CODE="FEWS" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Selections Chosen" PATH="C"/>
    <pfstatus_fun CODE="FNAM" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_TABLE_SETTINGS" ICON_ID="@36@" FUN_TEXT="User Parameters..." PATH="U"/>
    <pfstatus_fun CODE="GET" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Get..." PATH="G"/>
    <pfstatus_fun CODE="GET" TEXTNO="002" TYPE="E" TEXT_TYPE="S" TEXT_NAME="ICON_VARIANTS" ICON_ID="@0R@" FUN_TEXT="Get Variant..." PATH="V"/>
    <pfstatus_fun CODE="LVUV" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="User Variables..." PATH="U"/>
    <pfstatus_fun CODE="MSG" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_ERROR_PROTOCOL" ICON_ID="@DR@" FUN_TEXT="Error Messages" INFO_TEXT="Error Messages"/>
    <pfstatus_fun CODE="ONLI" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_EXECUTE_OBJECT" ICON_ID="@15@" FUN_TEXT="Execute" PATH="E"/>
    <pfstatus_fun CODE="OPTI" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SELECTION" ICON_ID="@7X@" FUN_TEXT="Selection Options" PATH="O"/>
    <pfstatus_fun CODE="PRIN" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_PRINT" ICON_ID="@0X@" FUN_TEXT="Execute and Print" PATH="U"/>
    <pfstatus_fun CODE="PRIN" TEXTNO="002" TEXT_TYPE="S" FUN_TEXT="Execute and Print" PATH="U"/>
    <pfstatus_fun CODE="SAVE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SYSTEM_SAVE" ICON_ID="@2L@" FUN_TEXT="Save"/>
    <pfstatus_fun CODE="SCHL" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_OKAY" ICON_ID="@0V@" FUN_TEXT="Close"/>
    <pfstatus_fun CODE="SCHL" TEXTNO="002" TEXT_TYPE="S" TEXT_NAME="ICON_CANCEL" ICON_ID="@0W@" FUN_TEXT="Cancel" PATH="A"/>
    <pfstatus_fun CODE="SCRH" TEXTNO="001" TYPE="E" TEXT_TYPE="S" TEXT_NAME="ICON_INFORMATION" ICON_ID="@0S@" FUN_TEXT="Selection Screen Help" PATH="H"/>
    <pfstatus_fun CODE="SEOP" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Fields for Selection" PATH="S"/>
    <pfstatus_fun CODE="SJOB" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Execute in Background" PATH="I"/>
    <pfstatus_fun CODE="SORT" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Sort..." PATH="T"/>
    <pfstatus_fun CODE="SPOS" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Save as Variant..." PATH="R"/>
    <pfstatus_fun CODE="SYNC" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_RELATION" ICON_ID="@BW@" FUN_TEXT="SYNC" INFO_TEXT="Data syncronisation"/>
    <pfstatus_fun CODE="UPDATE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_CHOOSE_COLUMNS" ICON_ID="@HE@" FUN_TEXT="Update with ..." INFO_TEXT="Update with ..."/>
    <pfstatus_fun CODE="UPDATEWITH" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Update with ..." PATH="U"/>
    <pfstatus_fun CODE="VDEL" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Delete..." PATH="D"/>
    <pfstatus_fun CODE="VSHO" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Display..." PATH="A"/>
    <pfstatus_fun CODE="___ADJUST" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Adjust" PATH="A"/>
    <pfstatus_fun CODE="___MSG" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Error messages" PATH="E"/>
    <pfstatus_fun CODE="___UPDATE" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Update with ..." PATH="U"/>
    <pfstatus_men CODE="000001" NO="01" REF_TYPE="F" REF_CODE="ONLI" REF_NO="001"/>
    <pfstatus_men CODE="000001" NO="02" REF_TYPE="F" REF_CODE="PRIN" REF_NO="001"/>
    <pfstatus_men CODE="000001" NO="03" REF_TYPE="F" REF_CODE="SJOB" REF_NO="001"/>
    <pfstatus_men CODE="000001" NO="04" REF_TYPE="S" REF_CODE="SJOB" REF_NO="01"/>
    <pfstatus_men CODE="000001" NO="05" REF_TYPE="F" REF_CODE="ENDE" REF_NO="001"/>
    <pfstatus_men CODE="000002" NO="01" REF_TYPE="F" REF_CODE="ALLS" REF_NO="001"/>
    <pfstatus_men CODE="000002" NO="02" REF_TYPE="F" REF_CODE="FEWS" REF_NO="001"/>
    <pfstatus_men CODE="000002" NO="03" REF_TYPE="S" REF_CODE="FEWS" REF_NO="01"/>
    <pfstatus_men CODE="000002" NO="04" REF_TYPE="F" REF_CODE="OPTI" REF_NO="001"/>
    <pfstatus_men CODE="000002" NO="05" REF_TYPE="S" REF_CODE="OPTI" REF_NO="01"/>
    <pfstatus_men CODE="000002" NO="06" REF_TYPE="F" REF_CODE="DELS" REF_NO="001"/>
    <pfstatus_men CODE="000002" NO="07" REF_TYPE="F" REF_CODE="DELA" REF_NO="001"/>
    <pfstatus_men CODE="000002" NO="08" REF_TYPE="S" REF_CODE="DELA" REF_NO="01"/>
    <pfstatus_men CODE="000002" NO="09" REF_TYPE="F" REF_CODE="DYNS" REF_NO="001"/>
    <pfstatus_men CODE="000002" NO="10" REF_TYPE="S" REF_CODE="DYNS" REF_NO="01"/>
    <pfstatus_men CODE="000002" NO="11" REF_TYPE="F" REF_CODE="AEIN" REF_NO="001"/>
    <pfstatus_men CODE="000002" NO="12" REF_TYPE="S" REF_CODE="DYNS" REF_NO="01"/>
    <pfstatus_men CODE="000002" NO="13" REF_TYPE="F" REF_CODE="ECAN" REF_NO="001"/>
    <pfstatus_men CODE="000003" NO="01" REF_TYPE="M" REF_CODE="000004"/>
    <pfstatus_men CODE="000003" NO="02" REF_TYPE="S" REF_CODE="0101"/>
    <pfstatus_men CODE="000003" NO="03" REF_TYPE="F" REF_CODE="LVUV" REF_NO="001"/>
    <pfstatus_men CODE="000003" NO="04" REF_TYPE="S" REF_CODE="LVUV" REF_NO="01"/>
    <pfstatus_men CODE="000003" NO="05" REF_TYPE="F" REF_CODE="E" REF_NO="001"/>
    <pfstatus_men CODE="000004" NO="01" REF_TYPE="F" REF_CODE="GET" REF_NO="001"/>
    <pfstatus_men CODE="000004" NO="02" REF_TYPE="F" REF_CODE="VSHO" REF_NO="001"/>
    <pfstatus_men CODE="000004" NO="03" REF_TYPE="F" REF_CODE="VDEL" REF_NO="001"/>
    <pfstatus_men CODE="000004" NO="04" REF_TYPE="F" REF_CODE="SPOS" REF_NO="001"/>
    <pfstatus_men CODE="000005" NO="01" REF_TYPE="M" REF_CODE="000006"/>
    <pfstatus_men CODE="000005" NO="02" REF_TYPE="F" REF_CODE="FNAM" REF_NO="001"/>
    <pfstatus_men CODE="000005" NO="03" REF_TYPE="F" REF_CODE="SEOP" REF_NO="001"/>
    <pfstatus_men CODE="000006" NO="01" REF_TYPE="F" REF_CODE="SORT" REF_NO="001"/>
    <pfstatus_men CODE="000006" NO="02" REF_TYPE="F" REF_CODE="FELD" REF_NO="001"/>
    <pfstatus_men CODE="000007" NO="01" REF_TYPE="F" REF_CODE="___UPDATE" REF_NO="001"/>
    <pfstatus_men CODE="000007" NO="02" REF_TYPE="F" REF_CODE="___ADJUST" REF_NO="001"/>
    <pfstatus_men CODE="000007" NO="03" REF_TYPE="F" REF_CODE="___MSG" REF_NO="001"/>
    <pfstatus_mtx CODE="000001" TEXT_TYPE="S" TEXT="Program" PATH="P" INT_NOTE="Standard status"/>
    <pfstatus_mtx CODE="000002" TEXT_TYPE="S" TEXT="Edit" PATH="E" INT_NOTE="Standard status"/>
    <pfstatus_mtx CODE="000003" TEXT_TYPE="S" TEXT="Goto" PATH="G" INT_NOTE="Standard Status and Job Scheduling (Errors)"/>
    <pfstatus_mtx CODE="000004" TEXT_TYPE="S" TEXT="Variants" PATH="V" INT_NOTE="Go to variants"/>
    <pfstatus_mtx CODE="000005" TEXT_TYPE="S" TEXT="Settings" PATH="S"/>
    <pfstatus_mtx CODE="000006" TEXT_TYPE="S" TEXT="Format List" PATH="L"/>
    <pfstatus_mtx CODE="000007" TEXT_TYPE="S" TEXT="GridMenu" INT_NOTE="Grid add on functions"/>
    <pfstatus_act CODE="000006" NO="01" MENUCODE="000001"/>
    <pfstatus_act CODE="000006" NO="02" MENUCODE="000002"/>
    <pfstatus_act CODE="000006" NO="03" MENUCODE="000003"/>
    <pfstatus_act CODE="000006" NO="04" MENUCODE="000005"/>
    <pfstatus_but PFK_CODE="000003" CODE="0001" NO="01" PFNO="25"/>
    <pfstatus_but PFK_CODE="000003" CODE="0001" NO="02" PFNO="06"/>
    <pfstatus_but PFK_CODE="000003" CODE="0001" NO="03" PFNO="09"/>
    <pfstatus_but PFK_CODE="000003" CODE="0001" NO="04" PFNO="08"/>
    <pfstatus_but PFK_CODE="000003" CODE="0001" NO="05" PFNO="05"/>
    <pfstatus_but PFK_CODE="000003" CODE="0001" NO="06" PFNO="07"/>
    <pfstatus_but PFK_CODE="000004" CODE="0001" NO="01" PFNO="08"/>
    <pfstatus_but PFK_CODE="000005" CODE="0001" NO="01" PFNO="08"/>
    <pfstatus_but PFK_CODE="000005" CODE="0001" NO="02" PFNO="06"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="01" PFNO="08"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="02" PFNO="02"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="03" PFNO="14"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="04" PFNO="18"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="05" PFNO="17"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="06" PFNO="31"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="07" PFNO="16"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="08" PFNO="19"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="09" PFNO="20"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="10" PFNO="25"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="11" PFNO="26"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="12" PFNO="27"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="13" PFNO="28"/>
    <pfstatus_but PFK_CODE="000006" CODE="0001" NO="14" PFNO="29"/>
    <pfstatus_but PFK_CODE="000007" CODE="0001" NO="01" PFNO="00"/>
    <pfstatus_but PFK_CODE="000007" CODE="0001" NO="02" PFNO="12"/>
    <pfstatus_but PFK_CODE="000008" CODE="0001" NO="01" PFNO="00"/>
    <pfstatus_but PFK_CODE="000008" CODE="0001" NO="02" PFNO="12"/>
    <pfstatus_pfk CODE="000002" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
    <pfstatus_pfk CODE="000002" PFNO="03" FUNCODE="BACK" FUNNO="001"/>
    <pfstatus_pfk CODE="000002" PFNO="08" FUNCODE="EXECUTE" FUNNO="001"/>
    <pfstatus_pfk CODE="000002" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
    <pfstatus_pfk CODE="000002" PFNO="15" FUNCODE="EXIT" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="03" FUNCODE="BACK" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="05" FUNCODE="UPDATE" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="06" FUNCODE="FNAM" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="07" FUNCODE="MSG" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="08" FUNCODE="ADJUST" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="09" FUNCODE="SYNC" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="11" FUNCODE="SAVE" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="15" FUNCODE="EXIT" FUNNO="001"/>
    <pfstatus_pfk CODE="000003" PFNO="25" FUNCODE="CHANGE" FUNNO="001"/>
    <pfstatus_pfk CODE="000004" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
    <pfstatus_pfk CODE="000004" PFNO="03" FUNCODE="BACK" FUNNO="001"/>
    <pfstatus_pfk CODE="000004" PFNO="08" FUNCODE="EXECUTE" FUNNO="001"/>
    <pfstatus_pfk CODE="000004" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
    <pfstatus_pfk CODE="000004" PFNO="15" FUNCODE="EXIT" FUNNO="001"/>
    <pfstatus_pfk CODE="000005" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
    <pfstatus_pfk CODE="000005" PFNO="03" FUNCODE="BACK" FUNNO="001"/>
    <pfstatus_pfk CODE="000005" PFNO="06" FUNCODE="FNAM" FUNNO="001"/>
    <pfstatus_pfk CODE="000005" PFNO="08" FUNCODE="EXECUTE" FUNNO="001"/>
    <pfstatus_pfk CODE="000005" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
    <pfstatus_pfk CODE="000005" PFNO="15" FUNCODE="EXIT" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="02" FUNCODE="OPTI" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="03" FUNCODE="E" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="08" FUNCODE="ONLI" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="09" FUNCODE="SJOB" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="11" FUNCODE="SPOS" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="12" FUNCODE="ECAN" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="13" FUNCODE="PRIN" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="14" FUNCODE="DELS" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="15" FUNCODE="ENDE" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="16" FUNCODE="DYNS" FUNNO="002"/>
    <pfstatus_pfk CODE="000006" PFNO="17" FUNCODE="GET" FUNNO="002"/>
    <pfstatus_pfk CODE="000006" PFNO="18" FUNCODE="SCRH" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="19" FUNCODE="ALLS" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="20" FUNCODE="FEWS" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="25" FUNCODE="FC01" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="26" FUNCODE="FC02" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="27" FUNCODE="FC03" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="28" FUNCODE="FC04" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="29" FUNCODE="FC05" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="30" FUNCODE="LVUV" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="31" FUNCODE="AEIN" FUNNO="001"/>
    <pfstatus_pfk CODE="000006" PFNO="86" FUNCODE="PRIN" FUNNO="002"/>
    <pfstatus_pfk CODE="000007" PFNO="00" FUNCODE="SCHL" FUNNO="001"/>
    <pfstatus_pfk CODE="000007" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
    <pfstatus_pfk CODE="000008" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
    <pfstatus_pfk CODE="000008" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
    <pfstatus_set STATUS="0001" FUNCTION="ADJUST"/>
    <pfstatus_set STATUS="0001" FUNCTION="BACK"/>
    <pfstatus_set STATUS="0001" FUNCTION="CANCEL"/>
    <pfstatus_set STATUS="0001" FUNCTION="CHANGE"/>
    <pfstatus_set STATUS="0001" FUNCTION="ENTER"/>
    <pfstatus_set STATUS="0001" FUNCTION="EXIT"/>
    <pfstatus_set STATUS="0001" FUNCTION="FNAM"/>
    <pfstatus_set STATUS="0001" FUNCTION="MSG"/>
    <pfstatus_set STATUS="0001" FUNCTION="SAVE"/>
    <pfstatus_set STATUS="0001" FUNCTION="SYNC"/>
    <pfstatus_set STATUS="0001" FUNCTION="UPDATE"/>
    <pfstatus_set STATUS="0002" FUNCTION="AEIN"/>
    <pfstatus_set STATUS="0002" FUNCTION="BUGA"/>
    <pfstatus_set STATUS="0002" FUNCTION="BUGE"/>
    <pfstatus_set STATUS="0002" FUNCTION="CANC"/>
    <pfstatus_set STATUS="0002" FUNCTION="DELS"/>
    <pfstatus_set STATUS="0002" FUNCTION="E"/>
    <pfstatus_set STATUS="0002" FUNCTION="ECAN"/>
    <pfstatus_set STATUS="0002" FUNCTION="EGET"/>
    <pfstatus_set STATUS="0002" FUNCTION="ENDE"/>
    <pfstatus_set STATUS="0002" FUNCTION="ENTER"/>
    <pfstatus_set STATUS="0002" FUNCTION="FNAM"/>
    <pfstatus_set STATUS="0002" FUNCTION="ONLI"/>
    <pfstatus_set STATUS="0002" FUNCTION="OPTI"/>
    <pfstatus_set STATUS="0002" FUNCTION="SEOP"/>
    <pfstatus_set STATUS="0002" FUNCTION="STKA"/>
    <pfstatus_set STATUS="0002" FUNCTION="STKE"/>
    <pfstatus_set STATUS="0002" FUNCTION="SVUV"/>
    <pfstatus_set STATUS="0002" FUNCTION="VARI"/>
    <pfstatus_set STATUS="0003" FUNCTION="CANCEL"/>
    <pfstatus_set STATUS="0003" FUNCTION="SCHL"/>
    <pfstatus_set STATUS="0004" FUNCTION="CANCEL"/>
    <pfstatus_set STATUS="0004" FUNCTION="ENTER"/>
    <pfstatus_set STATUS="0005" FUNCTION="ADJUST"/>
    <pfstatus_set STATUS="0005" FUNCTION="UPDATEWITH"/>
    <pfstatus_set STATUS="0005" FUNCTION="___ADJUST"/>
    <pfstatus_set STATUS="0005" FUNCTION="___MSG"/>
    <pfstatus_set STATUS="0005" FUNCTION="___UPDATE"/>
    <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000001" MODAL="D" INT_NOTE="Test"/>
    <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000001" MODAL="D" INT_NOTE="Test"/>
    <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000001" SUB_CODE="0001" MODAL="D" INT_NOTE="Test"/>
    <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000002" MODAL="D" INT_NOTE="Start screen"/>
    <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000002" MODAL="D" INT_NOTE="Start screen"/>
    <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000002" SUB_CODE="0001" MODAL="D" INT_NOTE="Start screen"/>
    <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000003" MODAL="D" INT_NOTE="Maintain table"/>
    <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000003" MODAL="D" INT_NOTE="Maintain table"/>
    <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000003" SUB_CODE="0001" MODAL="C" INT_NOTE="Maintain table"/>
    <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000004" MODAL="D" INT_NOTE="Start screen"/>
    <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000004" MODAL="D" INT_NOTE="Start screen"/>
    <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000004" SUB_CODE="0001" MODAL="D" INT_NOTE="Start screen"/>
    <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000005" MODAL="D" INT_NOTE="Maintenance selection screen"/>
    <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000005" MODAL="D" INT_NOTE="Maintenance selection screen"/>
    <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000005" SUB_CODE="0001" MODAL="D" INT_NOTE="Maintenance selection screen"/>
    <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000006" MODAL="D" INT_NOTE="Report start: standard status"/>
    <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000006" MODAL="D" INT_NOTE="Standard status"/>
    <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000006" SUB_CODE="0001" MODAL="D" INT_NOTE="Standard status"/>
    <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000007" MODAL="P" INT_NOTE="Standard status"/>
    <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000007" SUB_CODE="0001" MODAL="P" INT_NOTE="Standard status"/>
    <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000008" MODAL="P" INT_NOTE="Field Selection"/>
    <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000008" SUB_CODE="0001" MODAL="P" INT_NOTE="Field Selection"/>
    <pfstatus_tit CODE="0001" TEXT="&amp; table &amp;: &amp; of &amp; Hits"/>
    <pfstatus_tit CODE="0002" TEXT="Table Maintenance &amp;"/>
    <pfstatus_tit CODE="0003" TEXT="Display Number of Entries"/>
    <pfstatus_tit CODE="0004" TEXT="Field selection for &amp;"/>
    <pfstatus_tit CODE="0005" TEXT="Update field value"/>
   </pfstatus>
   <source>*******************************************************************
*   System-defined Include-files.                                 *
*******************************************************************
  INCLUDE LZSY60TOP.                      &quot; Global Data
  INCLUDE LZSY60UXX.                      &quot; Function Modules

*******************************************************************
*   User-defined Include-files (if necessary).                    *
*******************************************************************
* INCLUDE LZSY_SE16F...                      &quot; Subprograms
* INCLUDE LZSY_SE16O...                      &quot; PBO-Modules
* INCLUDE LZSY_SE16I...                      &quot; PAI-Modules


INCLUDE LZSY60F01.
INCLUDE LZSY60F02.
INCLUDE LZSY60F03.

INCLUDE LZSY60O01.
INCLUDE LZSY60O02.
INCLUDE LZSY60O03.
INCLUDE LZSY60O04.
INCLUDE LZSY60O05.

INCLUDE LZSY60I01.
INCLUDE LZSY60I02.
INCLUDE LZSY60I03.
INCLUDE LZSY60I04.
INCLUDE LZSY60I05.

INCLUDE LZSY60F05.</source>
  </mainprogram>
  <includeprograms>
   <include NAME="LZSY60F01" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16F01 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Form  SET_SCREEN_OPTIONS
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM set_screen_options .
  DATA: l_tname       TYPE default_va,
        lt_sel_fields TYPE zsy6_t_sel_fields,
        ls_sel_fields TYPE zsy6_s_sel_fields.

  FIELD-SYMBOLS: &lt;l_fs&gt;  TYPE default_va,
                 &lt;lt_fs&gt; TYPE ANY TABLE,
                 &lt;ls_fs&gt; TYPE ANY.

  lt_sel_fields = wo_table-&gt;get_sel_fields( ).

  LOOP AT lt_sel_fields INTO ls_sel_fields.

    IF ls_sel_fields-datatype = &apos;CLNT&apos;.
      w_mandt = abap_true.
    ENDIF.

    PERFORM clear_select_option IN PROGRAM (w_prog) USING   ls_sel_fields-selname.

    ASSIGN (ls_sel_fields-varname) TO &lt;l_fs&gt;.
    IF sy-subrc EQ 0.
      &lt;l_fs&gt; = w_table.
      CONCATENATE &lt;l_fs&gt; &apos;-&apos; ls_sel_fields-fieldname INTO &lt;l_fs&gt;.
    ENDIF.
  ENDLOOP.

ENDFORM.                    &quot; SET_SCREEN_OPTIONS
*&amp;---------------------------------------------------------------------*
*&amp;      Form  GET_USER_VALUE
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM get_user_value .

  IF *rseumod IS INITIAL.
     *rseumod = z_c_sy6_grid=&gt;ws_rseumod.
  ENDIF.

ENDFORM.                    &quot; GET_USER_VALUE
*&amp;---------------------------------------------------------------------*
*&amp;      Form  OPTIONS_CHANGE
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      &lt;--P_RSEUMOD  text
*----------------------------------------------------------------------*
FORM options_change  CHANGING ps_rseumod STRUCTURE rseumod.

  CALL FUNCTION &apos;RS_WORKBENCH_CUSTOMIZING&apos;
       EXPORTING
            choice          = &apos;DB&apos;
*          SUPPRESS_DIALOG =
       IMPORTING
            setting         = *rseumod
       EXCEPTIONS
            OTHERS          = 1.

  ps_rseumod = *rseumod.

ENDFORM.                    &quot; OPTIONS_CHANGE
*&amp;---------------------------------------------------------------------*
*&amp;      Form  DISPLAY_CHANGE
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM display_change .
  DATA: l_fieldname  TYPE fieldname.

  w_display_only = wo_grid-&gt;w_display_only.

  IF w_display_only = &apos;&apos;.
    w_display_only = abap_true.
    IF wo_grid-&gt;w_sync = abap_true.
      w_sync_allowed = &apos;D&apos;.
    ELSE.
      w_sync_allowed = abap_true.
    ENDIF.
    w_display = &apos;Display&apos;(014).
    IF z_c_sy6_main=&gt;class_exists( i_clsname = z_c_sy6_main=&gt;c_hotspot ) = abap_true .
      CALL METHOD (z_c_sy6_main=&gt;c_hotspot)=&gt;set_code
        EXPORTING
          i_fieldname = l_fieldname
          i_code      = &apos;3&apos;
          ic_grid     = wo_grid.
    ENDIF.
  ELSE.
    w_display_only = space.
    IF wo_grid-&gt;w_sync = abap_true.
      w_sync_allowed = &apos;D&apos;.
    ELSE.
      CLEAR w_sync_allowed.
    ENDIF.
    w_display = &apos;Change&apos;(015).
    IF z_c_sy6_main=&gt;class_exists( i_clsname = z_c_sy6_main=&gt;c_hotspot ) = abap_true .
      CALL METHOD (z_c_sy6_main=&gt;c_hotspot)=&gt;set_code
        EXPORTING
          i_fieldname = l_fieldname
          i_code      = &apos;2&apos;
          ic_grid     = wo_grid.
    ENDIF.
  ENDIF.

  wo_grid-&gt;display( i_flag = w_display_only ) .
ENDFORM.                    &quot; DISPLAY_CHANGE
*&amp;---------------------------------------------------------------------*
*&amp;      Form  STATUS_0001
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM status_0001 .
  DATA: lt_fcode TYPE TABLE OF sy-ucomm,
        l_count TYPE int4.

  IF w_sync_allowed &lt;&gt; abap_true.
    APPEND &apos;SYNC&apos; TO lt_fcode.
    IF w_display_only IS NOT INITIAL OR  w_sync_allowed &lt;&gt; &apos;D&apos;.
      APPEND &apos;ADJUST&apos; TO lt_fcode.
    ENDIF.
  ELSE.
    IF w_display_only IS NOT INITIAL OR  w_sync_allowed &lt;&gt; &apos;D&apos;.
      APPEND &apos;ADJUST&apos; TO lt_fcode.
    ENDIF.
  ENDIF.
  IF w_display_only IS NOT INITIAL.
    APPEND &apos;UPDATE&apos; TO lt_fcode.
  ENDIF.
  l_count = wo_grid-&gt;msg_count( ).
  IF l_count = 0.
    APPEND &apos;MSG&apos; TO lt_fcode.
  ENDIF.

  SET PF-STATUS &apos;0001&apos; EXCLUDING lt_fcode.
  SET TITLEBAR  &apos;0001&apos; WITH w_display w_table w_tbmaxsel w_count .

ENDFORM.                    &quot; STATUS_0001
*&amp;---------------------------------------------------------------------*
*&amp;      Form  SCREEN_0001
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM screen_0001 .
  LOOP AT SCREEN.


  ENDLOOP.
ENDFORM.                    &quot; SCREEN_0001</include_source>
   </include>
   <include NAME="LZSY60F02" VARCL="X" SUBC="I" APPL="S" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY60F02 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Form  SYNC_DATA
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM sync_data .
  DATA: l_string         TYPE string,
        l_dest           TYPE rfcdes-rfcdest,
        l_match          TYPE abap_bool.

  CALL FUNCTION &apos;SCT2_GET_RFC_DESTINATION_POPUP&apos;
* EXPORTING
*   IV_POPUP_START_X            = 5
*   IV_POPUP_START_Y            = 5
*   IV_INFO_TXT_OBJ             = &apos; &apos;
*   IV_INFO_BUTTON              = &apos; &apos;
*   IV_TITLE                    = &apos; &apos;
* IMPORTING
*   EV_RFC_DEST_TEXT            =
*   ES_RFC_DEST_INFO            =
    CHANGING
      cv_rfc_dest                 = l_dest
    EXCEPTIONS
      rfc_dest_not_found          = 1
      cancel_button_pressed       = 2
      OTHERS                      = 3
            .
  IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
*    PERFORM check_transport USING     l_dest
*                            CHANGING  l_match.
*    IF l_match = abap_true.
* Now we can start getting the data and update the container for comparison
      PERFORM remote_table USING l_dest.
*    ELSE.
*      MESSAGE s105 WITH w_table.
*    ENDIF.
  ENDIF.
ENDFORM.                    &quot; SYNC_DATA
*&amp;---------------------------------------------------------------------*
*&amp;      Form  ONLI_COMMAND
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM onli_command .
  DATA: lo_data TYPE REF TO data.
  FIELD-SYMBOLS: &lt;lt_fs&gt; TYPE ANY TABLE.

  CREATE DATA lo_data TYPE STANDARD TABLE OF (wo_table-&gt;w_table).

  PERFORM select_data IN PROGRAM (w_prog) USING    wo_table
                                                   *rseumod-tbmaxsel
                                          CHANGING lo_data.

  ASSIGN lo_data-&gt;* TO &lt;lt_fs&gt;.

  IF sy-subrc = 0.
    CALL FUNCTION &apos;ZSY60_DISPLAY_TABLE&apos;
      EXPORTING
        it_table = &lt;lt_fs&gt;
        io_se16  = wo_table.
  ELSE.
* We should have error handling here.
  ENDIF.
ENDFORM.                    &quot; ONLI_COMMAND</include_source>
   </include>
   <include NAME="LZSY60F03" VARCL="X" SUBC="I" APPL="S" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY60F03 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CHECK_MANDT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&gt;P_IT_SEL_FIELDS  text
*----------------------------------------------------------------------*
FORM check_mandt  USING    pt_sel_fields TYPE zsy6_t_sel_fields.

  READ TABLE pt_sel_fields TRANSPORTING NO FIELDS WITH KEY datatype = &apos;CLNT&apos;.

  IF sy-subrc = 0.
    w_mandt = abap_true.
  ELSE.
    CLEAR w_mandt.
  ENDIF.

ENDFORM.                    &quot; CHECK_MANDT
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CONVERT_DATA
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&gt;P_LO_DATA  text
*      &lt;--P_ET_DATA  text
*----------------------------------------------------------------------*
FORM convert_data  USING    po_data TYPE REF TO data
                   CHANGING pt_data TYPE soli_tab.

  DATA: l_string TYPE string.
  DATA: lo_document TYPE REF TO cl_xml_document.

  FIELD-SYMBOLS: &lt;fs&gt; TYPE STANDARD TABLE.

  ASSIGN po_data-&gt;* TO &lt;fs&gt;.

  CREATE OBJECT lo_document.

  lo_document-&gt;create_with_data(
      dataobject   =  &lt;fs&gt;
*    size    = 0
         ).

  lo_document-&gt;render_2_string(
*  EXPORTING
*    pretty_print = &apos;X&apos;
     IMPORTING
*    retcode      =
       stream       = l_string
*    size         =
         ).

  pt_data = cl_document_bcs=&gt;string_to_soli( ip_string = l_string  ).


ENDFORM.                    &quot; CONVERT_DATA
*&amp;---------------------------------------------------------------------*
*&amp;      Form  REMOTE_TABLE
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&gt;P_L_DEST  text
*----------------------------------------------------------------------*
FORM remote_table  USING    p_dest TYPE rfcdes-rfcdest.
  DATA:   lt_report        TYPE tchar255,
          l_sysid          TYPE sysysid,
          lt_sel_fields    TYPE zsy6_t_sel_fields,
          lt_data          TYPE soli_tab,
          ls_data          TYPE soli,
          l_string         TYPE string,
          lo_data          TYPE REF TO data.

  DATA: lo_document TYPE REF TO cl_xml_document.

  FIELD-SYMBOLS: &lt;lt_fs&gt; TYPE ANY TABLE.

  lt_sel_fields = wo_table-&gt;get_sel_fields( ).
  w_prog = wo_table-&gt;create_name( i_table = wo_table-&gt;w_table ).
  READ REPORT w_prog INTO lt_report .

  l_sysid = sy-sysid.

  CALL FUNCTION &apos;ZSY60_READ_REMOTE_TABLE&apos; DESTINATION p_dest
    EXPORTING
      i_tbmaxsel       = w_tbmaxsel
      i_table          = wo_table-&gt;w_table
      it_sel_fields    = lt_sel_fields
      it_report        = lt_report
    IMPORTING
      et_data          = lt_data
    CHANGING
      x_sysid          = l_sysid
    EXCEPTIONS
      no_lock_possible = 1
      OTHERS           = 2.

  IF sy-subrc = 0.
    LOOP AT lt_data INTO ls_data.
      CONCATENATE l_string ls_data-line INTO l_string.
    ENDLOOP.

    CREATE OBJECT lo_document.
    lo_document-&gt;parse_string( stream = l_string  ).

    CREATE DATA lo_data TYPE STANDARD TABLE OF (w_table).
    ASSIGN  lo_data-&gt;* TO &lt;lt_fs&gt;.
    IF sy-subrc = 0.
      lo_document-&gt;get_data(
*  EXPORTING
*    name       =
*  IMPORTING
*    retcode    =
        CHANGING
          dataobject = &lt;lt_fs&gt;
             ).
    ENDIF.

    wo_grid-&gt;add_remote( EXPORTING i_sysid = l_sysid
                                   io_data = lo_data ) .

    w_sync_allowed = &apos;D&apos;.
  ELSE.
* error handling missing
  ENDIF.
ENDFORM.                    &quot; REMOTE_TABLE
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CHECK_TRANSPORT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&gt;P_L_DEST  text
*      &lt;--P_L_MATCH  text
*----------------------------------------------------------------------*
FORM check_transport  USING    p_dest   TYPE rfcdes-rfcdest
                      CHANGING p_match  TYPE abap_bool.

  DATA:   l_korrnum        TYPE verskorrno,
          l_korrnum_dest   TYPE verskorrno.
* Get transport/version dest
  CALL FUNCTION &apos;ZSY60_GET_TABLE_VERSION&apos; DESTINATION p_dest
    EXPORTING
      i_table   = w_table
    IMPORTING
      e_korrnum = l_korrnum_dest
    EXCEPTIONS
      no_table  = 1
      OTHERS    = 2.
  IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
* Get transport/version local
    CALL FUNCTION &apos;ZSY60_GET_TABLE_VERSION&apos;
      EXPORTING
        i_table   = w_table
      IMPORTING
        e_korrnum = l_korrnum
      EXCEPTIONS
        no_table  = 1
        OTHERS    = 2.
    IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ELSE.
      IF l_korrnum = l_korrnum_dest.
        p_match = abap_true.
      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.                    &quot; CHECK_TRANSPORT</include_source>
   </include>
   <include NAME="LZSY60F05" VARCL="X" SUBC="I" APPL="S" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY60F05 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CREATE_SEL_GRID
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM create_sel_grid .
  DATA: ls_layout      TYPE lvc_s_layo,
        ls_variant     TYPE disvariant, &quot;for parameter IS_VARIANT
        l_toolbar      TYPE c,
        ls_row         TYPE lvc_s_row,
        ls_col         TYPE lvc_s_col.

  IF cl_salv_table=&gt;is_offline( ) EQ if_salv_c_bool_sap=&gt;false.
    IF wo_container IS NOT BOUND.
      CREATE OBJECT wo_container
        EXPORTING
          container_name = &apos;CONTAINER_SEL_GRID&apos;.

      CREATE OBJECT wo_sel_grid
        EXPORTING
          i_parent          = wo_container
        EXCEPTIONS
          error_cntl_create = 1
          error_cntl_init   = 2
          error_cntl_link   = 3
          error_dp_create   = 4
          OTHERS            = 5.

      IF sy-subrc &lt;&gt; 0.
      ENDIF.

      CLEAR ls_layout.
*    ls_layout-cwidth_opt = abap_true.
      ls_layout-no_headers = abap_true.
      ls_layout-no_rowmark = abap_true.
      ls_layout-no_toolbar = abap_true.
      ls_layout-no_f4      = abap_true.

*  ls_layout-edit       = abap_true.

      wo_sel_grid-&gt;set_table_for_first_display(
       EXPORTING
         i_bypassing_buffer            = abap_true
         is_layout                     = ls_layout
        CHANGING
          it_outtab                     = &lt;fs_sel_t&gt;
          it_fieldcatalog               = wt_sel_fcat
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
             ).
      IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.

      CALL METHOD wo_sel_grid-&gt;set_ready_for_input
        EXPORTING
          i_ready_for_input = 1.

      wo_sel_grid-&gt;set_focus( control = wo_sel_grid ).
      ls_row-index = 1.
      ls_col-fieldname = w_fieldname.
      CALL METHOD wo_sel_grid-&gt;set_current_cell_via_id
        EXPORTING
          is_row_id    = ls_row
          is_column_id = ls_col.
    ENDIF.
  ENDIF.

ENDFORM.                    &quot; CREATE_SEL_GRID
*&amp;---------------------------------------------------------------------*
*&amp;      Form  DATA_CHANGED
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM data_changed .
  DATA: l_valid TYPE char01,
        ls_stable TYPE lvc_s_stbl.

  wo_sel_grid-&gt;check_changed_data( IMPORTING e_valid =  l_valid  ).
  IF l_valid = abap_false.
*    REFRESH &lt;fs_sel_t&gt;.
    ls_stable-row = abap_true.
    ls_stable-col = abap_true.
    wo_sel_grid-&gt;refresh_table_display( is_stable = ls_stable ) .

  ELSE.
    wo_sel_grid-&gt;free( ) .
    wo_container-&gt;free( ) .
    CLEAR wo_sel_grid.
    CLEAR wo_container.
    SET SCREEN 0. LEAVE SCREEN.
  ENDIF.
ENDFORM.                    &quot; DATA_CHANGED</include_source>
   </include>
   <include NAME="LZSY60I01" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16I01 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  USER_COMMAND_0001  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0001 INPUT.

  CASE ok_code.
    WHEN &apos;BACK&apos; OR &apos;EXIT&apos;.
      wo_grid-&gt;unlock_table( ).
      LEAVE TO SCREEN 0 .
    WHEN &apos;SAVE&apos;.
      wo_grid-&gt;save( ).
      w_display_only = abap_true.
      IF wo_grid-&gt;w_sync = abap_true.
        w_sync_allowed = &apos;D&apos;.
      ELSE.
        w_sync_allowed = abap_true.
      ENDIF.
      w_display = &apos;Display&apos;(014).
    WHEN &apos;CHANGE&apos;.
      PERFORM display_change.
    WHEN &apos;SYNC&apos;.
      PERFORM sync_data.
    WHEN &apos;ADJUST&apos;.
      wo_grid-&gt;adjust_local_from_remote( ).
    WHEN &apos;UPDATE&apos;.
      wo_grid-&gt;update_with( ).
    WHEN &apos;MSG&apos;.
      wo_grid-&gt;msg_show( ).
    WHEN &apos;FNAM&apos;.
      PERFORM options_change CHANGING *rseumod.
      wo_grid-&gt;change_user_settings( is_rseumod = *rseumod ).
  ENDCASE.

ENDMODULE.                 &quot; USER_COMMAND_0001  INPUT
*&amp;---------------------------------------------------------------------*
*&amp;      Module  EXIT  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.

  CASE ok_code.
    WHEN &apos;BACK&apos; OR &apos;EXIT&apos; OR &apos;CANCEL&apos;.
      wo_grid-&gt;unlock_table( ).
      LEAVE TO SCREEN 0 .
  ENDCASE.

ENDMODULE.                 &quot; EXIT  INPUT</include_source>
   </include>
   <include NAME="LZSY60I02" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16I02 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  USER_COMMAND_0002  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0002 INPUT.

  CASE ok_code.
    WHEN &apos;E&apos; OR &apos;ENDE&apos; OR &apos;ECAN&apos;.
      LEAVE TO SCREEN 0.
    WHEN &apos;ONLI&apos;.
      perform onli_command.
    WHEN &apos;FNAM&apos;.
      PERFORM options_change CHANGING *rseumod.
    WHEN &apos;SEOP&apos;.
      IF wo_table IS BOUND.
        CALL SCREEN 0004 STARTING AT 15 4
                         ENDING   AT 96 23.
      ENDIF.
    WHEN &apos;AEIN&apos;.
      PERFORM get_count   IN PROGRAM (w_prog) USING     wo_table
                                                        *rseumod-tbmaxsel
                                              CHANGING  w_count
                                                        w_tbmaxsel.

      CALL SCREEN 0003 STARTING AT 10 5
                       ENDING   AT 58 9.

  ENDCASE.
  CLEAR ok_code.
ENDMODULE.                 &quot; USER_COMMAND_0002  INPUT</include_source>
   </include>
   <include NAME="LZSY60I03" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16I03 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  USER_COMMAND_0003  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module USER_COMMAND_0003 input.
  set screen 0. leave screen.
endmodule.                 &quot; USER_COMMAND_0003  INPUT</include_source>
   </include>
   <include NAME="LZSY60I04" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16I04 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  USER_COMMAND_0004  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0004 INPUT.
  CASE ok_code.
    WHEN &apos;ENTER&apos;.
      w_mandt = wo_table-&gt;close_dialog( ).
      LEAVE TO TRANSACTION z_c_sy6_main=&gt;c_tcode AND SKIP FIRST SCREEN.
    WHEN &apos;CANCEL&apos;.
  ENDCASE.
  SET SCREEN 0.
  LEAVE SCREEN.
ENDMODULE.                 &quot; USER_COMMAND_0004  INPUT</include_source>
   </include>
   <include NAME="LZSY60I05" VARCL="X" SUBC="I" APPL="S" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY60I05 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  USER_COMMAND_0005  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0005 INPUT.
  CASE ok_code.
    WHEN &apos;CANCEL&apos;.
      REFRESH &lt;fs_sel_t&gt;.
      wo_sel_grid-&gt;free( ) .
      wo_container-&gt;free( ) .
      CLEAR wo_sel_grid.
      CLEAR wo_container.
      SET SCREEN 0. LEAVE SCREEN.
    WHEN OTHERS.
      PERFORM data_changed.
  ENDCASE.
ENDMODULE.                 &quot; USER_COMMAND_0005  INPUT</include_source>
   </include>
   <include NAME="LZSY60O01" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16O01 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  STATUS_0001  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0001 OUTPUT.

  PERFORM status_0001.

ENDMODULE.                 &quot; STATUS_0001  OUTPUT
*&amp;---------------------------------------------------------------------*
*&amp;      Module  SCREEN_UPDATE  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE screen_update OUTPUT.
  PERFORM screen_0001.
ENDMODULE.                 &quot; SCREEN_UPDATE  OUTPUT</include_source>
   </include>
   <include NAME="LZSY60O02" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16O02 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  STATUS_0002  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0002 OUTPUT.

  SET PF-STATUS &apos;0002&apos;.
  SET TITLEBAR  &apos;0002&apos; WITH w_table.

ENDMODULE.                 &quot; STATUS_0002  OUTPUT</include_source>
   </include>
   <include NAME="LZSY60O03" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16O03 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  STATUS_0003  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module STATUS_0003 output.

  SET PF-STATUS &apos;0003&apos;.
  SET TITLEBAR  &apos;0003&apos;.

endmodule.                 &quot; STATUS_0003  OUTPUT</include_source>
   </include>
   <include NAME="LZSY60O04" VARCL="X" SUBC="I" APPL="S" LEVL="700" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY_SE16O04 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  STATUS_0004  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0004 OUTPUT.

  SET PF-STATUS &apos;0004&apos;.
  SET TITLEBAR  &apos;0004&apos; WITH w_table.

  wo_table-&gt;show_dialog( ).


ENDMODULE.                 &quot; STATUS_0004  OUTPUT</include_source>
   </include>
   <include NAME="LZSY60O05" VARCL="X" SUBC="I" APPL="S" RMAND="333" RLOAD="E" UCCHECK="X">
    <include_source>*----------------------------------------------------------------------*
***INCLUDE LZSY60O05 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  STATUS_0005  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0005 OUTPUT.

  SET PF-STATUS &apos;0003&apos;.
  SET TITLEBAR  &apos;0005&apos;.

ENDMODULE.                 &quot; STATUS_0005  OUTPUT
*&amp;---------------------------------------------------------------------*
*&amp;      Module  CREATE_GRID  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE create_grid OUTPUT.
  PERFORM create_sel_grid.
ENDMODULE.                 &quot; CREATE_GRID  OUTPUT</include_source>
   </include>
   <include NAME="LZSY60TOP" VARCL="X" DBAPL="S" DBNA="D$" SUBC="I" APPL="*" RMAND="333" FIXPT="X" LDBNAME="D$S" UCCHECK="X">
    <include_source>FUNCTION-POOL zsy60 MESSAGE-ID es.

TABLES : *rseumod.

FIELD-SYMBOLS: &lt;fs&gt; TYPE ANY.

DATA: w_table            TYPE tabname,
      w_fieldname        TYPE fieldname,
      w_fieldnumber(3)   TYPE n,
      w_dynnr            TYPE dynnr,
      w_count            TYPE i,
      w_tbmaxsel         TYPE i,
      w_prog             TYPE programm VALUE z_c_sy6_main=&gt;c_progname,
      wt_soli            TYPE soli_tab,
      wo_field           TYPE REF TO data.


DATA: wo_table       TYPE REF TO z_c_sy6_table,
      wo_grid        TYPE REF TO z_c_sy6_grid,
      wo_data        TYPE REF TO data,
      ok_code        TYPE sy-ucomm,
      w_display_only TYPE flag,
      w_display      TYPE char20 VALUE &apos;Display&apos;,
      w_sync_allowed TYPE abap_bool VALUE abap_true,
      w_mandt        TYPE flag.

DATA: w_name001 TYPE default_va,
      w_name002 TYPE default_va,
      w_name003 TYPE default_va,
      w_name004 TYPE default_va,
      w_name005 TYPE default_va,
      w_name006 TYPE default_va,
      w_name007 TYPE default_va,
      w_name008 TYPE default_va,
      w_name009 TYPE default_va,
      w_name010 TYPE default_va,
      w_name011 TYPE default_va,
      w_name012 TYPE default_va,
      w_name013 TYPE default_va,
      w_name014 TYPE default_va,
      w_name015 TYPE default_va,
      w_name016 TYPE default_va,
      w_name017 TYPE default_va,
      w_name018 TYPE default_va,
      w_name019 TYPE default_va,
      w_name020 TYPE default_va,
      w_name031 TYPE default_va,
      w_name032 TYPE default_va,
      w_name033 TYPE default_va,
      w_name034 TYPE default_va,
      w_name035 TYPE default_va,
      w_name036 TYPE default_va,
      w_name037 TYPE default_va,
      w_name038 TYPE default_va,
      w_name039 TYPE default_va,
      w_name040 TYPE default_va,
      w_name041 TYPE default_va,
      w_name042 TYPE default_va,
      w_name043 TYPE default_va,
      w_name044 TYPE default_va,
      w_name045 TYPE default_va,
      w_name046 TYPE default_va,
      w_name047 TYPE default_va,
      w_name048 TYPE default_va,
      w_name049 TYPE default_va,
      w_name050 TYPE default_va,
      w_name051 TYPE default_va,
      w_name052 TYPE default_va,
      w_name053 TYPE default_va,
      w_name054 TYPE default_va,
      w_name055 TYPE default_va,
      w_name056 TYPE default_va,
      w_name057 TYPE default_va,
      w_name058 TYPE default_va,
      w_name059 TYPE default_va,
      w_name060 TYPE default_va,
      w_name061 TYPE default_va,
      w_name062 TYPE default_va,
      w_name063 TYPE default_va,
      w_name064 TYPE default_va,
      w_name065 TYPE default_va,
      w_name066 TYPE default_va,
      w_name067 TYPE default_va,
      w_name068 TYPE default_va,
      w_name069 TYPE default_va,
      w_name070 TYPE default_va,
      w_name071 TYPE default_va,
      w_name072 TYPE default_va,
      w_name073 TYPE default_va,
      w_name074 TYPE default_va,
      w_name075 TYPE default_va,
      w_name076 TYPE default_va,
      w_name077 TYPE default_va,
      w_name078 TYPE default_va,
      w_name079 TYPE default_va,
      w_name080 TYPE default_va,
      w_name081 TYPE default_va,
      w_name082 TYPE default_va,
      w_name083 TYPE default_va,
      w_name084 TYPE default_va,
      w_name085 TYPE default_va,
      w_name086 TYPE default_va,
      w_name087 TYPE default_va,
      w_name088 TYPE default_va,
      w_name089 TYPE default_va,
      w_name090 TYPE default_va,
      w_name091 TYPE default_va,
      w_name092 TYPE default_va,
      w_name093 TYPE default_va,
      w_name094 TYPE default_va,
      w_name095 TYPE default_va,
      w_name096 TYPE default_va,
      w_name097 TYPE default_va,
      w_name098 TYPE default_va,
      w_name099 TYPE default_va,
      w_name100 TYPE default_va.

DATA: wo_sel_grid  TYPE REF TO cl_gui_alv_grid,
      wo_sel_data  TYPE REF TO data,
      wo_container TYPE REF TO cl_gui_custom_container.

DATA: ws_sel_fcat TYPE lvc_s_fcat,
      wt_sel_fcat TYPE lvc_t_fcat.

FIELD-SYMBOLS: &lt;fs_sel_t&gt; TYPE STANDARD TABLE,
               &lt;fs_sel_s&gt; TYPE ANY.</include_source>
   </include>
  </includeprograms>
  <functionmodules>
   <functionmodule NAME="ZSY60_DISPLAY_TABLE" STEXT="Display table for maintenance">
    <importing PARAMETER="IT_TABLE" REFERENCE="X" TYP="TABLE"/>
    <importing PARAMETER="IO_SE16" TYP="REF TO Z_C_SY6_TABLE" REF_CLASS="X"/>
    <documentation PARAMETER="IT_TABLE" KIND="P" INDEX=" 001"/>
    <documentation PARAMETER="IO_SE16" KIND="P" STEXT="Table data" INDEX=" 002"/>
    <fm_source>DATA: l_lines TYPE i .

  wo_table = io_se16.
  w_table  = wo_table-&gt;w_table.
  w_prog   = wo_table-&gt;create_name( i_table = w_table ).

  PERFORM get_user_value.

  IF wo_grid IS NOT BOUND.
    TRY.
        CREATE OBJECT wo_grid
          EXPORTING
            i_container = &apos;CONTAINER&apos;.
      CATCH zcx_sy6_main .
    ENDTRY.
    w_display_only = abap_true.
  ELSE.
    w_display_only = wo_grid-&gt;w_display_only.
    IF w_display_only = abap_false.
      PERFORM display_change.
    ENDIF.
  ENDIF.

  w_sync_allowed = abap_true.

  PERFORM get_count   IN PROGRAM (w_prog) USING    wo_table
                                                   *rseumod-tbmaxsel
                                          CHANGING w_count
                                                   w_tbmaxsel.

* We need for sync. Otherwise we miss the selections.
  wo_grid-&gt;set_for_display( i_mandt  = io_se16-&gt;w_mandt
                            i_table  = w_table
                            it_table = it_table ).


  DESCRIBE TABLE it_table LINES l_lines.

  IF l_lines =  *rseumod-tbmaxsel.
    MESSAGE s016(es) WITH *rseumod-tbmaxsel.
  ENDIF.

  CALL SCREEN 0001.</fm_source>
    <functionModuleDocumentation/>
   </functionmodule>
   <functionmodule NAME="ZSY60_CALL_SELECTION" STEXT="Call selection screen">
    <importing PARAMETER="I_TABLE" REFERENCE="X" TYP="TABNAME"/>
    <exceptions EXCEPTION="NO_SELECTION_SCREEN"/>
    <documentation PARAMETER="I_TABLE" KIND="P" STEXT="Table Name" INDEX=" 001"/>
    <documentation PARAMETER="NO_SELECTION_SCREEN" KIND="X" STEXT="No Selection screen created" INDEX=" 002"/>
    <fm_source>DATA: ls_trdir TYPE trdir.
*
  w_table = i_table.
  CLEAR w_mandt.

  PERFORM get_user_value.

  IF wo_table IS BOUND.
    wo_table-&gt;set_table( EXPORTING i_table = w_table
                                   i_mandt = w_mandt ).
  ELSE.
    CREATE OBJECT wo_table
      EXPORTING
        i_mandt = w_mandt
        i_table = w_table.
  ENDIF.

* let&apos;s check the selection screen prog.
  w_prog = wo_table-&gt;create_name( i_table = w_table ).

  SELECT SINGLE * INTO ls_trdir
         FROM  trdir
         WHERE  name  = w_prog.
  IF sy-subrc EQ 0 .
* Now we check wc_table.
    IF wo_table IS BOUND.
      wo_table-&gt;set_table( EXPORTING i_table = w_table
                                     i_mandt = w_mandt ).
    ELSE.
      CREATE OBJECT wo_table
        EXPORTING
          i_mandt = w_mandt
          i_table = w_table.
    ENDIF.

    PERFORM set_screen_options.

    CALL SCREEN 0002.
  ELSE.
    RAISE no_selection_screen.
  ENDIF.</fm_source>
    <functionModuleDocumentation/>
   </functionmodule>
   <functionmodule NAME="ZSY60_GET_TABLE" REMOTE="R" STEXT="Get table info to check for select">
    <importing PARAMETER="I_TABLE" TYP="TABNAME"/>
    <exporting PARAMETER="E_AS4DATE" TYP="AS4DATE"/>
    <exceptions EXCEPTION="NO_TABLE"/>
    <documentation PARAMETER="I_TABLE" KIND="P" STEXT="Table Name" INDEX=" 001"/>
    <documentation PARAMETER="E_AS4DATE" KIND="P" STEXT="Date of Last Change" INDEX=" 002"/>
    <documentation PARAMETER="NO_TABLE" KIND="X" STEXT="Table does not exist" INDEX=" 003"/>
    <fm_source>DATA: ls_dd02l   TYPE dd02l.

  SELECT SINGLE * FROM dd02l
                  INTO ls_dd02l
                  WHERE tabname   = i_table
                  AND   as4local  = &apos;A&apos;
                  AND   as4vers   = &apos;0000&apos;.

  IF sy-subrc EQ 0 .
    e_as4date = ls_dd02l-as4date.
  ELSE.
    RAISE no_table.
  ENDIF.</fm_source>
    <functionModuleDocumentation/>
   </functionmodule>
   <functionmodule NAME="ZSY60_GET_TABLE_VERSION" REMOTE="R" STEXT="Get table version for table comparison">
    <importing PARAMETER="I_TABLE" TYP="TABNAME"/>
    <exporting PARAMETER="E_KORRNUM" TYP="VERSKORRNO"/>
    <exceptions EXCEPTION="NO_TABLE"/>
    <documentation PARAMETER="I_TABLE" KIND="P" STEXT="Table Name" INDEX=" 001"/>
    <documentation PARAMETER="E_KORRNUM" KIND="P" STEXT="Version management: Version request number" INDEX=" 002"/>
    <documentation PARAMETER="NO_TABLE" KIND="X" STEXT="Table does not exist" INDEX=" 003"/>
    <fm_source>DATA: lt_versiod     TYPE TABLE OF vrsd,
        lt_version     TYPE TABLE OF vrsn,
        l_lines        TYPE i,
        ls_vrsn        TYPE vrsd.

  DATA: l_objname TYPE vrsd-objname,
        l_objtype TYPE vrsd-objtype VALUE &apos;TABD&apos;.

  l_objname = i_table.

  CALL FUNCTION &apos;SVRS_GET_VERSION_DIRECTORY_46&apos;
    EXPORTING
      objname      = l_objname
      objtype      = l_objtype
    TABLES
      lversno_list = lt_version
      version_list = lt_versiod
    EXCEPTIONS
      no_entry     = 1
      OTHERS       = 2.
  IF sy-subrc &lt;&gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
    READ TABLE lt_versiod INTO ls_vrsn WITH KEY versno = &apos;00000&apos;.
    IF sy-subrc = 0 AND ls_vrsn-korrnum IS NOT INITIAL.
* We have the right KORRNUM
    ELSE.
      SORT lt_versiod BY versno DESCENDING.
      READ TABLE lt_versiod INTO ls_vrsn INDEX 1.
    ENDIF.
  ENDIF.

  IF ls_vrsn-korrnum IS NOT INITIAL.
    e_korrnum = ls_vrsn-korrnum .
  ELSE.
    RAISE no_table.
  ENDIF.</fm_source>
    <functionModuleDocumentation/>
   </functionmodule>
   <functionmodule NAME="ZSY60_READ_REMOTE_TABLE" REMOTE="R" STEXT="Read data with RFC to compare/update">
    <importing PARAMETER="I_TBMAXSEL" TYP="TBMAXSEL"/>
    <importing PARAMETER="I_TABLE" TYP="TABNAME"/>
    <importing PARAMETER="IT_SEL_FIELDS" TYP="ZSY6_T_SEL_FIELDS"/>
    <importing PARAMETER="IT_REPORT" TYP="TCHAR255"/>
    <exporting PARAMETER="ET_DATA" TYP="SOLI_TAB"/>
    <changing PARAMETER="X_SYSID" TYP="SYSYSID"/>
    <exceptions EXCEPTION="NO_LOCK_POSSIBLE"/>
    <documentation PARAMETER="I_TBMAXSEL" KIND="P" STEXT="Maximum Number of Selected Entries" INDEX=" 001"/>
    <documentation PARAMETER="I_TABLE" KIND="P" STEXT="Table Name" INDEX=" 002"/>
    <documentation PARAMETER="IT_SEL_FIELDS" KIND="P" STEXT="Table type for ZSY6_S_SEL_FIELDS" INDEX=" 003"/>
    <documentation PARAMETER="IT_REPORT" KIND="P" STEXT="Table of CHAR255" INDEX=" 004"/>
    <documentation PARAMETER="ET_DATA" KIND="P" STEXT="Objcont and Objhead as Table Type" INDEX=" 005"/>
    <documentation PARAMETER="X_SYSID" KIND="P" STEXT="Name of the SAP System" INDEX=" 006"/>
    <documentation PARAMETER="NO_LOCK_POSSIBLE" KIND="X" STEXT="Error duing program lock" INDEX=" 007"/>
    <fm_source>* 1st Let&apos;s build the selection string.
  DATA: l_where TYPE string.
  DATA: lo_data TYPE REF TO data.
  FIELD-SYMBOLS: &lt;lt_fs&gt; TYPE ANY TABLE.

  PERFORM get_user_value.

  PERFORM check_mandt USING it_sel_fields.

  w_prog   = z_c_sy6_main=&gt;create_name( i_table = i_table ).

  z_c_sy6_main=&gt;lock_prog( EXPORTING i_prog = w_prog
                           EXCEPTIONS no_lock_possible = 1
                                      OTHERS           = 2 ).
  IF sy-subrc &lt;&gt; 0.
    RAISE no_lock_possible.
  ENDIF.

  IF x_sysid &lt;&gt; sy-sysid.
    INSERT REPORT w_prog FROM it_report
                               DIRECTORY ENTRY z_c_sy6_main=&gt;ws_trdir.
    x_sysid = sy-sysid.
  ENDIF.

  CREATE OBJECT wo_table
    EXPORTING
      i_mandt = w_mandt
      i_table = i_table.

  w_table  = wo_table-&gt;w_table.

  PERFORM set_selection  IN PROGRAM (w_prog) USING  it_sel_fields.

  CREATE DATA lo_data TYPE STANDARD TABLE OF (wo_table-&gt;w_table).

  PERFORM select_data IN PROGRAM (w_prog) USING    wo_table
                                                   i_tbmaxsel
                                          CHANGING lo_data.

  PERFORM convert_data USING    lo_data
                       CHANGING et_data.

  z_c_sy6_main=&gt;unlock_prog( i_prog = w_prog ).</fm_source>
    <functionModuleDocumentation/>
   </functionmodule>
   <functionmodule NAME="ZSY60_UPDATE_WITH" STEXT="Get value form user for update selection">
    <importing PARAMETER="I_TABNAME" REFERENCE="X" TYP="TABNAME"/>
    <importing PARAMETER="I_FIELDNAME" REFERENCE="X" TYP="FIELDNAME"/>
    <importing PARAMETER="I_TEXT" REFERENCE="X" TYP="AS4TEXT"/>
    <changing PARAMETER="XO_DATA" REFERENCE="X" TYP="REF TO DATA" REF_CLASS="X"/>
    <exceptions EXCEPTION="NO_UPDATE"/>
    <documentation PARAMETER="I_TABNAME" KIND="P" STEXT="Table Name" INDEX=" 001"/>
    <documentation PARAMETER="I_FIELDNAME" KIND="P" STEXT="Field Name" INDEX=" 002"/>
    <documentation PARAMETER="I_TEXT" KIND="P" STEXT="Table Name" INDEX=" 003"/>
    <documentation PARAMETER="XO_DATA" KIND="P" INDEX=" 004"/>
    <documentation PARAMETER="NO_UPDATE" KIND="X" STEXT="Update has been canceled" INDEX=" 005"/>
    <fm_source_new>DATA: lo_addit                TYPE REF TO cl_abap_elemdescr,
        lo_addit_table          TYPE REF TO cl_abap_tabledescr,
        lo_addit_struc          TYPE REF TO cl_abap_structdescr,
        lt_components_tab1      TYPE cl_abap_structdescr=&gt;component_table,
        lt_components_tab       TYPE cl_abap_structdescr=&gt;component_table,
        ls_components           TYPE abap_componentdescr.
  DATA: lo_data                 TYPE REF TO data,
        lo_table                TYPE REF TO cl_abap_tabledescr,
        lo_struc                TYPE REF TO cl_abap_structdescr.
  DATA: lt_dfies                TYPE ddfields,
        ls_dfies                TYPE dfies.

  FIELD-SYMBOLS: &lt;fs&gt; TYPE ANY,
                 &lt;fs1&gt; TYPE ANY.

  lo_addit            ?= cl_abap_typedescr=&gt;describe_by_name( &apos;AS4TEXT&apos; ).
  ls_components-type   = lo_addit           .
  ls_components-name   = &apos;___TEXT&apos;   .
  INSERT ls_components INTO TABLE lt_components_tab.
  ls_dfies = lo_addit-&gt;get_ddic_field( ).
  INSERT ls_dfies INTO TABLE lt_dfies.
  lo_addit            ?= cl_abap_typedescr=&gt;describe_by_data_ref( xo_data ).
  ls_components-type   = lo_addit           .
  ls_components-name   = i_fieldname   .
  INSERT ls_components INTO TABLE lt_components_tab.
  ls_dfies = lo_addit-&gt;get_ddic_field( ).
  INSERT ls_dfies INTO TABLE lt_dfies.
  &quot;create new line type
  TRY.
      lo_struc = cl_abap_structdescr=&gt;create( p_components = lt_components_tab
                                              p_strict     = abap_false ).
    CATCH cx_sy_struct_creation.
      RETURN.
  ENDTRY.
  lo_table = cl_abap_tabledescr=&gt;create( lo_struc ).

  CREATE DATA wo_sel_data   TYPE HANDLE lo_table.
  ASSIGN wo_sel_data-&gt;* TO &lt;fs_sel_t&gt;.
  CREATE DATA lo_data LIKE LINE OF &lt;fs_sel_t&gt;.
  ASSIGN lo_data-&gt;* TO &lt;fs_sel_s&gt;.

  ASSIGN COMPONENT 1 OF STRUCTURE &lt;fs_sel_s&gt; TO &lt;fs&gt;.
  &lt;fs&gt; = i_text.
  INSERT &lt;fs_sel_s&gt; INTO   TABLE &lt;fs_sel_t&gt;.

  REFRESH wt_sel_fcat.

  LOOP AT lt_dfies INTO ls_dfies.
    CLEAR ws_sel_fcat.
    ws_sel_fcat-col_pos = sy-tabix.
    MOVE-CORRESPONDING ls_dfies TO ws_sel_fcat.
    CASE ws_sel_fcat-col_pos.
      WHEN 1.
        ws_sel_fcat-fieldname = &apos;___TEXT&apos;.
        ws_sel_fcat-col_opt = &apos;A&apos;.
      WHEN 2.
        w_fieldname = i_fieldname.
        ws_sel_fcat-fieldname = i_fieldname.
        ws_sel_fcat-tabname   = &apos;1&apos;.
*        ws_sel_fcat-ref_field = i_fieldname.
*        ws_sel_fcat-ref_table = i_tabname.
        ws_sel_fcat-edit      = abap_true.
    ENDCASE.
    INSERT ws_sel_fcat INTO TABLE wt_sel_fcat.
  ENDLOOP.

  CALL SCREEN 0005 STARTING AT  20 10
                   ENDING AT    80 11.

  READ TABLE &lt;fs_sel_t&gt; ASSIGNING &lt;fs_sel_s&gt; INDEX 1.
  IF sy-subrc = 0.
    ASSIGN COMPONENT 2 OF STRUCTURE &lt;fs_sel_s&gt; TO &lt;fs&gt;.
    ASSIGN xo_data-&gt;* TO &lt;fs1&gt;.
    IF &lt;fs&gt; IS ASSIGNED AND &lt;fs1&gt; IS ASSIGNED.
      &lt;fs1&gt; = &lt;fs&gt;.
    ENDIF.
  ELSE.
    RAISE no_update.
  ENDIF.</fm_source_new>
    <functionModuleDocumentation/>
   </functionmodule>
  </functionmodules>
 </FUGR>
 <PROG NAME="ZSY6U001F01" VARCL="X" SUBC="I" RSTAT="K" RMAND="333" RLOAD="E" UCCHECK="X">
  <textPool>
   <language SPRAS="E">
    <textElement ID="R" ENTRY="Include ZSY6U001F01" LENGTH="19 "/>
   </language>
  </textPool>
  <source>*&amp;---------------------------------------------------------------------*
*&amp;  Include           ZSY6U001F01
*&amp;---------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Form  GET_COUNT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM get_count    USING    pc_se16  TYPE REF TO z_c_sy6_table
                           p_maxsel TYPE tbmaxsel
                  CHANGING p_count TYPE i
                           p_max   TYPE tbmaxsel.

  DATA: l_string      TYPE string.

  l_string = pc_se16-&gt;get_string( ) .

  IF l_string IS INITIAL.
    SELECT COUNT( * ) INTO p_count
           FROM (pc_se16-&gt;w_table).
  ELSE.
    IF pc_se16-&gt;w_mandt = abap_true.
      SELECT COUNT( * ) INTO p_count
             FROM (pc_se16-&gt;w_table) CLIENT SPECIFIED
             WHERE (l_string).
    ELSE.
      SELECT COUNT( * ) INTO p_count
             FROM (pc_se16-&gt;w_table)
             WHERE (l_string).
    ENDIF.
  ENDIF.

  IF p_maxsel &gt; p_count.
    p_max = p_count.
  ELSE.
    p_max = p_maxsel.
  ENDIF.

ENDFORM.                    &quot; GET_COUNT
*&amp;---------------------------------------------------------------------*
*&amp;      Form  SELECT_DATA
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM select_data  USING    pc_se16  TYPE REF TO z_c_sy6_table
                           p_maxsel TYPE tbmaxsel
                  CHANGING po_data  TYPE REF TO data.

  DATA: l_string      TYPE string,
        l_count       TYPE i,
        lt_sel_fields TYPE zsy6_t_sel_fields,
        l_field       TYPE fieldname.

  FIELD-SYMBOLS: &lt;lt_fs&gt;   TYPE ANY TABLE.

  IF po_data IS NOT BOUND.
    CREATE DATA po_data TYPE STANDARD TABLE OF (pc_se16-&gt;w_table).
  ENDIF.

  ASSIGN po_data-&gt;* TO &lt;lt_fs&gt;.

  IF sy-subrc = 0.
    l_string = pc_se16-&gt;get_string( ) .

    IF l_string IS INITIAL.
      SELECT *
             INTO TABLE &lt;lt_fs&gt; UP TO p_maxsel ROWS
             FROM (pc_se16-&gt;w_table).
    ELSE.

      lt_sel_fields = pc_se16-&gt;get_sel_fields( ).
      PERFORM get_selection CHANGING lt_sel_fields.
      pc_se16-&gt;set_sel_fields( EXPORTING it_sel_fields = lt_sel_fields ).

      IF pc_se16-&gt;w_mandt = abap_true.
        SELECT *
               INTO TABLE &lt;lt_fs&gt; UP TO p_maxsel ROWS
               FROM (pc_se16-&gt;w_table) CLIENT SPECIFIED
               WHERE (l_string).
      ELSE.
        SELECT *
               INTO TABLE &lt;lt_fs&gt; UP TO p_maxsel ROWS
               FROM (pc_se16-&gt;w_table)
               WHERE (l_string).
      ENDIF.
    ENDIF.
  ELSE.
* We should have error handling here.
  ENDIF.
ENDFORM.                    &quot; SELECT_DATA
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CLEAR_SELECT_OPTION
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM clear_select_option USING    p_name   TYPE default_va.
  DATA: l_tname  TYPE default_va.

  FIELD-SYMBOLS: &lt;lt_fs&gt; TYPE ANY TABLE,
                 &lt;ls_fs&gt; TYPE ANY.

  ASSIGN (p_name) TO &lt;ls_fs&gt;.
  IF sy-subrc EQ 0 .
    CLEAR   &lt;ls_fs&gt;.
    CONCATENATE p_name &apos;[]&apos; INTO l_tname.
    ASSIGN (l_tname) TO &lt;lt_fs&gt;.
    IF sy-subrc EQ 0 .
      REFRESH &lt;lt_fs&gt;.
    ENDIF.
  ENDIF.

ENDFORM.                    &quot; CLEAR_SELECT_OPTION
*&amp;---------------------------------------------------------------------*
*&amp;      Form  SET_SELECTION
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM set_selection  USING  pt_sel_fields TYPE zsy6_t_sel_fields.

  DATA: lt_sel_fields TYPE zsy6_t_sel_fields,
        ls_sel_fields TYPE zsy6_s_sel_fields,
        ls_selection  TYPE zsy6_s_selection,
        l_count       TYPE i,
        l_field       TYPE fieldname.

  FIELD-SYMBOLS: &lt;lt_fs&gt;   TYPE ANY TABLE,
                 &lt;st_fs&gt;   TYPE ANY TABLE,
                 &lt;ss_fs&gt;   TYPE ANY,
                 &lt;fs&gt;      TYPE ANY,
                 &lt;fs1&gt;     TYPE ANY.


  LOOP AT pt_sel_fields INTO ls_sel_fields.
    CONCATENATE ls_sel_fields-selname &apos;[]&apos; INTO l_field.
    ASSIGN (l_field) TO &lt;st_fs&gt;.
    ASSIGN (ls_sel_fields-selname) TO &lt;ss_fs&gt;.
    IF &lt;ss_fs&gt; IS ASSIGNED AND &lt;st_fs&gt; IS  ASSIGNED.
      LOOP AT ls_sel_fields-selection INTO ls_selection.
        CLEAR: l_count.
        DO 4 TIMES.
          ADD 1 TO l_count .
          ASSIGN COMPONENT l_count OF STRUCTURE &lt;ss_fs&gt; TO &lt;fs&gt;.
          ASSIGN COMPONENT l_count OF STRUCTURE ls_selection TO &lt;fs1&gt;.
          IF &lt;fs&gt; IS ASSIGNED AND &lt;fs1&gt; IS ASSIGNED.
            &lt;fs&gt; = &lt;fs1&gt;.
          ENDIF.
        ENDDO.
        INSERT &lt;ss_fs&gt; INTO TABLE &lt;st_fs&gt;.
      ENDLOOP.
    ENDIF.
  ENDLOOP.

ENDFORM.                    &quot; SET_SELECTION
*&amp;---------------------------------------------------------------------*
*&amp;      Form  SET_SELECTION
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM get_selection  CHANGING  pt_sel_fields  TYPE zsy6_t_sel_fields.

  DATA: ls_selection  TYPE zsy6_s_selection,
        l_count       TYPE i,
        l_field       TYPE fieldname.

  FIELD-SYMBOLS: &lt;lt_fs&gt;   TYPE ANY TABLE,
                 &lt;st_fs&gt;   TYPE STANDARD TABLE,
                 &lt;ss_fs&gt;   TYPE ANY,
                 &lt;fs_ls&gt;   TYPE zsy6_s_sel_fields,
                 &lt;fs&gt;      TYPE ANY,
                 &lt;fs1&gt;     TYPE ANY.

  LOOP AT pt_sel_fields ASSIGNING &lt;fs_ls&gt;.
    CONCATENATE &lt;fs_ls&gt;-selname &apos;[]&apos; INTO l_field.
    ASSIGN (l_field) TO &lt;st_fs&gt;.
    IF sy-subrc = 0.
      REFRESH &lt;fs_ls&gt;-selection.
      LOOP AT &lt;st_fs&gt; ASSIGNING &lt;ss_fs&gt;.
        CLEAR: l_count.
        DO 4 TIMES.
          ADD 1 TO l_count .
          ASSIGN COMPONENT l_count OF STRUCTURE &lt;ss_fs&gt; TO &lt;fs&gt;.
          ASSIGN COMPONENT l_count OF STRUCTURE ls_selection TO &lt;fs1&gt;.
          IF &lt;fs&gt; IS ASSIGNED AND &lt;fs1&gt; IS ASSIGNED.
            &lt;fs1&gt; = &lt;fs&gt;.
          ENDIF.
        ENDDO.
        INSERT ls_selection INTO TABLE &lt;fs_ls&gt;-selection.
      ENDLOOP.
    ENDIF.
  ENDLOOP.

ENDFORM.                    &quot; SET_SELECTION</source>
 </PROG>
 <PROG NAME="ZSY6M001TOP" VARCL="X" SUBC="I" LEVL="700" RSTAT="K" RMAND="333" RLOAD="E" UCCHECK="X">
  <textPool>
   <language SPRAS="E">
    <textElement ID="R" ENTRY="Include ZSY_SE16TOP" LENGTH="19 "/>
   </language>
  </textPool>
  <source>*&amp;---------------------------------------------------------------------*
*&amp;  Include           ZSY6M001TOP
*&amp;---------------------------------------------------------------------*
program zsy6m001 message-id mo.

type-pools: abap.

data: w_tabname  type c,
      w_table    type tabname,
      ws_trdir   type trdir,
      ws_rseumod type rseumod,
      w_error    type flag.

data: ok_code        type sy-ucomm,
      wt_report      type standard table of char255.

data: wc_se16    type ref to z_c_sy6_table.</source>
 </PROG>
 <PROG NAME="ZSY6M001O01" VARCL="X" SUBC="I" LEVL="700" RSTAT="K" RMAND="333" RLOAD="E" UCCHECK="X">
  <textPool>
   <language SPRAS="E">
    <textElement ID="R" ENTRY="Include ZSY_SE16O01" LENGTH="19 "/>
   </language>
  </textPool>
  <source>*----------------------------------------------------------------------*
***INCLUDE ZSY6M001O01 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  STATUS_0001  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0001 OUTPUT.

  SET PF-STATUS &apos;0001&apos;.
  SET TITLEBAR  &apos;0001&apos;.

ENDMODULE.                 &quot; STATUS_0001  OUTPUT
*&amp;---------------------------------------------------------------------*
*&amp;      Module  CHECK_AUTHORISATION  OUTPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE check_authorisation OUTPUT.

  PERFORM check_authorisations.

ENDMODULE.                 &quot; CHECK_AUTHORISATION  OUTPUT</source>
 </PROG>
 <PROG NAME="ZSY6M001I01" VARCL="X" SUBC="I" LEVL="700" RSTAT="K" RMAND="333" RLOAD="E" UCCHECK="X">
  <textPool>
   <language SPRAS="E">
    <textElement ID="R" ENTRY="Include ZSY_SE16I01" LENGTH="19 "/>
   </language>
  </textPool>
  <source>*----------------------------------------------------------------------*
***INCLUDE ZSY6M001I01 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Module  USER_COMMAND_0001  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0001 INPUT.

  CASE ok_code.
    WHEN &apos;BACK&apos; OR &apos;EXIT&apos; OR &apos;CANCEL&apos;.
      LEAVE PROGRAM.
    WHEN &apos;HILF&apos;.
      PERFORM online_handbook.
    WHEN &apos;FNAM&apos;.
      PERFORM options_change.
    WHEN &apos;GEN &apos;.

      PERFORM check_table_entry.

      IF wc_se16-&gt;check_table( i_table = w_table ) EQ 0 .
        wc_se16-&gt;recreate_screen( i_flag = &apos;K&apos; ).
        MESSAGE s475(mo).
      ENDIF.

    WHEN &apos;ANZE&apos;.
      PERFORM check_table.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.                 &quot; USER_COMMAND_0001  INPUT
*&amp;---------------------------------------------------------------------*
*&amp;      Module  F4_OBJNAME  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE f4_objname INPUT.
  PERFORM f4_help_table.
ENDMODULE.                 &quot; F4_OBJNAME  INPUT
*&amp;---------------------------------------------------------------------*
*&amp;      Module  CHECK_TABLE  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE check_table INPUT.

  PERFORM check_table_entry.

ENDMODULE.                 &quot; CHECK_TABLE  INPUT
*&amp;---------------------------------------------------------------------*
*&amp;      Module  EXIT  INPUT
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  CASE ok_code.
    WHEN &apos;BACK&apos; OR &apos;EXIT&apos; OR &apos;CANCEL&apos;.
      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE.                 &quot; EXIT  INPUT</source>
 </PROG>
 <PROG NAME="ZSY6M001F01" VARCL="X" SUBC="I" LEVL="700" RSTAT="K" RMAND="333" RLOAD="E" UCCHECK="X">
  <textPool>
   <language SPRAS="E">
    <textElement ID="R" ENTRY="Include ZSY_SE16F01" LENGTH="19 "/>
   </language>
  </textPool>
  <source>*----------------------------------------------------------------------*
***INCLUDE ZSY6M001F01 .
*----------------------------------------------------------------------*
*&amp;---------------------------------------------------------------------*
*&amp;      Form  F4_HELP_TABLE
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM f4_help_table .
  DATA: dnum LIKE d020s-dnum.
  DATA: variant LIKE rsvar-variant.
  dnum = sy-dynnr.

  CALL FUNCTION &apos;RS_HELP_HANDLING&apos;
    EXPORTING
      dynpfield                 = &apos;W_TABLE&apos;
      dynpname                  = dnum
      object                    = &apos;TB  &apos;
      progname                  = &apos;ZSY6M001&apos;
      suppress_selection_screen = &apos;X&apos;
      variant                   = variant.

ENDFORM.                    &quot; F4_HELP_TABLE
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CHECK_TABLE
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM check_table .

  PERFORM check_table_entry.

  IF wc_se16-&gt;check_table( i_table = w_table ) EQ 0 .
    PERFORM get_screen.
  ELSE.
    CLEAR ws_trdir.
    PERFORM create_screen.
  ENDIF.

  IF w_table IS NOT INITIAL.
    IF wc_se16-&gt;w_create = abap_true.
      LEAVE TO TRANSACTION z_c_sy6_main=&gt;c_tcode AND SKIP FIRST SCREEN.
    ELSE.
      CALL FUNCTION &apos;ZSY60_CALL_SELECTION&apos;
        EXPORTING
          i_table = w_table.
    ENDIF.
  ENDIF.

ENDFORM.                    &quot; CHECK_TABLE
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CREATE_SCREEN
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM create_screen.
  DATA: l_prog   TYPE programm,
        ls_trdir TYPE trdir,
        lt_sel_fields TYPE zsy6_t_sel_fields,
        lt_key_fields TYPE zsy6_t_sel_fields.

  l_prog = wc_se16-&gt;create_name( i_table = w_table ).

  SELECT SINGLE *
         INTO ls_trdir
         FROM  trdir
         WHERE  name  = l_prog.
  IF sy-subrc &lt;&gt; 0 .
    lt_sel_fields = wc_se16-&gt;get_sel_fields( ).
    lt_key_fields = wc_se16-&gt;get_key_fields( ).
    wt_report = wc_se16-&gt;create_report_screen( i_table       = w_table
                                               it_sel_fields = lt_sel_fields
                                               it_key_fields = lt_key_fields
                                               i_prog = l_prog
                                               i_flag = &apos;K&apos; ).

    ls_trdir-name = l_prog.

    INSERT REPORT l_prog FROM wt_report
                            DIRECTORY ENTRY wc_se16-&gt;ws_trdir.
    COMMIT WORK.
  ENDIF.
ENDFORM.                    &quot; CREATE_SCREEN
*&amp;---------------------------------------------------------------------*
*&amp;      Form  GET_SCREEN
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM get_screen.
  DATA: l_as4date   TYPE as4date.

  CALL FUNCTION &apos;ZSY60_GET_TABLE&apos;
    EXPORTING
      i_table   = w_table
    IMPORTING
      e_as4date = l_as4date
    EXCEPTIONS
      no_table  = 1
      OTHERS    = 2.

  IF sy-subrc EQ 0 .
    IF wc_se16-&gt;w_as4date &lt; l_as4date.
      wc_se16-&gt;recreate_screen( i_flag = &apos;K&apos; ).
    ENDIF.
  ELSE.
    MESSAGE a001 WITH &apos;Table does not exist&apos;(002).
  ENDIF.

ENDFORM.                    &quot; GET_SCREEN
*&amp;---------------------------------------------------------------------*
*&amp;      Form  ONLINE_HANDBOOK
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM online_handbook .

  CALL FUNCTION &apos;RS_TOOLDOCU_ACCESS&apos;
       EXPORTING
            tool_type = &apos;SE16&apos;
       EXCEPTIONS
            OTHERS.

ENDFORM.                    &quot; ONLINE_HANDBOOK
*&amp;---------------------------------------------------------------------*
*&amp;      Form  OPTIONS_CHANGE
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM options_change .

  CALL FUNCTION &apos;RS_WORKBENCH_CUSTOMIZING&apos;
       EXPORTING
            choice          = &apos;DB&apos;
*          SUPPRESS_DIALOG =
       IMPORTING
            setting         = ws_rseumod
       EXCEPTIONS
            OTHERS          = 1.
*  prseumod = rseumod.

ENDFORM.                    &quot; OPTIONS_CHANGE
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CHECK_TABLE_ENTRY
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM check_table_entry .
  DATA: l_table  TYPE tabname.
  DATA: l_lang   TYPE tcp0c-langu,
        l_cntry  TYPE tcp0c-country,
        l_mod    TYPE tcp0c-modifier,
        l_mandt  TYPE cccliindep,
        ls_dd02l TYPE dd02l.

  GET LOCALE LANGUAGE l_lang COUNTRY l_cntry MODIFIER l_mod.
  SET LOCALE LANGUAGE l_lang COUNTRY l_cntry.

  TRANSLATE w_table TO UPPER CASE.

  l_table = w_table.

  IF w_table IS INITIAL.
    CLEAR ok_code.
    MESSAGE e410(mo).
  ELSE.
    CALL FUNCTION &apos;RS_DATABROWSE_CHECK_GENERATION&apos;
      EXPORTING
        table_name         = l_table
        action             = &apos;S&apos;
      EXCEPTIONS
        db_not_exists      = 1
        no_permission      = 2
        no_table_name      = 3
        table_is_structure = 4
        OTHERS             = 5.

    CASE sy-subrc.
      WHEN 0 OR 2.
* We are in business.
      WHEN 1.
        CLEAR w_table.
        MESSAGE e403(mo) WITH l_table.
      WHEN 3.
        CLEAR w_table.
        MESSAGE e404(mo) WITH l_table.
      WHEN 4.
        CLEAR w_table.
        MESSAGE e408(mo) WITH l_table.
      WHEN OTHERS.
        CLEAR w_table.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDCASE.
  ENDIF.

  IF w_table IS NOT INITIAL.
    IF wc_se16 IS BOUND.
      wc_se16-&gt;set_table( EXPORTING i_table = w_table
                                    i_mandt = l_mandt ).
    ELSE.
      CREATE OBJECT wc_se16
        EXPORTING
          i_mandt = l_mandt
          i_table = w_table.
    ENDIF.
  ENDIF.

ENDFORM.                    &quot; CHECK_TABLE_ENTRY
*&amp;---------------------------------------------------------------------*
*&amp;      Form  CHECK_AUTHORISATIONS
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt;  p1        text
*  &lt;--  p2        text
*----------------------------------------------------------------------*
FORM check_authorisations .
*
*  AUTHORITY-CHECK OBJECT &apos;S_TCODE&apos;
*          ID &apos;TCD&apos; FIELD &apos;SU01&apos;.
*
*  IF sy-subrc &lt;&gt; 0.
*    MESSAGE E077(S#) WITH &apos;ZSY666&apos;.
*  ENDIF.
*
ENDFORM.                    &quot; CHECK_AUTHORISATIONS</source>
 </PROG>
 <PROG NAME="ZSY6M001" VARCL="X" SUBC="M" RSTAT="K" RMAND="333" RLOAD="E" FIXPT="X" UCCHECK="X">
  <textPool>
   <language SPRAS="1">
    <textElement ID="I" KEY="001" ENTRY="Too many screens" LENGTH="16 "/>
    <textElement ID="I" KEY="002" ENTRY="Table does not exist" LENGTH="20 "/>
    <textElement ID="R" ENTRY="Test program for all tables" LENGTH="27 "/>
    <textElement ID="S" KEY="P_TABLE" ENTRY="D       ." LENGTH="9 "/>
   </language>
   <language SPRAS="3">
    <textElement ID="I" KEY="001" ENTRY="Too many screens" LENGTH="16 "/>
    <textElement ID="I" KEY="002" ENTRY="Table does not exist" LENGTH="20 "/>
    <textElement ID="R" ENTRY="Test program for all tables" LENGTH="27 "/>
    <textElement ID="S" KEY="P_TABLE" ENTRY="D       ." LENGTH="9 "/>
   </language>
   <language SPRAS="E">
    <textElement ID="I" KEY="001" ENTRY="Too many screens" LENGTH="16 "/>
    <textElement ID="I" KEY="002" ENTRY="Table does not exist" LENGTH="20 "/>
    <textElement ID="R" ENTRY="Test program for all tables" LENGTH="27 "/>
    <textElement ID="S" KEY="P_TABLE" ENTRY="D       ." LENGTH="9 "/>
   </language>
   <language SPRAS="H">
    <textElement ID="I" KEY="001" ENTRY="Too many screens" LENGTH="16 "/>
    <textElement ID="I" KEY="002" ENTRY="Table does not exist" LENGTH="20 "/>
    <textElement ID="R" ENTRY="Test program for all tables" LENGTH="27 "/>
    <textElement ID="S" KEY="P_TABLE" ENTRY="D       ." LENGTH="9 "/>
   </language>
   <language SPRAS="R">
    <textElement ID="I" KEY="001" ENTRY="Too many screens" LENGTH="16 "/>
    <textElement ID="I" KEY="002" ENTRY="Table does not exist" LENGTH="20 "/>
    <textElement ID="R" ENTRY="Test program for all tables" LENGTH="27 "/>
    <textElement ID="S" KEY="P_TABLE" ENTRY="D       ." LENGTH="9 "/>
   </language>
  </textPool>
  <dynpros>
   <dynpro PROG="ZSY6M001" DNUM="0001" FNUM="0001" BZMX="1 " BZBR="57 " MILI="192 " MICO="37 " MALI="0 " MACO="0 " NOLI="27 " NOCO="120 " VALP="0 " CUAN="G" SPRA="E" DTEXT="Select Table.">
    <dynprofield FNAM="DD03L-TABNAME" DIDX="0000" FLG1="30" FLG2="00" FLG3="00" FMB1="30" FMB2="00" LENG="0F" LINE="01" COLN="02" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" ITYP="2" AGLT="00" ADEZ="00" STXT="Table Name" RES1="                                                                                                                                                                                                                                                        X"/>
    <dynprofield FNAM="W_TABLE" DIDX="001E" FLG1="80" FLG2="0C" FLG3="A8" FMB1="00" FMB2="08" LENG="1E" LINE="01" COLN="1D" LANF="00" LBLK="00" LREP="00" PAID="DTB" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="?_____________________________"/>
    <dynprofield FNAM="OK_CODE" DIDX="0000" FLG1="80" FLG2="10" FLG3="00" FMB1="00" FMB2="00" LENG="14" LINE="FF" COLN="01" LTYP="O" LANF="00" LBLK="00" LREP="00" TYPE="CHAR" AGLT="00" ADEZ="00" STXT="____________________"/>
    <dynproflowsource>PROCESS BEFORE OUTPUT.
  MODULE status_0001.

  MODULE check_authorisation.

PROCESS AFTER INPUT.
  MODULE exit AT EXIT-COMMAND.

  FIELD: w_table MODULE check_table.

  MODULE user_command_0001.

PROCESS ON VALUE-REQUEST. &quot;F4-Funktionalität
  FIELD w_table MODULE f4_objname.</dynproflowsource>
   </dynpro>
  </dynpros>
  <pfstatus>
   <pfstatus_sta CODE="0001" MODAL="D" ACTCODE="000005" PFKCODE="000005" BUTCODE="0001" INT_NOTE="Table entry for transaction"/>
   <pfstatus_fun CODE="ANLE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_CREATE" ICON_ID="@0Y@" FUN_TEXT="Create Entries" PATH="E"/>
   <pfstatus_fun CODE="ANZE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_LIST" ICON_ID="@3W@" FUN_TEXT="Table Contents" PATH="T"/>
   <pfstatus_fun CODE="BACK" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Back"/>
   <pfstatus_fun CODE="BACK" TEXTNO="002" TYPE="E" TEXT_TYPE="S" TEXT_NAME="ICON_SYSTEM_BACK" ICON_ID="@2M@" FUN_TEXT="Back" ICON_TEXT="Back" PATH="B"/>
   <pfstatus_fun CODE="CANC" TEXTNO="001" TYPE="E" TEXT_TYPE="S" TEXT_NAME="ICON_CANCEL" ICON_ID="@0W@" FUN_TEXT="Cancel" PATH="A"/>
   <pfstatus_fun CODE="CANCEL" TEXTNO="001" TYPE="E" TEXT_TYPE="S" TEXT_NAME="ICON_CANCEL" ICON_ID="@0W@" FUN_TEXT="Cancel"/>
   <pfstatus_fun CODE="CHANGE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_TOGGLE_DISPLAY_CHANGE" ICON_ID="@3I@" FUN_TEXT="Change"/>
   <pfstatus_fun CODE="DISPLAY" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_DISPLAY" ICON_ID="@10@" FUN_TEXT="Display"/>
   <pfstatus_fun CODE="END" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Exit" PATH="X"/>
   <pfstatus_fun CODE="ENTER" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_OKAY" ICON_ID="@0V@" FUN_TEXT="Enter"/>
   <pfstatus_fun CODE="EXECUTE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_EXECUTE_OBJECT" ICON_ID="@15@" FUN_TEXT="Execute"/>
   <pfstatus_fun CODE="EXIT" TEXTNO="001" TYPE="E" TEXT_TYPE="S" FUN_TEXT="Exit"/>
   <pfstatus_fun CODE="FARB" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_ICON_LIST" ICON_ID="@3D@" FUN_TEXT="Color Legend..." PATH="C"/>
   <pfstatus_fun CODE="FNAM" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_TABLE_SETTINGS" ICON_ID="@36@" FUN_TEXT="User Parameters..." PATH="U"/>
   <pfstatus_fun CODE="GEN" TEXTNO="001" TEXT_TYPE="S" FUN_TEXT="Generate Program" PATH="P"/>
   <pfstatus_fun CODE="HILF" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_INFORMATION" ICON_ID="@0S@" FUN_TEXT="Online Manual" PATH="O"/>
   <pfstatus_fun CODE="SAVE" TEXTNO="001" TEXT_TYPE="S" TEXT_NAME="ICON_SYSTEM_SAVE" ICON_ID="@2L@" FUN_TEXT="Save"/>
   <pfstatus_men CODE="000001" NO="01" REF_TYPE="F" REF_CODE="ANZE" REF_NO="001"/>
   <pfstatus_men CODE="000001" NO="02" REF_TYPE="F" REF_CODE="ANLE" REF_NO="001"/>
   <pfstatus_men CODE="000001" NO="03" REF_TYPE="F" REF_CODE="GEN" REF_NO="001"/>
   <pfstatus_men CODE="000001" NO="04" REF_TYPE="S"/>
   <pfstatus_men CODE="000001" NO="05" REF_TYPE="F" REF_CODE="END" REF_NO="001"/>
   <pfstatus_men CODE="000002" NO="01" REF_TYPE="F" REF_CODE="CANC" REF_NO="001"/>
   <pfstatus_men CODE="000003" NO="01" REF_TYPE="F" REF_CODE="BACK" REF_NO="002"/>
   <pfstatus_men CODE="000004" NO="01" REF_TYPE="F" REF_CODE="FNAM" REF_NO="001"/>
   <pfstatus_men CODE="000005" NO="01" REF_TYPE="F" REF_CODE="FARB" REF_NO="001"/>
   <pfstatus_men CODE="000005" NO="02" REF_TYPE="F" REF_CODE="HILF" REF_NO="001"/>
   <pfstatus_men CODE="000006" NO="01" REF_TYPE="F" REF_CODE="ANZE" REF_NO="001"/>
   <pfstatus_men CODE="000006" NO="02" REF_TYPE="F" REF_CODE="ANLE" REF_NO="001"/>
   <pfstatus_men CODE="000006" NO="03" REF_TYPE="F" REF_CODE="GEN" REF_NO="001"/>
   <pfstatus_men CODE="000006" NO="04" REF_TYPE="S"/>
   <pfstatus_men CODE="000006" NO="05" REF_TYPE="F" REF_CODE="END" REF_NO="001"/>
   <pfstatus_men CODE="000007" NO="01" REF_TYPE="F" REF_CODE="CANC" REF_NO="001"/>
   <pfstatus_men CODE="000008" NO="01" REF_TYPE="F" REF_CODE="BACK" REF_NO="002"/>
   <pfstatus_men CODE="000009" NO="01" REF_TYPE="F" REF_CODE="FNAM" REF_NO="001"/>
   <pfstatus_men CODE="000010" NO="01" REF_TYPE="F" REF_CODE="FARB" REF_NO="001"/>
   <pfstatus_men CODE="000010" NO="02" REF_TYPE="F" REF_CODE="HILF" REF_NO="001"/>
   <pfstatus_mtx CODE="000001" TEXT_TYPE="S" TEXT="Table" PATH="T"/>
   <pfstatus_mtx CODE="000002" TEXT_TYPE="S" TEXT="Edit" PATH="E"/>
   <pfstatus_mtx CODE="000003" TEXT_TYPE="S" TEXT="Goto" PATH="G"/>
   <pfstatus_mtx CODE="000004" TEXT_TYPE="S" TEXT="Settings" PATH="S"/>
   <pfstatus_mtx CODE="000005" TEXT_TYPE="S" TEXT="Utilities" PATH="U"/>
   <pfstatus_mtx CODE="000006" TEXT_TYPE="S" TEXT="Table" PATH="T"/>
   <pfstatus_mtx CODE="000007" TEXT_TYPE="S" TEXT="Edit" PATH="E"/>
   <pfstatus_mtx CODE="000008" TEXT_TYPE="S" TEXT="Goto" PATH="G"/>
   <pfstatus_mtx CODE="000009" TEXT_TYPE="S" TEXT="Settings" PATH="S"/>
   <pfstatus_mtx CODE="000010" TEXT_TYPE="S" TEXT="Utilities" PATH="M"/>
   <pfstatus_mtx CODE="000011" TEXT_TYPE="S" TEXT="&lt;Object&gt;" INT_NOTE="Standard Supplement"/>
   <pfstatus_mtx CODE="000012" TEXT_TYPE="S" TEXT="Edit" PATH="E" INT_NOTE="Standard Supplement"/>
   <pfstatus_mtx CODE="000013" TEXT_TYPE="S" TEXT="Goto" PATH="G" INT_NOTE="Standard Supplement"/>
   <pfstatus_mtx CODE="000014" TEXT_TYPE="S" TEXT="Extras" PATH="A" INT_NOTE="Standard Supplement"/>
   <pfstatus_mtx CODE="000015" TEXT_TYPE="S" TEXT="Environment" PATH="V" INT_NOTE="Standard Supplement"/>
   <pfstatus_act CODE="000005" NO="01" MENUCODE="000001"/>
   <pfstatus_act CODE="000005" NO="02" MENUCODE="000002"/>
   <pfstatus_act CODE="000005" NO="03" MENUCODE="000003"/>
   <pfstatus_act CODE="000005" NO="04" MENUCODE="000004"/>
   <pfstatus_act CODE="000005" NO="05" MENUCODE="000005"/>
   <pfstatus_but PFK_CODE="000001" CODE="0001" NO="01" PFNO="25"/>
   <pfstatus_but PFK_CODE="000003" CODE="0001" NO="01" PFNO="08"/>
   <pfstatus_but PFK_CODE="000005" CODE="0001" NO="01" PFNO="07"/>
   <pfstatus_but PFK_CODE="000005" CODE="0001" NO="02" PFNO="05"/>
   <pfstatus_but PFK_CODE="000005" CODE="0001" NO="03" PFNO="06"/>
   <pfstatus_but PFK_CODE="000005" CODE="0001" NO="04" PFNO="32"/>
   <pfstatus_but PFK_CODE="000008" CODE="0001" NO="01" PFNO="00"/>
   <pfstatus_but PFK_CODE="000008" CODE="0001" NO="02" PFNO="12"/>
   <pfstatus_pfk CODE="000001" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
   <pfstatus_pfk CODE="000001" PFNO="03" FUNCODE="BACK" FUNNO="001"/>
   <pfstatus_pfk CODE="000001" PFNO="11" FUNCODE="SAVE" FUNNO="001"/>
   <pfstatus_pfk CODE="000001" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
   <pfstatus_pfk CODE="000001" PFNO="15" FUNCODE="EXIT" FUNNO="001"/>
   <pfstatus_pfk CODE="000001" PFNO="25" FUNCODE="CHANGE" FUNNO="001"/>
   <pfstatus_pfk CODE="000002" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
   <pfstatus_pfk CODE="000002" PFNO="03" FUNCODE="BACK" FUNNO="001"/>
   <pfstatus_pfk CODE="000002" PFNO="08" FUNCODE="EXECUTE" FUNNO="001"/>
   <pfstatus_pfk CODE="000002" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
   <pfstatus_pfk CODE="000002" PFNO="15" FUNCODE="EXIT" FUNNO="001"/>
   <pfstatus_pfk CODE="000003" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
   <pfstatus_pfk CODE="000003" PFNO="03" FUNCODE="BACK" FUNNO="001"/>
   <pfstatus_pfk CODE="000003" PFNO="08" FUNCODE="EXECUTE" FUNNO="001"/>
   <pfstatus_pfk CODE="000003" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
   <pfstatus_pfk CODE="000003" PFNO="15" FUNCODE="EXIT" FUNNO="001"/>
   <pfstatus_pfk CODE="000005" PFNO="00" FUNCODE="ANZE" FUNNO="001"/>
   <pfstatus_pfk CODE="000005" PFNO="03" FUNCODE="BACK" FUNNO="002"/>
   <pfstatus_pfk CODE="000005" PFNO="05" FUNCODE="ANLE" FUNNO="001"/>
   <pfstatus_pfk CODE="000005" PFNO="06" FUNCODE="FNAM" FUNNO="001"/>
   <pfstatus_pfk CODE="000005" PFNO="07" FUNCODE="ANZE" FUNNO="001"/>
   <pfstatus_pfk CODE="000005" PFNO="08" FUNCODE="GEN" FUNNO="001"/>
   <pfstatus_pfk CODE="000005" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
   <pfstatus_pfk CODE="000005" PFNO="15" FUNCODE="EXIT" FUNNO="001"/>
   <pfstatus_pfk CODE="000005" PFNO="32" FUNCODE="HILF" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="00" FUNCODE="ANZE" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="03" FUNCODE="BACK" FUNNO="002"/>
   <pfstatus_pfk CODE="000007" PFNO="05" FUNCODE="ANLE" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="06" FUNCODE="FNAM" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="07" FUNCODE="ANZE" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="08" FUNCODE="GEN" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="11" FUNCODE="SAVE" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="12" FUNCODE="CANC" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="15" FUNCODE="END" FUNNO="001"/>
   <pfstatus_pfk CODE="000007" PFNO="32" FUNCODE="HILF" FUNNO="001"/>
   <pfstatus_pfk CODE="000008" PFNO="00" FUNCODE="ENTER" FUNNO="001"/>
   <pfstatus_pfk CODE="000008" PFNO="12" FUNCODE="CANCEL" FUNNO="001"/>
   <pfstatus_set STATUS="0001" FUNCTION="ANZE"/>
   <pfstatus_set STATUS="0001" FUNCTION="BACK"/>
   <pfstatus_set STATUS="0001" FUNCTION="CANC"/>
   <pfstatus_set STATUS="0001" FUNCTION="CANCEL"/>
   <pfstatus_set STATUS="0001" FUNCTION="END"/>
   <pfstatus_set STATUS="0001" FUNCTION="EXIT"/>
   <pfstatus_set STATUS="0001" FUNCTION="FBEZ"/>
   <pfstatus_set STATUS="0001" FUNCTION="FNAM"/>
   <pfstatus_set STATUS="0001" FUNCTION="GEN"/>
   <pfstatus_set STATUS="0001" FUNCTION="HILF"/>
   <pfstatus_set STATUS="0001" FUNCTION="WEIT"/>
   <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000001" MODAL="D" INT_NOTE="Maitain table"/>
   <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000001" MODAL="D" INT_NOTE="Maitain table"/>
   <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000001" SUB_CODE="0001" MODAL="D" INT_NOTE="Maitain table"/>
   <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000002" MODAL="D" INT_NOTE="Start screen"/>
   <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000002" MODAL="D" INT_NOTE="Start screen"/>
   <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000002" SUB_CODE="0001" MODAL="D" INT_NOTE="Start screen"/>
   <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000003" MODAL="D" INT_NOTE="Start screen"/>
   <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000003" MODAL="D" INT_NOTE="Start screen"/>
   <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000003" SUB_CODE="0001" MODAL="D" INT_NOTE="Start screen"/>
   <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000004" MODAL="D" INT_NOTE="dfgd"/>
   <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000004" MODAL="D" INT_NOTE="dfgd"/>
   <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000004" SUB_CODE="0001" MODAL="D" INT_NOTE="dfgd"/>
   <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000005" MODAL="D" INT_NOTE="Initial Screen"/>
   <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000005" MODAL="D" INT_NOTE="List"/>
   <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000005" SUB_CODE="0001" MODAL="D" INT_NOTE="List"/>
   <pfstatus_doc OBJ_TYPE="A" OBJ_CODE="000006" MODAL="D" INT_NOTE="Initial Screen"/>
   <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000007" MODAL="D" INT_NOTE="List"/>
   <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000007" SUB_CODE="0001" MODAL="D" INT_NOTE="List"/>
   <pfstatus_doc OBJ_TYPE="P" OBJ_CODE="000008" MODAL="P" INT_NOTE="Field Selection"/>
   <pfstatus_doc OBJ_TYPE="B" OBJ_CODE="000008" SUB_CODE="0001" MODAL="P" INT_NOTE="Field Selection"/>
   <pfstatus_tit CODE="0001" TEXT="Table maintenance"/>
  </pfstatus>
  <source>*-----------------------------------------------------------------------*
*  Author        : RTURNHEIM                                            *
*  Date          : 01.01.2010                                           *
*                                                                       *
*  Description   : Table maintenance test programm                      *
*                                                                       *
*-----------------------------------------------------------------------*
*  Changes       :                                                      *
*  Author      Date     Description                                     *
*  RTURNHEIM__ 13.11.11 Rewrite with unlimit table logic_____________   *
*  RTURNHEIM__ 23.12.11 Correct table validation logic_______________   *
*  RTURNHEIM__ 24.01.13 Correct display/change logic  _______________   *
*  RTURNHEIM__ 23.09.14 Add authorisations checks____________________   *
*  RTURNHEIM__ 21.02.15 Remove authorisations checks_________________   *
*  RTURNHEIM__ 03.12.15 Correct error with exit comands on first screen *
*-----------------------------------------------------------------------*

include zsy6m001top.

include zsy6m001o01.
include zsy6m001i01.
include zsy6m001f01.</source>
 </PROG>
 <PROG NAME="ZSY6U001_T001W" DBAPL="S" DBNA="D$" SUBC="1" APPL="S" RMAND="333" FIXPT="X" LDBNAME="D$S" UCCHECK="X">
  <source>*----------------------------------------------------------------------*
*  Author        : RTURNHEIM                                                    *
*  Date          : 20130722                                                     *
*  Description   : Sub screen for table maintenance
*----------------------------------------------------------------------*
*  Changes       :                                                     *
*  Author       Date     Description                                   *
*----------------------------------------------------------------------*

report ZSY6U001_T001W .

tables: T001W .

DATA:  w_name001 type default_va value &apos;T001W-WERKS&apos;.

SELECTION-SCREEN BEGIN OF SCREEN 9000 AS SUBSCREEN.
  SELECT-OPTIONS: S_001   FOR  (w_name001).   &quot;WERKS
SELECTION-SCREEN END   OF SCREEN 9000 .

include  ZSY6U001F01.</source>
 </PROG>
 <TABL TABNAME="ZSY6_S_SEL_FIELDS" DDLANGUAGE="E" TABCLASS="INTTAB" DATMIN="0000000000" DATMAX="0000000000" DATAVG="0000000000" DDTEXT="Selection fields for se16 solution" AUTHCLASS="00" PROZPUFF="000" EXCLASS="4">
  <dd09l AS4VERS="0000" SCHFELDANZ="000"/>
  <dd03p TABNAME="ZSY6_S_SEL_FIELDS" FIELDNAME="FIELDNAME" DDLANGUAGE="E" POSITION="0001" ROLLNAME="FIELDNAME" ADMINFIELD="0" INTTYPE="C" INTLEN="000060" DOMNAME="FDNAME" ROUTPUTLEN="000000" MEMORYID="DFD" HEADLEN="10" SCRLEN1="10" SCRLEN2="15" SCRLEN3="18" DTELMASTER="D" DATATYPE="CHAR" LENG="000030" OUTPUTLEN="000030" DECIMALS="000000" ENTITYTAB="DD03L" MASK="  CHARE" MASKLEN="0000" DDTEXT="Field Name" REPTEXT="Field Name" SCRTEXT_S="Field" SCRTEXT_M="Field Name" SCRTEXT_L="Field Name" DOMNAME3L="FDNAME" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SEL_FIELDS" FIELDNAME="KEYFLAG" DDLANGUAGE="E" POSITION="0002" ROLLNAME="KEYFLAG" ADMINFIELD="0" INTTYPE="C" INTLEN="000002" DOMNAME="KEYFLAG" ROUTPUTLEN="000000" HEADLEN="03" SCRLEN1="00" SCRLEN2="18" SCRLEN3="18" DTELMASTER="D" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Identifies a key field of a table" REPTEXT="Key" SCRTEXT_M="Key field" SCRTEXT_L="Key field" DOMNAME3L="KEYFLAG" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SEL_FIELDS" FIELDNAME="VARNAME" DDLANGUAGE="E" POSITION="0003" ROLLNAME="FIELDNAME" ADMINFIELD="0" INTTYPE="C" INTLEN="000060" DOMNAME="FDNAME" ROUTPUTLEN="000000" MEMORYID="DFD" HEADLEN="10" SCRLEN1="10" SCRLEN2="15" SCRLEN3="18" DTELMASTER="D" DATATYPE="CHAR" LENG="000030" OUTPUTLEN="000030" DECIMALS="000000" ENTITYTAB="DD03L" MASK="  CHARE" MASKLEN="0000" DDTEXT="Field Name" REPTEXT="Field Name" SCRTEXT_S="Field" SCRTEXT_M="Field Name" SCRTEXT_L="Field Name" DOMNAME3L="FDNAME" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SEL_FIELDS" FIELDNAME="SELNAME" DDLANGUAGE="E" POSITION="0004" ROLLNAME="DEFAULT_VA" ADMINFIELD="0" INTTYPE="C" INTLEN="000150" DOMNAME="DEFAULT_VA" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DATATYPE="CHAR" LENG="000075" OUTPUTLEN="000075" DECIMALS="000000" MASK="  CHARE" MASKLEN="0000" DDTEXT="Default value for a DB column" SCRTEXT_S="DefaultVal" SCRTEXT_M="DefaultVal" SCRTEXT_L="DefaultVal" DOMNAME3L="DEFAULT_VA" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SEL_FIELDS" FIELDNAME="DATATYPE" DDLANGUAGE="E" POSITION="0005" ROLLNAME="DATATYPE_D" ADMINFIELD="0" INTTYPE="C" INTLEN="000008" DOMNAME="DATATYPE" ROUTPUTLEN="000000" HEADLEN="04" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="D" DATATYPE="CHAR" LENG="000004" OUTPUTLEN="000010" DECIMALS="000000" VALEXI="X" CONVEXIT="DTYPE" MASK="  CHARE" MASKLEN="0000" DDTEXT="Data Type in ABAP Dictionary" REPTEXT="DTyp" SCRTEXT_S="Data Type" SCRTEXT_M="Data Type" SCRTEXT_L="Data Type" DOMNAME3L="DATATYPE" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SEL_FIELDS" FIELDNAME="SELECTION" DDLANGUAGE="E" POSITION="0006" ROLLNAME="ZSY6_T_SELECTION" ADMINFIELD="0" INTLEN="000000" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DATATYPE="TTYP" LENG="000000" OUTPUTLEN="000000" DECIMALS="000000" MASK="  TTYPL" MASKLEN="0000" DDTEXT="Dyname select options" DEPTH="00" COMPTYPE="L" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
 </TABL>
 <TABL TABNAME="ZSY6_S_SELECTION" DDLANGUAGE="E" TABCLASS="INTTAB" DATMIN="0000000000" DATMAX="0000000000" DATAVG="0000000000" DDTEXT="Selection structure for genric selections" AUTHCLASS="00" PROZPUFF="000" EXCLASS="1">
  <dd09l AS4VERS="0000" SCHFELDANZ="000"/>
  <dd03p TABNAME="ZSY6_S_SELECTION" FIELDNAME="SIGN" DDLANGUAGE="E" POSITION="0001" ROLLNAME="DDSIGN" ADMINFIELD="0" INTTYPE="C" INTLEN="000002" DOMNAME="DDSIGN" ROUTPUTLEN="000000" HEADLEN="04" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DTELMASTER="D" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Type of SIGN component in row type of a Ranges type" REPTEXT="SIGN" DOMNAME3L="DDSIGN" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SELECTION" FIELDNAME="OPTION" DDLANGUAGE="E" POSITION="0002" ROLLNAME="DDOPTION" ADMINFIELD="0" INTTYPE="C" INTLEN="000004" DOMNAME="DDOPTION" ROUTPUTLEN="000000" HEADLEN="06" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DTELMASTER="D" DATATYPE="CHAR" LENG="000002" OUTPUTLEN="000002" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Type of OPTION component in row type of a Ranges type" REPTEXT="OPTION" DOMNAME3L="DDOPTION" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SELECTION" FIELDNAME="LOW" DDLANGUAGE="E" POSITION="0003" ROLLNAME="RSDSSELOP_" ADMINFIELD="0" INTTYPE="C" INTLEN="000090" DOMNAME="RSDSSELOPT" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="10" SCRLEN2="10" SCRLEN3="10" DTELMASTER="D" DATATYPE="CHAR" LENG="000045" OUTPUTLEN="000045" DECIMALS="000000" LOWERCASE="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="&apos;Generic&apos; SELECT-OPTION for Dynamic Selections" SCRTEXT_S="Selection" SCRTEXT_M="Selection" SCRTEXT_L="Selection" DOMNAME3L="RSDSSELOPT" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SELECTION" FIELDNAME="HIGH" DDLANGUAGE="E" POSITION="0004" ROLLNAME="RSDSSELOP_" ADMINFIELD="0" INTTYPE="C" INTLEN="000090" DOMNAME="RSDSSELOPT" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="10" SCRLEN2="10" SCRLEN3="10" DTELMASTER="D" DATATYPE="CHAR" LENG="000045" OUTPUTLEN="000045" DECIMALS="000000" LOWERCASE="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="&apos;Generic&apos; SELECT-OPTION for Dynamic Selections" SCRTEXT_S="Selection" SCRTEXT_M="Selection" SCRTEXT_L="Selection" DOMNAME3L="RSDSSELOPT" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
 </TABL>
 <TABL TABNAME="ZSY6_S_SEL" DDLANGUAGE="E" TABCLASS="INTTAB" DATMIN="0000000000" DATMAX="0000000000" DATAVG="0000000000" DDTEXT="Selection of field selection for table maintenance" AUTHCLASS="00" PROZPUFF="000" EXCLASS="2">
  <dd09l AS4VERS="0000" SCHFELDANZ="000"/>
  <dd03p TABNAME="ZSY6_S_SEL" FIELDNAME="ZZMARK" DDLANGUAGE="E" POSITION="0001" ROLLNAME="FLAG" ADMINFIELD="0" INTTYPE="C" INTLEN="000002" DOMNAME="FLAG" ROUTPUTLEN="000000" HEADLEN="55" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="D" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="General Flag" REPTEXT="Flag" SCRTEXT_S="Indicator" SCRTEXT_M="Indicator" SCRTEXT_L="Indicator" DOMNAME3L="FLAG" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" DEFFDNAME="FLAG" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SEL" FIELDNAME="FIELDNAME" DDLANGUAGE="E" POSITION="0002" ROLLNAME="FIELDNAME" ADMINFIELD="0" INTTYPE="C" INTLEN="000060" DOMNAME="FDNAME" ROUTPUTLEN="000000" MEMORYID="DFD" HEADLEN="10" SCRLEN1="10" SCRLEN2="15" SCRLEN3="18" DTELMASTER="D" DATATYPE="CHAR" LENG="000030" OUTPUTLEN="000030" DECIMALS="000000" ENTITYTAB="DD03L" MASK="  CHARE" MASKLEN="0000" DDTEXT="Field Name" REPTEXT="Field Name" SCRTEXT_S="Field" SCRTEXT_M="Field Name" SCRTEXT_L="Field Name" DOMNAME3L="FDNAME" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_SEL" FIELDNAME="FIELDTEXT" DDLANGUAGE="E" POSITION="0003" ROLLNAME="AS4TEXT" ADMINFIELD="0" INTTYPE="C" INTLEN="000120" DOMNAME="AS4TEXT" ROUTPUTLEN="000000" HEADLEN="20" SCRLEN1="10" SCRLEN2="18" SCRLEN3="18" DTELMASTER="D" DATATYPE="CHAR" LENG="000060" OUTPUTLEN="000060" DECIMALS="000000" LOWERCASE="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Short Description of Repository Objects" REPTEXT="Short Description" SCRTEXT_S="Short Text" SCRTEXT_M="Short Description" SCRTEXT_L="Short Description" DOMNAME3L="AS4TEXT" DEPTH="00" COMPTYPE="E" DEFFDNAME="KURZBESCHREIBUNG" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
 </TABL>
 <TABL TABNAME="ZSY6_S_MSG1" DDLANGUAGE="E" TABCLASS="INTTAB" DATMIN="0000000000" DATMAX="0000000000" DATAVG="0000000000" DDTEXT="keep track of error message lines" AUTHCLASS="00" PROZPUFF="000" EXCLASS="3">
  <dd09l AS4VERS="0000" SCHFELDANZ="000"/>
  <dd03p TABNAME="ZSY6_S_MSG1" FIELDNAME="ROW_ID" DDLANGUAGE="E" POSITION="0001" ROLLNAME="INT4" ADMINFIELD="0" INTTYPE="X" INTLEN="000004" DOMNAME="INT4" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="D" DATATYPE="INT4" LENG="000010" OUTPUTLEN="000010" DECIMALS="000000" SIGNFLAG="X" MASK="  INT4E" MASKLEN="0000" DDTEXT="Natural Number" SCRTEXT_S="Number" SCRTEXT_M="Number" SCRTEXT_L="Natural Number" DOMNAME3L="INT4" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_MSG1" FIELDNAME="LINENR" DDLANGUAGE="E" POSITION="0002" ROLLNAME="INT4" ADMINFIELD="0" INTTYPE="X" INTLEN="000004" DOMNAME="INT4" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="D" DATATYPE="INT4" LENG="000010" OUTPUTLEN="000010" DECIMALS="000000" SIGNFLAG="X" MASK="  INT4E" MASKLEN="0000" DDTEXT="Natural Number" SCRTEXT_S="Number" SCRTEXT_M="Number" SCRTEXT_L="Natural Number" DOMNAME3L="INT4" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
 </TABL>
 <TABL TABNAME="ZSYH_S_CONFIG" DDLANGUAGE="E" TABCLASS="INTTAB" DATMIN="0000000000" DATMAX="0000000000" DATAVG="0000000000" DDTEXT="Hotspot configuration structure" AUTHCLASS="00" PROZPUFF="000" EXCLASS="4">
  <dd09l AS4VERS="0000" SCHFELDANZ="000"/>
  <dd03p TABNAME="ZSYH_S_CONFIG" FIELDNAME="EVENT" DDLANGUAGE="E" POSITION="0001" ROLLNAME="ZZEVENT" ADMINFIELD="0" INTTYPE="C" INTLEN="000002" DOMNAME="ZZEVENT" ROUTPUTLEN="000000" HEADLEN="19" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="E" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Hotspot event logic" REPTEXT="Hotspot event logic" SCRTEXT_S="Hots. evt." SCRTEXT_M="Hotspot event" SCRTEXT_L="Hotspot event logic" DOMNAME3L="ZZEVENT" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSYH_S_CONFIG" FIELDNAME="CODE" DDLANGUAGE="E" POSITION="0002" ROLLNAME="ZZCODE" ADMINFIELD="0" INTTYPE="X" INTLEN="000001" DOMNAME="ZZCODE" ROUTPUTLEN="000000" HEADLEN="16" SCRLEN1="10" SCRLEN2="16" SCRLEN3="20" DTELMASTER="E" DATATYPE="INT1" LENG="000003" OUTPUTLEN="000003" DECIMALS="000000" VALEXI="X" MASK="  INT1E" MASKLEN="0000" DDTEXT="Transaction code 1 Create; 2 Change; 3 Display" REPTEXT="Transaction code" SCRTEXT_S="t. code" SCRTEXT_M="Transaction code" SCRTEXT_L="Transaction code" DOMNAME3L="ZZCODE" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSYH_S_CONFIG" FIELDNAME="TOOLBAR_INACTIVE" DDLANGUAGE="E" POSITION="0003" ROLLNAME="ZZTOOLBAR" ADMINFIELD="0" INTTYPE="C" INTLEN="000002" DOMNAME="FLAG" ROUTPUTLEN="000000" HEADLEN="07" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="E" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Object toolbar is inactive?" REPTEXT="Toolbar" SCRTEXT_S="Toolbar" SCRTEXT_M="Toolbar inact." SCRTEXT_L="Toolbar incative" DOMNAME3L="FLAG" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSYH_S_CONFIG" FIELDNAME="EXCLUDE_UCOMM" DDLANGUAGE="E" POSITION="0004" ROLLNAME="SYUCOMM_T" ADMINFIELD="0" INTLEN="000000" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DATATYPE="TTYP" LENG="000000" OUTPUTLEN="000000" DECIMALS="000000" MASK="  TTYPL" MASKLEN="0000" DDTEXT="Table for Function Codes" DEPTH="00" COMPTYPE="L" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
 </TABL>
 <TABL TABNAME="ZSY6_S_GRID" DDLANGUAGE="E" TABCLASS="INTTAB" DATMIN="0000000000" DATMAX="0000000000" DATAVG="0000000000" DDTEXT="Table maintenance include structure" AUTHCLASS="00" PROZPUFF="000" EXCLASS="1">
  <dd09l AS4VERS="0000" SCHFELDANZ="000"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___CODES" DDLANGUAGE="E" POSITION="0001" ROLLNAME="ZSY6CODES" ADMINFIELD="0" INTTYPE="C" INTLEN="000004" DOMNAME="ZSY6CODES" ROUTPUTLEN="000000" HEADLEN="15" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="E" DATATYPE="CHAR" LENG="000002" OUTPUTLEN="000002" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Comparison code" REPTEXT="Comparison code" SCRTEXT_S="Code" SCRTEXT_M="Comparison code" SCRTEXT_L="Comparison code" DOMNAME3L="ZSY6CODES" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___SYSID" DDLANGUAGE="E" POSITION="0002" ROLLNAME="SYSYSID" ADMINFIELD="0" INTTYPE="C" INTLEN="000016" DOMNAME="SYCHAR08" ROUTPUTLEN="000000" HEADLEN="10" SCRLEN1="10" SCRLEN2="20" SCRLEN3="30" DTELMASTER="D" DATATYPE="CHAR" LENG="000008" OUTPUTLEN="000008" DECIMALS="000000" MASK="  CHARE" MASKLEN="0000" DDTEXT="Name of SAP System" REPTEXT="SAP System" SCRTEXT_S="SAP System" SCRTEXT_M="SAP System ID" SCRTEXT_L="SAP System ID" DOMNAME3L="SYCHAR08" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___ORIGIN" DDLANGUAGE="E" POSITION="0003" ROLLNAME="ZSY6ORIGIN" ADMINFIELD="0" INTTYPE="C" INTLEN="000002" DOMNAME="ZSY6ORIGIN" ROUTPUTLEN="000000" HEADLEN="06" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="E" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Data origin" REPTEXT="Origin" SCRTEXT_S="Origin" SCRTEXT_M="Origin" SCRTEXT_L="Origin" DOMNAME3L="ZSY6ORIGIN" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___ROWCOLOR" DDLANGUAGE="E" POSITION="0004" ROLLNAME="SACCCOLOR" ADMINFIELD="0" INTTYPE="C" INTLEN="000008" DOMNAME="CHAR4" ROUTPUTLEN="000000" HEADLEN="11" SCRLEN1="05" SCRLEN2="05" SCRLEN3="11" DTELMASTER="D" DATATYPE="CHAR" LENG="000004" OUTPUTLEN="000004" DECIMALS="000000" MASK="  CHARE" MASKLEN="0000" DDTEXT="Grid ALV Line Color" REPTEXT="Line Color" SCRTEXT_S="Color" SCRTEXT_M="Color" SCRTEXT_L="Line Color" DOMNAME3L="CHAR4" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___ROWMARK" DDLANGUAGE="E" POSITION="0005" ROLLNAME="CHAR1" ADMINFIELD="0" INTTYPE="C" INTLEN="000002" DOMNAME="CHAR1" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DTELMASTER="D" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" MASK="  CHARE" MASKLEN="0000" DDTEXT="Single-Character Indicator" DOMNAME3L="CHAR1" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___CELLCOLOR" DDLANGUAGE="E" POSITION="0006" ROLLNAME="LVC_T_SCOL" ADMINFIELD="0" INTLEN="000000" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DATATYPE="TTYP" LENG="000000" OUTPUTLEN="000000" DECIMALS="000000" MASK="  TTYPL" MASKLEN="0000" DDTEXT="ALV control: Table for cell coloring" DEPTH="00" COMPTYPE="L" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___CELLSTYLE" DDLANGUAGE="E" POSITION="0007" ROLLNAME="LVC_T_STYL" ADMINFIELD="0" INTLEN="000000" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DATATYPE="TTYP" LENG="000000" OUTPUTLEN="000000" DECIMALS="000000" MASK="  TTYPL" MASKLEN="0000" DDTEXT="ALV Control: Style Table for Cells" DEPTH="00" COMPTYPE="L" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___UPDATEFLAG" DDLANGUAGE="E" POSITION="0008" ROLLNAME="UPDATE_TYPE" ADMINFIELD="0" INTTYPE="C" INTLEN="000002" DOMNAME="UPDATE_TYPE" ROUTPUTLEN="000000" HEADLEN="12" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="D" DATATYPE="CHAR" LENG="000001" OUTPUTLEN="000001" DECIMALS="000000" VALEXI="X" MASK="  CHARE" MASKLEN="0000" DDTEXT="Type of Change" REPTEXT="Change Type" SCRTEXT_S="ChangeType" SCRTEXT_M="Change Type" SCRTEXT_L="Change Type" DOMNAME3L="UPDATE_TYPE" SHLPORIGIN="F" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
  <dd03p TABNAME="ZSY6_S_GRID" FIELDNAME="___LINENR" DDLANGUAGE="E" POSITION="0009" ROLLNAME="INT4" ADMINFIELD="0" INTTYPE="X" INTLEN="000004" DOMNAME="INT4" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="10" SCRLEN2="15" SCRLEN3="20" DTELMASTER="D" DATATYPE="INT4" LENG="000010" OUTPUTLEN="000010" DECIMALS="000000" SIGNFLAG="X" MASK="  INT4E" MASKLEN="0000" DDTEXT="Natural Number" SCRTEXT_S="Number" SCRTEXT_M="Number" SCRTEXT_L="Natural Number" DOMNAME3L="INT4" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
 </TABL>
 <TRAN TCODE="ZSY666" PGMNA="ZSY6M001" DYPNO="0001" CINFO="04" ARBGB="&amp;&amp;">
  <tstct SPRSL="E" TCODE="ZSY666" TTEXT="Table maintenance"/>
  <tstcc TCODE="ZSY666" S_WIN32="X"/>
  <tstcp/>
  <rsstcd ST_PROG="X" DEVCLASS="$TMP"/>
 </TRAN>
 <TTYP TYPENAME="ZSY6_T_MSG1" DDLANGUAGE="E" ROWTYPE="ZSY6_S_MSG1" ROWKIND="S" DATATYPE="STRU" LENG="000000" DECIMALS="000000" ACCESSMODE="T" KEYDEF="D" KEYKIND="N" KEYFDCOUNT="0000" DDTEXT="keep track of error messages" TYPELEN="000008" CTLENG="000000" CTDECIMALS="000000" OCCURS="00000"/>
 <TTYP TYPENAME="ZSY6_T_RSTABLE" DDLANGUAGE="E" ROWTYPE="RSTABLE" ROWKIND="S" DATATYPE="STRU" LENG="000000" DECIMALS="000000" ACCESSMODE="T" KEYDEF="D" KEYKIND="N" KEYFDCOUNT="0000" DDTEXT="Table type for RSTABLE" TYPELEN="000300" CTLENG="000000" CTDECIMALS="000000" OCCURS="00000"/>
 <TTYP TYPENAME="ZSY6_T_STRING" DDLANGUAGE="E" DATATYPE="STRG" LENG="000256" DECIMALS="000000" ACCESSMODE="T" KEYDEF="D" KEYKIND="N" KEYFDCOUNT="0000" DDTEXT="Table of strings" TYPELEN="000008" CTLENG="000000" CTDECIMALS="000000" OCCURS="00000"/>
 <TTYP TYPENAME="ZSY6_T_SEL_FIELDS" DDLANGUAGE="E" ROWTYPE="ZSY6_S_SEL_FIELDS" ROWKIND="S" DATATYPE="STRU" LENG="000000" DECIMALS="000000" ACCESSMODE="T" KEYDEF="D" KEYKIND="N" KEYFDCOUNT="0000" DDTEXT="Table type for ZSY6_S_SEL_FIELDS" TYPELEN="000288" CTLENG="000000" CTDECIMALS="000000" OCCURS="00000"/>
 <TTYP TYPENAME="ZSY6_T_SELECTION" DDLANGUAGE="E" ROWTYPE="ZSY6_S_SELECTION" ROWKIND="S" DATATYPE="STRU" LENG="000000" DECIMALS="000000" ACCESSMODE="T" KEYDEF="D" KEYKIND="N" KEYFDCOUNT="0000" DDTEXT="Dyname select options" TYPELEN="000186" CTLENG="000000" CTDECIMALS="000000" OCCURS="00000"/>
 <TTYP TYPENAME="ZSY6_T_SEL" DDLANGUAGE="E" ROWTYPE="ZSY6_S_SEL" ROWKIND="S" DATATYPE="STRU" LENG="000000" DECIMALS="000000" ACCESSMODE="T" KEYDEF="D" KEYKIND="N" KEYFDCOUNT="0000" DDTEXT="Table type for ZSY6_S_SEL" TYPELEN="000182" CTLENG="000000" CTDECIMALS="000000" OCCURS="00000"/>
</nugget>
