*&---------------------------------------------------------------------*
*& 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 ***************
CR LIST
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.