CR LIST

*&---------------------------------------------------------------------*
*& Report  ZCR_LIST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZCR_LIST.


*---------------------------------------------------------------------*
* Overview transport requests for all systems and clients             *
*---------------------------------------------------------------------*
* Author : Michel PIOUD - Updated 28-Jan-09                           *
* HomePage : http://www.geocities.com/mpioud/Abap_programs.html       *
*---------------------------------------------------------------------*
* Macro definition
DEFINE mac_line.
  selection-screen begin of block b0&1.
  selection-screen begin of line.
  selection-screen position 1.
  parameters p_pgmid&1  type sctsobject-pgmid  modif id out.
  parameters p_objct&1  type sctsobject-object value check.
  selection-screen position 11.
  parameters p_objtx&1 type sctsobject-text visible length 19
                       lower case modif id 2d.
  selection-screen position 31.
  parameters p_objnm&1 type ty_objnam.
  selection-screen:
    pushbutton 77(4)  v_90&1 user-command zd&1.             "#EC NEEDED
  selection-screen end of line.
  selection-screen end of block b0&1.
END-OF-DEFINITION.
*---------------------------------------------------------------------*
* Macro definition
DEFINE mac_selection_screen.

at selection-screen on p_objct&1.

  perform f_selection_screen_object using p_objct&1
                                 changing p_pgmid&1
                                          p_objtx&1.

at selection-screen on block b0&1.

  if sscrfields-ucomm = 'ZD&1'.
    clear : p_pgmid&1, p_objct&1, p_objnm&1, p_objtx&1.
  endif.

  perform f_selection_screen using p_pgmid&1
                                   p_objct&1
                                   p_objnm&1
                                   gt_where&1.

at selection-screen on value-request for p_objnm&1.

  perform f_help_object_name using p_pgmid&1
                                   p_objct&1
                                   'P_OBJNM&1'
                          changing p_objnm&1.

END-OF-DEFINITION.
*---------------------------------------------------------------------*
TABLES sscrfields.                     " Screen fields
*---------------------------------------------------------------------*
TYPE-POOLS : slis.                     " Types for ALV
*---------------------------------------------------------------------*
TYPES :
  ty_trkorr     TYPE RANGE OF trkorr,
  ty_where_t    TYPE STANDARD TABLE OF char50,
  ty_objnam(43) TYPE c.
*---------------------------------------------------------------------*
DATA gt_tmstpalog TYPE tmstpalogs.
DATA gs_tmstpalog TYPE tmstpalog.
DATA gt_syslst    TYPE tmscsyslst_typ.
DATA gt_fieldcat  TYPE slis_t_fieldcat_alv.  " Field catalog
DATA gr_trkorr    TYPE RANGE OF trkorr.
DATA gt_where1    TYPE ty_where_t.
DATA gt_where2    TYPE ty_where_t.
DATA gt_where3    TYPE ty_where_t.
DATA gt_where4    TYPE ty_where_t.
DATA gt_where5    TYPE ty_where_t.
DATA gt_object_texts TYPE tr_object_texts.
DATA gt_e071      TYPE TABLE OF e071.
*---------------------------------------------------------------------*
FIELD-SYMBOLS :
  <gt_data>      TYPE STANDARD TABLE,  " Data to display
  <field_header> TYPE ANY.
*---------------------------------------------------------------------*
CONSTANTS:
  c_x VALUE 'X',
  c_eb9     TYPE syucomm VALUE '&EB9',
  c_refresh TYPE syucomm VALUE '&REFRESH',
  c_trkorr   TYPE fieldname VALUE 'TRKORR',
  c_checkbox TYPE fieldname VALUE 'CHECKBOX',
  c_colortab TYPE fieldname VALUE 'COLORTAB'.
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bl0 WITH FRAME TITLE text-bl0.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) text_100 FOR FIELD p_date_b.
PARAMETERS : p_date_b TYPE dats OBLIGATORY.
SELECTION-SCREEN PUSHBUTTON 58(4)  v_100 USER-COMMAND tbck7."#EC NEEDED
SELECTION-SCREEN PUSHBUTTON 65(4)  v_101 USER-COMMAND tbck. "#EC NEEDED
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) text_101 FOR FIELD p_date_e.
PARAMETERS : p_date_e TYPE dats OBLIGATORY DEFAULT sy-datum.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(28) text_102 FOR FIELD s_trkorr.
SELECT-OPTIONS s_trkorr FOR gs_tmstpalog-trkorr.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(28) text_103 FOR FIELD s_truser.
SELECT-OPTIONS s_truser FOR gs_tmstpalog-truser DEFAULT sy-uname
                        MATCHCODE OBJECT user_addr.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(28) text_104 FOR FIELD s_korrdv.
SELECT-OPTIONS s_korrdv FOR gs_tmstpalog-korrdev.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(28) text_105 FOR FIELD s_trfnct.
SELECT-OPTIONS s_trfnct FOR gs_tmstpalog-trfunction.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK bl0.

SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-bl1.
mac_line 1.
mac_line 2.
mac_line 3.
mac_line 4.
mac_line 5.
SELECTION-SCREEN END OF BLOCK bl1.

SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME TITLE text-bl2.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_format AS CHECKBOX.
SELECTION-SCREEN COMMENT 5(30) text_106 FOR FIELD p_format.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_nocolr AS CHECKBOX.
SELECTION-SCREEN COMMENT 5(30) text_107 FOR FIELD p_nocolr.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_alvlst AS CHECKBOX.
SELECTION-SCREEN COMMENT 5(30) text_108 FOR FIELD p_alvlst.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_iconrc AS CHECKBOX.
SELECTION-SCREEN COMMENT 5(30) text_109 FOR FIELD p_iconrc.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_no_rc AS CHECKBOX.
SELECTION-SCREEN COMMENT 5(30) text_110 FOR FIELD p_no_rc.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_nouser AS CHECKBOX.
SELECTION-SCREEN COMMENT 5(30) text_111 FOR FIELD p_nouser.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK bl2.

