CR LIST

来源:互联网 发布:淘宝干衣机哪个品牌好 编辑:程序博客网 时间:2024/06/05 20:22
*&---------------------------------------------------------------------**& 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 definitionDEFINE 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 definitionDEFINE 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 catalogDATA 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 NEEDEDSELECTION-SCREEN PUSHBUTTON 65(4)  v_101 USER-COMMAND tbck. "#EC NEEDEDSELECTION-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 ***************

原创粉丝点击