REPORT z_alv_overview_request. *---------------------------------------------------------------------* * Overview transport requests for all systems and clients * *---------------------------------------------------------------------* * Author : Michel PIOUD - Updated 28-Jan-09 * * HomePage : http://www.oocities.org/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 ***************