*---------------------------------------------------------------------*
LOAD-OF-PROGRAM.

  CALL FUNCTION 'TMS_CI_GET_SYSTEMLIST'
    EXPORTING
      iv_only_active              = c_x
    TABLES
      tt_syslst                   = gt_syslst
    EXCEPTIONS
      tms_is_not_active           = 1
      invalid_ci_conf_with_domain = 2
      no_systems                  = 3
      OTHERS                      = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  PERFORM read_object_table CHANGING gt_object_texts.

  v_901 = v_902 = v_903 = v_904 = v_905 = '@11@'.

*---------------------------------------------------------------------*
  mac_selection_screen 1.
  mac_selection_screen 2.
  mac_selection_screen 3.
  mac_selection_screen 4.
  mac_selection_screen 5.
*---------------------------------------------------------------------*
AT SELECTION-SCREEN.

  IF sscrfields-ucomm = 'TBCK'.
    SUBTRACT 1 FROM p_date_b.
  ELSEIF sscrfields-ucomm = 'TBCK7'.
    SUBTRACT 7 FROM p_date_b.
  ENDIF.

*---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.

  IF p_date_b IS INITIAL.
    p_date_b = sy-datum - 20.
  ENDIF.

  PERFORM at_selection_screen_output.

*---------------------------------------------------------------------*
INITIALIZATION.

  v_100 = '@0G@'.
  v_101 = '@0D@'.
  text_100 = 'Start date'(100).
  text_101 = 'End date'(101).
  text_102 = 'Transport Requests'(102).
  text_103 = 'Owner of the Request'(103).
  text_104 = 'Request Category'(104).
  text_105 = 'Type of request'(105).
  text_106 = 'Date DD.MM.YYYY'(106).
  text_107 = 'No Color'(107).
  text_108 = 'ALV List'(108).
  text_109 = 'No icon for return code'(109).
  text_110 = 'No return code'(110).
  text_111 = 'No User'(111).

*---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM read_data.

*---------------------------------------------------------------------*
END-OF-SELECTION.

  PERFORM display_data.

*---------------------------------------------------------------------*
*       Form  read_data
*---------------------------------------------------------------------*
FORM read_data.

  CONSTANTS :
    lc_admin   TYPE char8 VALUE '_ADMIN',
    lc_retcode TYPE char8 VALUE '_RETCODE'.

  DATA :
    l_ind         TYPE i VALUE 1,
    l_system      TYPE char7,
    l_field       TYPE char20,
    lt_system     TYPE TABLE OF char7,
    ls_tabcolor   TYPE lvc_s_scol,
    lt_tabcolor1  TYPE lvc_t_scol,
    lt_tabcolor2  TYPE lvc_t_scol,
    lp_table      TYPE REF TO data,      " Pointer to dynamic table
    ls_lvc_cat    TYPE lvc_s_fcat,
    lt_lvc_cat    TYPE lvc_t_fcat,       " Field catalog
    ls_fieldcat   TYPE slis_fieldcat_alv,
    ls_tmstpalog  TYPE tmstpalog,
    ls_e070       TYPE e070,
    lt_e070       TYPE SORTED TABLE OF e070 WITH UNIQUE KEY trkorr,
    lp_struct     TYPE REF TO data,
    ls_tmscsys    TYPE tmscsyslst,
    lr_trkorr     TYPE ty_trkorr,
    ls_trkorr     LIKE LINE OF gr_trkorr.

  FIELD-SYMBOLS : <header> TYPE ANY.

  REFRESH : gt_tmstpalog, gt_fieldcat.

  IF <gt_data> IS ASSIGNED.
    REFRESH  <gt_data>.
  ENDIF.

  APPEND LINES OF gr_trkorr TO lr_trkorr.
  APPEND LINES OF s_trkorr  TO lr_trkorr.

  LOOP AT gt_syslst INTO ls_tmscsys.
    PERFORM get_transport USING ls_tmscsys-sysnam
                                p_date_b
                                p_date_e
                                lr_trkorr.
  ENDLOOP.

  DELETE gt_tmstpalog WHERE truser NOT IN s_truser
                         OR trfunction NOT IN s_trfnct.

  IF gt_tmstpalog[] IS NOT INITIAL.

    REFRESH lr_trkorr.
    LOOP AT gt_tmstpalog INTO ls_tmstpalog.
      ls_trkorr-sign = 'I'.
      ls_trkorr-option = 'EQ'.
      ls_trkorr-low = ls_tmstpalog-trkorr.
      APPEND ls_trkorr TO lr_trkorr.
    ENDLOOP.

    SORT lr_trkorr.
    DELETE ADJACENT DUPLICATES FROM lr_trkorr.

    REFRESH : gt_tmstpalog.
    LOOP AT gt_syslst INTO ls_tmscsys.
      PERFORM get_transport USING ls_tmscsys-sysnam
                                  '20000101'
                                  '21000101'
                                  lr_trkorr.
    ENDLOOP.
  ENDIF.

  SORT gt_tmstpalog BY listname trcli.

  IF gt_tmstpalog[] IS NOT INITIAL.
    SELECT * FROM e070 INTO TABLE lt_e070
          FOR ALL ENTRIES IN gt_tmstpalog
            WHERE trkorr = gt_tmstpalog-trkorr
              AND korrdev IN s_korrdv.
  ENDIF.

  LOOP AT gt_tmstpalog INTO ls_tmstpalog.
    READ TABLE lt_e070 WITH KEY trkorr = ls_tmstpalog-trkorr
                   TRANSPORTING NO FIELDS.
    CHECK sy-subrc IS NOT INITIAL.
    DELETE gt_tmstpalog.
  ENDLOOP.

  READ TABLE lt_e070 INDEX 1 INTO ls_e070.

  LOOP AT gt_tmstpalog INTO ls_tmstpalog WHERE listname(3) = sy-sysid.
    CONCATENATE ls_tmstpalog-listname(3) '_' ls_tmstpalog-trcli
           INTO l_system.
    READ TABLE lt_system WITH TABLE KEY table_line = l_system
                      TRANSPORTING NO FIELDS.
    IF sy-subrc IS NOT INITIAL.
      APPEND l_system TO lt_system.
    ENDIF.
  ENDLOOP.

  LOOP AT gt_tmstpalog INTO ls_tmstpalog
                      WHERE listname(3) = ls_e070-tarsystem.
    CONCATENATE ls_tmstpalog-listname(3) '_' ls_tmstpalog-trcli
           INTO l_system.
    READ TABLE lt_system WITH TABLE KEY table_line = l_system
                      TRANSPORTING NO FIELDS.
    IF sy-subrc IS NOT INITIAL.
      APPEND l_system TO lt_system.
    ENDIF.
  ENDLOOP.

  LOOP AT gt_tmstpalog INTO ls_tmstpalog
                      WHERE listname(3) <> sy-sysid
                        AND listname(3) <> ls_e070-tarsystem.
    CONCATENATE ls_tmstpalog-listname(3) '_' ls_tmstpalog-trcli
           INTO l_system.
    READ TABLE lt_system WITH TABLE KEY table_line = l_system
                      TRANSPORTING NO FIELDS.
    IF sy-subrc IS NOT INITIAL.
      APPEND l_system TO lt_system.
    ENDIF.
  ENDLOOP.

  DELETE ADJACENT DUPLICATES FROM lt_system.

  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = c_checkbox.
  ls_lvc_cat-ref_table = 'ALV_S_FCAT'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

  IF p_nocolr IS INITIAL.
    CLEAR ls_lvc_cat.
    ls_lvc_cat-fieldname = 'COLORTAB'.
    ls_lvc_cat-ref_table = 'SWLWPSYSALVEDIT'.
    APPEND ls_lvc_cat TO lt_lvc_cat.
  ENDIF.

  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = c_trkorr.
  ls_lvc_cat-ref_table = 'E070'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname = c_trkorr.
  ls_fieldcat-ref_tabname = 'E070'.
  ls_fieldcat-hotspot = c_x.
  ls_fieldcat-key = c_x.
  APPEND ls_fieldcat TO gt_fieldcat.

  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'AS4TEXT'.
  ls_lvc_cat-ref_table = 'TMSTPALOG'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname = 'AS4TEXT'.
  ls_fieldcat-ref_tabname = 'TMSTPALOG'.
  ls_fieldcat-key = c_x.
  APPEND ls_fieldcat TO gt_fieldcat.

  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'TRFUNCTION'.
  ls_lvc_cat-ref_table = 'TMSTPALOG'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname = 'TRFUNCTION'.
  ls_fieldcat-rollname = 'TRFUNCTION'.
  APPEND ls_fieldcat TO gt_fieldcat.

  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'KORRDEV'.
  ls_lvc_cat-ref_table = 'E070'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname = 'KORRDEV'.
  ls_fieldcat-rollname = 'TRCATEG'.
  APPEND ls_fieldcat TO gt_fieldcat.

  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'AS4USER'.
  ls_lvc_cat-ref_table = 'E070'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname = 'AS4USER'.
  ls_fieldcat-ref_tabname = 'E070'.
  APPEND ls_fieldcat TO gt_fieldcat.

  LOOP AT lt_system INTO l_system.
*   For each line, a column is created in the fieldcatalog
*   Build Fieldcatalog
    CLEAR ls_lvc_cat.
    ls_lvc_cat-fieldname = l_system.
    IF p_format = c_x.
      ls_lvc_cat-ref_field = 'DATUM'.
      ls_lvc_cat-ref_table = 'SYST'.
    ELSE.
      ls_lvc_cat-ref_field = 'TRTIME'.
      ls_lvc_cat-ref_table = 'TMSTPALOG'.
    ENDIF.
    APPEND ls_lvc_cat TO lt_lvc_cat.
*   Build Fieldcatalog
    CLEAR ls_fieldcat.
    ls_fieldcat-fieldname = ls_lvc_cat-fieldname.
    IF p_format = c_x.
*     ls_fieldcat-ref_fieldname = 'DATUM'.
*     ls_fieldcat-ref_tabname = 'SYST'.
      ls_fieldcat-rollname = 'DATUM'.
    ELSE.
      ls_fieldcat-ref_fieldname = 'TRTIME'.
      ls_fieldcat-ref_tabname = 'TMSTPALOG'.
      ls_fieldcat-edit_mask = '==TSTPS'.
    ENDIF.
    ls_fieldcat-seltext_s = l_system.
    ls_fieldcat-seltext_m = l_system.
    ls_fieldcat-seltext_l = l_system.
    ls_fieldcat-just = 'C'.
    APPEND ls_fieldcat TO gt_fieldcat.

    IF p_no_rc IS INITIAL.
      CLEAR ls_lvc_cat.
      CONCATENATE  l_system lc_retcode INTO ls_lvc_cat-fieldname.
      IF p_iconrc IS NOT INITIAL.
        ls_lvc_cat-ref_field = 'RETCODE'.
        ls_lvc_cat-ref_table = 'TMSTPALOG'.
      ELSE.
        ls_lvc_cat-inttype = 'CHAR'.
        ls_lvc_cat-outputlen = 30.
      ENDIF.
      APPEND ls_lvc_cat TO lt_lvc_cat.

      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname = ls_lvc_cat-fieldname.
      IF p_iconrc IS NOT INITIAL.
        ls_fieldcat-ref_fieldname = 'RETCODE'.
        ls_fieldcat-ref_tabname = 'TMSTPALOG'.
        ls_fieldcat-no_zero = c_x.
      ELSE.
        ls_fieldcat-inttype = 'CHAR'.
        ls_fieldcat-outputlen = 30.
        ls_fieldcat-icon = c_x.
        ls_fieldcat-seltext_s = ls_fieldcat-seltext_m
                              = ls_fieldcat-seltext_l = 'RC'.
      ENDIF.
      APPEND ls_fieldcat TO gt_fieldcat.
    ENDIF.

    IF p_nouser IS INITIAL.
      CLEAR ls_lvc_cat.
      CONCATENATE  l_system lc_admin INTO ls_lvc_cat-fieldname.
      ls_lvc_cat-ref_field = 'ADMIN'.
      ls_lvc_cat-ref_table = 'TMSTPALOG'.
      APPEND ls_lvc_cat TO lt_lvc_cat.

      CLEAR ls_fieldcat.
      ls_fieldcat-fieldname = ls_lvc_cat-fieldname.
      ls_fieldcat-ref_fieldname = 'ADMIN'.
      ls_fieldcat-ref_tabname = 'TMSTPALOG'.
      APPEND ls_fieldcat TO gt_fieldcat.
    ENDIF.

  ENDLOOP.

  IF <gt_data> IS NOT ASSIGNED.
*   Create internal table
    CALL METHOD cl_alv_table_create=>create_dynamic_table
      EXPORTING
        it_fieldcatalog = lt_lvc_cat
      IMPORTING
        ep_table        = lp_table.

    ASSIGN lp_table->* TO <gt_data>.
  ENDIF.

  IF <header> IS NOT ASSIGNED.
*   Create structure = structure of the internal table
    CREATE DATA lp_struct LIKE LINE OF <gt_data>.
    ASSIGN lp_struct->* TO <header>.
  ENDIF.

  IF p_nocolr IS INITIAL.
    LOOP AT lt_lvc_cat INTO ls_lvc_cat WHERE fieldname <> c_checkbox
                                         AND fieldname <> c_colortab.
      CLEAR ls_tabcolor.
      ls_tabcolor-fname  = ls_lvc_cat-fieldname.

      IF ls_lvc_cat-fieldname+3(1) = '_'.
        CASE ls_lvc_cat-fieldname(3).
          WHEN ls_e070-tarsystem.
            ls_tabcolor-color-col = 5.
          WHEN sy-sysid.
            ls_tabcolor-color-col = 3.
          WHEN OTHERS.
            ls_tabcolor-color-col = 6.
        ENDCASE.
      ELSE.
        ls_tabcolor-color-col = 4.
      ENDIF.

      APPEND ls_tabcolor TO lt_tabcolor1.
      ls_tabcolor-color-int = 1.
      APPEND ls_tabcolor TO lt_tabcolor2.
    ENDLOOP.
  ENDIF.

  SORT gt_tmstpalog BY trkorr trtime.

* Fill the internal to display <gt_data>
  LOOP AT lt_e070 INTO ls_e070.
    CLEAR <header>.
    ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <header> TO <field_header>.
    IF sy-subrc EQ 0.
      <field_header> = ls_e070-as4user.
    ENDIF.

    LOOP AT gt_tmstpalog INTO ls_tmstpalog
                        WHERE trkorr = ls_e070-trkorr.

      MOVE-CORRESPONDING ls_tmstpalog TO <header>.

      CONCATENATE ls_tmstpalog-listname(3) '_' ls_tmstpalog-trcli
             INTO l_system.
      APPEND l_system TO lt_system.

      ASSIGN COMPONENT l_system OF STRUCTURE <header> TO <field_header>.
      IF sy-subrc EQ 0.
        <field_header> = ls_tmstpalog-trtime.
      ENDIF.

      CONCATENATE l_system lc_retcode INTO l_field.
      ASSIGN COMPONENT l_field OF STRUCTURE <header> TO <field_header>.
      IF sy-subrc IS INITIAL.
        IF p_iconrc IS NOT INITIAL.
          <field_header> = ls_tmstpalog-retcode.
        ELSE.
          CASE ls_tmstpalog-retcode.
            WHEN '0000'.
            WHEN '0004'.
              <field_header> = '@5D@'.
            WHEN '0008'.
              <field_header> = '@5C@'.
          ENDCASE.
        ENDIF.
      ENDIF.

      CONCATENATE l_system lc_admin INTO l_field.
      ASSIGN COMPONENT l_field OF STRUCTURE <header> TO <field_header>.
      IF sy-subrc IS INITIAL.
        <field_header> = ls_tmstpalog-admin.
      ENDIF.

    ENDLOOP.

    ASSIGN COMPONENT 'KORRDEV' OF STRUCTURE <header> TO <field_header>.
    IF sy-subrc EQ 0.
      MOVE ls_e070-korrdev TO <field_header>.
    ENDIF.

    IF p_nocolr IS INITIAL.
      ASSIGN COMPONENT c_colortab OF STRUCTURE <header>
                                            TO <field_header>.
      IF sy-subrc EQ 0.
        IF l_ind = 1.
          MOVE lt_tabcolor1 TO <field_header>.
        ELSE.
          MOVE lt_tabcolor2 TO <field_header>.
        ENDIF.
      ENDIF.

      l_ind = l_ind * -1.
    ENDIF.

    APPEND <header> TO <gt_data>.
  ENDLOOP.

ENDFORM.                               " READ_DATA
*---------------------------------------------------------------------*
*       Form  get_transport
*---------------------------------------------------------------------*
FORM get_transport USING u_tmssysnam TYPE tmssysnam
                         u_startdate TYPE dats
                         u_enddate   TYPE dats
                         ur_trkorr   TYPE ty_trkorr.

  DATA :
    l_exp  TYPE flag,
    lt_log TYPE tmstpalogs.

  IF u_tmssysnam = sy-sysid.
    l_exp = c_x.
  ENDIF.

  CALL FUNCTION 'TMS_TM_GET_TRLIST'
    EXPORTING
      iv_system      = u_tmssysnam
      iv_startdate   = u_startdate
      iv_starttime   = '000000'
      iv_enddate     = u_enddate
      iv_endtime     = '240000'
      iv_allcli      = c_x
      iv_imports     = c_x
      iv_exports     = l_exp
      iv_last_import = c_x
    IMPORTING
      et_tmstpalog   = lt_log
    TABLES
      irt_requests   = ur_trkorr
    EXCEPTIONS
      alert          = 1
      OTHERS         = 2.

  APPEND LINES OF lt_log TO gt_tmstpalog.

ENDFORM.                               " GET_TRANSPORT
*---------------------------------------------------------------------*
*       Form  display_data
*---------------------------------------------------------------------*
FORM display_data.

  DATA :
    ls_layout     TYPE slis_layout_alv,
    ls_event_exit TYPE slis_event_exit,
    lt_event_exit TYPE slis_t_event_exit,
    ls_print      TYPE slis_print_alv,
    ls_sort       TYPE slis_sortinfo_alv,
    lt_sort       TYPE slis_t_sortinfo_alv.

* IF p_alvlst IS INITIAL.
  ls_layout-box_fieldname = c_checkbox.
* ENDIF.
  ls_layout-colwidth_optimize = c_x.
  ls_layout-group_change_edit = c_x.

  IF p_nocolr IS INITIAL.
    ls_layout-coltab_fieldname = c_colortab.
  ENDIF.

* Activate refresh button
  CLEAR ls_event_exit.
  ls_event_exit-ucomm = c_refresh.     " Refresh
  ls_event_exit-after = c_x.
  APPEND ls_event_exit TO lt_event_exit.
  ls_event_exit-ucomm = c_eb9.         " More
  ls_event_exit-after = c_x.
  APPEND ls_event_exit TO lt_event_exit.

* Build Sort Table
  ls_sort-up = c_x.
  ls_sort-fieldname = c_trkorr.
  APPEND ls_sort TO lt_sort.

  ls_print-no_print_selinfos  = c_x.   " Display no selection infos
  ls_print-no_print_listinfos = c_x.   " Display no listinfos

  IF p_alvlst IS INITIAL.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program       = sy-cprog
        i_callback_user_command  = 'USER_COMMAND'
        i_callback_pf_status_set = 'PF_STATUS_SET'
        it_fieldcat              = gt_fieldcat
        it_sort                  = lt_sort
        is_layout                = ls_layout
        is_print                 = ls_print
        it_event_exit            = lt_event_exit
        i_save                   = 'A'
      TABLES
        t_outtab                 = <gt_data>.
  ELSE.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
      EXPORTING
        i_callback_program       = sy-cprog
        i_callback_user_command  = 'USER_COMMAND'
        i_callback_pf_status_set = 'PF_STATUS_SET'
        it_fieldcat              = gt_fieldcat
        it_sort                  = lt_sort
        is_layout                = ls_layout
        is_print                 = ls_print
        it_event_exit            = lt_event_exit
        i_save                   = 'A'
      TABLES
        t_outtab                 = <gt_data>.
  ENDIF.

ENDFORM.                               " DISPLAY_DATA
*---------------------------------------------------------------------*
*       Form  user_command
*---------------------------------------------------------------------*
FORM user_command USING u_ucomm     TYPE syucomm            "#EC CALLED
                        us_selfield TYPE slis_selfield.

  DATA
   lp_struct TYPE REF TO data.

  FIELD-SYMBOLS :
    <l_header> TYPE ANY.

  CASE u_ucomm.
    WHEN '&IC1'.
      CHECK us_selfield-fieldname = c_trkorr.
*     Create structure = structure of the internal table
      CREATE DATA lp_struct LIKE LINE OF <gt_data>.
      ASSIGN lp_struct->* TO <l_header>.
      READ TABLE <gt_data> ASSIGNING <l_header>
                               INDEX us_selfield-tabindex.
      CHECK sy-subrc EQ 0.
      ASSIGN COMPONENT c_trkorr OF STRUCTURE <l_header>
                    TO <field_header>.
      IF sy-subrc EQ 0.
        CALL FUNCTION 'TR_PRESENT_REQUEST'
          EXPORTING
            iv_trkorr    = <field_header>
            iv_highlight = c_x.
      ENDIF.
    WHEN c_refresh.
      REFRESH gr_trkorr.
*     Read object in requests
      PERFORM f_read_request USING gt_where1 space.
      PERFORM f_read_request USING gt_where2 space.
      PERFORM f_read_request USING gt_where3 space.
      PERFORM f_read_request USING gt_where4 space.
      PERFORM f_read_request USING gt_where5 space.
      PERFORM read_data.
      us_selfield-refresh = c_x.
    WHEN c_eb9.
      PERFORM f_show_objects.
  ENDCASE.

ENDFORM.                               " USER_COMMAND
*---------------------------------------------------------------------*
*       FORM PF_STATUS_SET                                            *
*---------------------------------------------------------------------*
FORM pf_status_set USING ut_extab TYPE slis_t_extab.        "#EC CALLED

* Display refresh button
  DELETE ut_extab WHERE fcode = c_refresh OR fcode = c_eb9.

  SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'
      EXCLUDING ut_extab.

ENDFORM.                               " PF_STATUS_SET
*---------------------------------------------------------------------*
*      Form  at_selection_screen_output
*---------------------------------------------------------------------*
FORM at_selection_screen_output.

  LOOP AT SCREEN.
    CASE screen-group1.
      WHEN 'OUT'.
        screen-input      = '0'.
        MODIFY SCREEN.
      WHEN '2D'.
        screen-input      = '0'.
        screen-display_3d = '0'.
        MODIFY SCREEN.
    ENDCASE.
  ENDLOOP.

ENDFORM.                               " AT_SELECTION_SCREEN_OUTPUT
*---------------------------------------------------------------------*
*      Form  f_selection_screen
*---------------------------------------------------------------------*
FORM f_selection_screen USING u_pgmid  TYPE pgmid
                              u_object TYPE trobjtype
                              u_objnam TYPE ty_objnam
                              ut_where TYPE ty_where_t.

  DATA :
    l_temp    TYPE char50,
    l_where   TYPE char50,
    lt_where  TYPE TABLE OF char50.

  IF u_object IS INITIAL AND u_objnam IS NOT INITIAL.
    SELECT SINGLE pgmid object
             INTO (u_pgmid, u_object)
             FROM tadir
            WHERE obj_name = u_objnam.
  ENDIF.

  CHECK u_pgmid IS NOT INITIAL AND
        u_object IS NOT INITIAL AND
        u_objnam IS NOT INITIAL.

* Build dynamic where
  CONCATENATE '''' sy-sysid '%' '''' INTO l_temp.
  CONCATENATE 'A~TRKORR LIKE ' l_temp 'AND' INTO l_where
    SEPARATED BY space.
  APPEND l_where TO lt_where.

  CONCATENATE '''' u_pgmid '''' INTO l_temp.
  CONCATENATE 'PGMID = ' l_temp 'AND' INTO l_where
    SEPARATED BY space.
  APPEND l_where TO lt_where.

  CONCATENATE '''' u_object '''' INTO l_temp.
  CONCATENATE 'OBJECT = ' l_temp 'AND' INTO l_where
    SEPARATED BY space.
  APPEND l_where TO lt_where.

  CONCATENATE '''' u_objnam '''' INTO l_temp.

  IF u_objnam CS '*'.
    TRANSLATE l_temp USING '*%'.
    CONCATENATE 'OBJ_NAME LIKE ' l_temp INTO l_where
      SEPARATED BY space.
  ELSE.
    CONCATENATE 'OBJ_NAME = ' l_temp INTO l_where
      SEPARATED BY space.
  ENDIF.
  APPEND l_where TO lt_where.

  CHECK ut_where[] <> lt_where[].

* Read object in requests
  PERFORM f_read_request USING lt_where c_x.

  ut_where[] = lt_where[].

ENDFORM.                               " F_SELECTION_SCREEN
*---------------------------------------------------------------------*
*      Form  F_HELP_OBJECT_NAME
*---------------------------------------------------------------------*
FORM f_help_object_name USING u_pgmid  TYPE pgmid
                              u_object TYPE trobjtype
                              u_field  TYPE fieldname
                     CHANGING u_objnam TYPE ty_objnam.

  TYPES:
    BEGIN OF ty_values,
      object   TYPE trobjtype,
      obj_name TYPE sobj_name,
    END OF ty_values.

  DATA :
    l_dynprofld TYPE dynfnam,
*   ls_values   TYPE ty_values,
    lt_values   TYPE TABLE OF ty_values,
    ls_return   TYPE ddshretval,
    lt_return   TYPE dmc_ddshretval_table,
    ls_dynpread TYPE dynpread,
    lt_dynpread TYPE TABLE OF dynpread,
    l_dynnum    TYPE sy-dynnr,
    l_progname  TYPE sy-repid.

  CHECK u_pgmid = 'R3TR'.

  l_progname = sy-repid.
  l_dynnum   = sy-dynnr.

  ls_dynpread-fieldname = u_field.
  APPEND ls_dynpread TO lt_dynpread.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname             = l_progname
      dynumb             = l_dynnum
      translate_to_upper = c_x
    TABLES
      dynpfields         = lt_dynpread.

  READ TABLE lt_dynpread INDEX 1 INTO ls_dynpread.

  IF ls_dynpread-fieldvalue CS '*' OR ls_dynpread-fieldvalue CS '+'.
    TRANSLATE ls_dynpread-fieldvalue USING '*%'.
*   Lecture de TADIR
    SELECT object obj_name INTO TABLE lt_values
                           FROM tadir
                             UP TO 200 ROWS
                          WHERE object = u_object
                            AND devclass NE '$TMP'
                            AND obj_name LIKE ls_dynpread-fieldvalue
                            AND pgmid = 'R3TR'.
  ELSE.
*   Lecture de TADIR
    SELECT object obj_name INTO TABLE lt_values
                           FROM tadir
                             UP TO 200 ROWS
                          WHERE object = u_object
                            AND devclass NE '$TMP'
                            AND pgmid = 'R3TR'.
  ENDIF.

  l_dynprofld = u_field.

* F4 help
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = u_field
      dynpprog        = l_progname
      dynpnr          = l_dynnum
      dynprofield     = l_dynprofld
      value_org       = 'S'
    TABLES
      value_tab       = lt_values
      return_tab      = lt_return
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CHECK NOT lt_return[] IS INITIAL.
  READ TABLE lt_return INDEX 1 INTO ls_return.
  u_objnam = ls_return-fieldval.

ENDFORM.                               " F_HELP_OBJECT_NAME
*---------------------------------------------------------------------*
*      Form  f_selection_screen_object
*---------------------------------------------------------------------*
FORM f_selection_screen_object USING u_object TYPE trobjtype
                            CHANGING u_pgmid  TYPE pgmid
                                     u_objtxt TYPE trtext.

  DATA ls_object_text TYPE ko100.

  CHECK u_object IS NOT INITIAL.

  READ TABLE gt_object_texts INTO ls_object_text
    WITH KEY object = u_object.
  IF sy-subrc <> 0.
*   Sélectionnez un type d'objet valide
    MESSAGE e870(tk).
  ELSE.
    u_pgmid = ls_object_text-pgmid.
    u_objtxt = ls_object_text-text.
  ENDIF.

ENDFORM.                               " F_SELECTION_SCREEN_OBJECT
*---------------------------------------------------------------------*
*      Form  READ_OBJECT_TABLE
*---------------------------------------------------------------------*
FORM read_object_table CHANGING ut_object_texts TYPE tr_object_texts.

  CHECK ut_object_texts[] IS INITIAL.

  CALL FUNCTION 'TR_OBJECT_TABLE'
    TABLES
      wt_object_text = ut_object_texts.

  DELETE ut_object_texts WHERE pgmid <> 'R3TR'
                           AND pgmid <> 'R3OB'
                           AND pgmid <> 'LIMU'
                           AND pgmid <> 'CORR'.

  SORT ut_object_texts BY pgmid object.

ENDFORM.                               " READ_OBJECT_TABLE
*---------------------------------------------------------------------*
*      Form  f_read_request
*---------------------------------------------------------------------*
FORM f_read_request USING ut_where TYPE ty_where_t
                          u_flag   TYPE xfeld.

  DATA :
    lr_trkorr TYPE RANGE OF trkorr.

  FIELD-SYMBOLS :
    <trkorr> LIKE LINE OF lr_trkorr.

  CHECK ut_where[] IS NOT INITIAL.

  SELECT a~trkorr AS low
    INTO CORRESPONDING FIELDS OF TABLE lr_trkorr
    FROM e071 AS a
    JOIN e070 AS b
      ON a~trkorr =  b~trkorr
   WHERE (ut_where)
     AND as4user IN s_truser
     AND as4date BETWEEN p_date_b AND p_date_e
     AND trfunction IN s_trfnct
     AND korrdev IN s_korrdv
     AND trstatus = 'R'
     AND strkorr = space.

  LOOP AT lr_trkorr ASSIGNING <trkorr>.
    <trkorr>-sign = 'I'.
    <trkorr>-option = 'EQ'.
  ENDLOOP.

  APPEND LINES OF lr_trkorr TO gr_trkorr.

  SORT gr_trkorr.
  DELETE ADJACENT DUPLICATES FROM gr_trkorr.

  IF lr_trkorr[] IS INITIAL AND u_flag = c_x.
    MESSAGE e208(00) WITH 'No requests found'(001).
  ENDIF.

ENDFORM.                               " F_READ_REQUEST
*---------------------------------------------------------------------*
*      Form  f_show_objects
*---------------------------------------------------------------------*
FORM f_show_objects.

  DATA :
    lp_struct TYPE REF TO data,
    lt_e071   TYPE TABLE OF e071,
    lt_trkorr TYPE TABLE OF trkorr,
    ls_sort   TYPE slis_sortinfo_alv,
    lt_sort   TYPE slis_t_sortinfo_alv.

  FIELD-SYMBOLS :
    <l_header> TYPE ANY.

* Create structure = structure of the internal table
  CREATE DATA lp_struct LIKE LINE OF <gt_data>.
  ASSIGN lp_struct->* TO <l_header>.

  LOOP AT <gt_data> ASSIGNING <l_header>.
    ASSIGN COMPONENT c_checkbox OF STRUCTURE <l_header>
                  TO <field_header>.
    CHECK sy-subrc IS INITIAL.
    CHECK <field_header> EQ c_x.
    ASSIGN COMPONENT c_trkorr OF STRUCTURE <l_header>
                  TO <field_header>.
    CHECK sy-subrc IS INITIAL.
    APPEND <field_header> TO lt_trkorr.
  ENDLOOP.

  CHECK lt_trkorr[] IS NOT INITIAL.

  SELECT * FROM e071 INTO TABLE lt_e071
     FOR ALL ENTRIES IN lt_trkorr
   WHERE trkorr = lt_trkorr-table_line.

  DELETE lt_e071 WHERE pgmid = 'CORR'.

  CHECK lt_e071 IS NOT INITIAL.

  SORT lt_e071 BY pgmid object obj_name.
  DELETE ADJACENT DUPLICATES FROM lt_e071
       COMPARING pgmid object obj_name.

* Build Sort Table
  ls_sort-up = c_x.
  ls_sort-fieldname = 'PGMID'.
  APPEND ls_sort TO lt_sort.
  ls_sort-fieldname = 'OBJECT'.
  APPEND ls_sort TO lt_sort.
  ls_sort-fieldname = 'OBJ_NAME'.
  APPEND ls_sort TO lt_sort.

  gt_e071[] = lt_e071[].

  IF p_alvlst IS INITIAL.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program      = sy-cprog
        i_callback_user_command = 'USER_COMMAND_2'
        i_structure_name        = 'E071'
        it_sort                 = lt_sort
      TABLES
        t_outtab                = gt_e071.
  ELSE.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
      EXPORTING
        i_callback_program      = sy-cprog
        i_callback_user_command = 'USER_COMMAND_2'
        i_structure_name        = 'E071'
        it_sort                 = lt_sort
      TABLES
        t_outtab                = gt_e071.
  ENDIF.

ENDFORM.                               " F_SHOW_OBJECTS
*--------------------------------------------------------------------*
*      Form  F_READ_INSTALLED_LANGUAGES
*--------------------------------------------------------------------*
FORM f_read_installed_languages.

  DATA:
    l_len TYPE i,
    l_off TYPE i,
    zcsa_lang(50) TYPE c,  " Zul?ssige Sprachen ($,T)
    zcsa_param(40) VALUE 'zcsa/installed_languages'.

* Installed languages
  CALL 'C_SAPGPARAM' ID 'NAME'  FIELD zcsa_param
                     ID 'VALUE' FIELD zcsa_lang.

  FIELD-SYMBOLS <f> TYPE char1.

  l_len = STRLEN( zcsa_lang ).
  DO l_len TIMES.
    l_off = sy-index - 1.
    ASSIGN zcsa_lang+l_off(1) TO <f>.
    CHECK <f> NE space.
*   APPEND <f> TO t_langu.
  ENDDO.

* Logon language on Top of t_langu
*  DELETE t_langu WHERE table_line = sy-langu.
*  INSERT sy-langu INTO t_langu INDEX 1.

ENDFORM.                               " F_READ_INSTALLED_LANGUAGES
*--------------------------------------------------------------------*
*--------------------------------------------------------------------*
*       Form  user_command_2
*--------------------------------------------------------------------*
FORM user_command_2 USING u_ucomm     TYPE syucomm          "#EC CALLED
                          us_selfield TYPE slis_selfield.
* Macro definition
  DEFINE mac_dynpro.
    clear ls_bdcdata.
    ls_bdcdata-program  = &1.
    ls_bdcdata-dynpro   = &2.
    ls_bdcdata-dynbegin = c_x.
    append ls_bdcdata to lt_bdcdata.
  END-OF-DEFINITION.
* Macro definition
  DEFINE mac_field.
    clear ls_bdcdata.
    ls_bdcdata-fnam = &1.
    ls_bdcdata-fval = &2.
    append ls_bdcdata to lt_bdcdata.
  END-OF-DEFINITION.

  DATA :
    ls_e071 TYPE e071,
    ls_bdcdata TYPE bdcdata,
    lt_bdcdata TYPE TABLE OF bdcdata.

  CASE u_ucomm.
    WHEN '&IC1'.
      READ TABLE gt_e071 INTO ls_e071 INDEX us_selfield-tabindex.
      CHECK sy-subrc IS INITIAL.
      IF us_selfield-fieldname = c_trkorr.
        CALL FUNCTION 'TR_PRESENT_REQUEST'
          EXPORTING
            iv_trkorr    = ls_e071-trkorr
            iv_highlight = c_x.
        RETURN.
      ENDIF.
      CASE ls_e071-object.
        WHEN 'FORM'.
*         SAPscript form
          SET PARAMETER ID 'TXF' FIELD ls_e071-obj_name.
          SET PARAMETER ID 'TXL' FIELD 'FR'.
          CALL TRANSACTION 'SE71' USING lt_bdcdata MODE 'A'.
        WHEN 'SSFO'.
          SELECT SINGLE formname
                   INTO ls_e071-obj_name
                   FROM stxfadm
                  WHERE formname = ls_e071-obj_name
                    AND formtype = space.
          IF sy-subrc IS INITIAL.
*           SAP Smart Forms: Name of a Smart Form
            SET PARAMETER ID 'SSFNAME' FIELD ls_e071-obj_name.
*           SAP Smart Forms
            CALL TRANSACTION 'SMARTFORMS'.
          ELSE.
            mac_dynpro 'SAPMSSFO' '0100'.
            mac_field  'RB_TX'  c_x.
            mac_field  'BDC_OKCODE'  '=RB'.
            mac_dynpro 'SAPMSSFO' '0100'.
            mac_field  'SSFSCREENS-TNAME' ls_e071-obj_name.
            CALL TRANSACTION 'SMARTFORMS' USING lt_bdcdata MODE 'E'.
          ENDIF.
        WHEN 'SSST'.
*         SAP Smart Forms: Name of a Smart Style
          SET PARAMETER ID 'SSFSTYLE' FIELD ls_e071-obj_name.
          mac_dynpro 'SAPMSSFO' '0100'.
          mac_field  'RB_ST'  c_x.
          mac_field  'BDC_OKCODE'  '/00'.
          CALL TRANSACTION 'SMARTFORMS' USING lt_bdcdata MODE 'E'.
        WHEN 'AQBG'. " query user group
          SET PARAMETER ID 'AQW' FIELD 'G'. " global
          SET PARAMETER ID 'AQB' FIELD ls_e071-obj_name.
          CALL TRANSACTION 'SQ03'.
        WHEN 'AQQU'. " query
          SET PARAMETER ID 'AQW' FIELD 'G'. " global
          SET PARAMETER ID 'AQB' FIELD ls_e071-obj_name(12). " user group
          SET PARAMETER ID 'AQQ' FIELD ls_e071-obj_name+12.
          CALL TRANSACTION 'SQ01'.
        WHEN 'AQSG'. " query info set
          SET PARAMETER ID 'AQW' FIELD 'G'. " global
          SET PARAMETER ID 'AQS' FIELD ls_e071-obj_name.
          CALL TRANSACTION 'SQ02'.
        WHEN 'SCVI'. " screen variant
          SET PARAMETER ID 'TCD' FIELD ls_e071-obj_name.
          SET PARAMETER ID 'STV' FIELD space.
          CALL TRANSACTION 'SHD0'.
        WHEN 'STVI'.
          SET PARAMETER ID 'SCRVAR' FIELD space.
          SET PARAMETER ID 'STV' FIELD ls_e071-obj_name.
          CALL TRANSACTION 'SHD0'.
        WHEN 'CMOD'.
          PERFORM show_cmod USING ls_e071-obj_name(40).
        WHEN OTHERS.
          CALL FUNCTION 'TR_OBJECT_JUMP_TO_TOOL'
            EXPORTING
              iv_pgmid          = ls_e071-pgmid
              iv_object         = ls_e071-object
              iv_obj_name       = ls_e071-obj_name
            EXCEPTIONS
              jump_not_possible = 1
              OTHERS            = 2.
          IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          ENDIF.
      ENDCASE.
  ENDCASE.

ENDFORM.                               " USER_COMMAND_2
*---------------------------------------------------------------------*
*      Form SHOW_CMOD
*---------------------------------------------------------------------*
FORM show_cmod USING u_name TYPE sobj_name.

  DATA: l_modname TYPE modsap-name.

  l_modname = u_name.

  CALL FUNCTION 'MOD_KUN_MEMBERSCRN'
    EXPORTING
      message = c_x
      mode    = 'SHOM'
      modname = l_modname.

ENDFORM.                               " SHOW_CMOD
* Text element
*001  No requests found
*100  Start date
*101  End date
*102  Transport Requests
*103  Owner of the Request
*104  Request Category
*105  Type of request
*106  Date DD.MM.YYYY
*107  No Color
*108  ALV List
*109  No icon for return code
*110  No return code
*111  No User
*BL0  Parameters
*BL1  Objects
*BL2  Options
***************** END OF PROGRAM Z_ALV_OVERVIEW_REQUEST ***************

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章