REPORT z_cts_cross_ref LINE-SIZE 400 NO STANDARD PAGE HEADING. *------------------------------------------------------------ * * Program name: Z_CTS_CROSS_REF * Zweck: Transportaufträge auswerten * Purpose: Cross Reference for Transport Requests * * Copyright (C) 2011 Matthias Köper -- http://www.be-team.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * *------------------------------------------------------------ * Basic operation: * §0 - Specify your system ID's (save as variant) * §1 - Select transport requests, either by * -> Request attributes (those refer to table E070) * -> Evaluation of import, or export history * §1.1 - If required, specify ID of system on which your * requests are suspected to be missing * §2 - Do filtering, sorting, exporting of cross ref list * §2.1 - Select multiple requests and check all objects * contained therein to identify dangerous objects etc. * §2.2 - Trigger cross-system version comparison for * single requests (use TMS* destinations) * §3 - Enjoy! * §4 - Improve program... *------------------------------------------------------------ TYPE-POOLS: trwbo , slis . TABLES: e070 , e07t . INCLUDE . SELECTION-SCREEN BEGIN OF BLOCK e070 WITH FRAME TITLE text-001. SELECT-OPTIONS: o_trkorr FOR e070-trkorr , o_as4txt FOR e07t-as4text , o_as4use FOR e070-as4user , o_as4dat FOR e070-as4date , o_status FOR e070-trstatus , o_trfunc FOR e070-trfunction , o_korrde FOR e070-korrdev . PARAMETERS: p_misson LIKE e070-tarsystem , p_xpra AS CHECKBOX , p_haskey AS CHECKBOX , p_genkey AS CHECKBOX . SELECTION-SCREEN END OF BLOCK e070. SELECTION-SCREEN BEGIN OF BLOCK hist WITH FRAME TITLE text-001. PARAMETERS: p_system TYPE tmssysnam , p_domain TYPE tmsdomnam , p_tarcli TYPE trclient , p_strdt TYPE as4date DEFAULT sy-datum , p_strtm TYPE as4time , p_enddt TYPE as4date DEFAULT sy-datum , p_endtm TYPE as4time DEFAULT sy-uzeit , p_trfunc TYPE trfunction , p_projct LIKE ctsproject-trkorr , p_imphis RADIOBUTTON GROUP his DEFAULT 'X' , p_exphis RADIOBUTTON GROUP his , p_alv AS CHECKBOX DEFAULT 'X' . SELECTION-SCREEN END OF BLOCK hist. FIELD-SYMBOLS: TYPE table. TYPE-POOLS: strhi . TYPES: t_target TYPE tstrfcofil , tt_target TYPE STANDARD TABLE OF t_target INITIAL SIZE 1 WITH DEFAULT KEY , tt_target_unique TYPE SORTED TABLE OF t_target WITH UNIQUE KEY tarsystem tarclient , t_object TYPE e071 , tt_object TYPE STANDARD TABLE OF t_object INITIAL SIZE 1 WITH DEFAULT KEY , t_key TYPE e071k , tt_key TYPE STANDARD TABLE OF t_key INITIAL SIZE 1 WITH DEFAULT KEY , BEGIN OF t_request , sortkey TYPE char40. INCLUDE STRUCTURE e070 AS header. TYPES: as4text TYPE as4text , clidep TYPE flag , cusy TYPE flag " mandantenunabhängiges Customizing-Objekt , haskeys TYPE flag , generic TYPE flag " enthält generische Keys , xpra TYPE flag , targets TYPE tt_target , objects TYPE tt_object , keys TYPE tt_key , END OF t_request , tt_request TYPE TABLE OF t_request , BEGIN OF t_sortopts , sortby1(30) TYPE c , direct1(4) TYPE c , sortby2(30) TYPE c , direct2(4) TYPE c , sortby3(30) TYPE c , direct3(4) TYPE c , END OF t_sortopts . DATA: gt_requests TYPE tt_request , gt_targets TYPE tt_target_unique , g_objects_read TYPE flag , gt_e071 TYPE TABLE OF e071 WITH HEADER LINE , gs_sort TYPE t_sortopts , BEGIN OF gs_pos , page LIKE sy-pagno , col LIKE sy-staco , row LIKE sy-staro , END OF gs_pos , gv_line LIKE sy-lilli , gt_fieldcat TYPE slis_t_fieldcat_alv . CONSTANTS: gc_sys_dev TYPE tarsystem VALUE 'DEV' , gc_sys_qua TYPE tarsystem VALUE 'QUA' , gc_sys_prd TYPE tarsystem VALUE 'PRD' , gc_sys_tra TYPE tarsystem VALUE 'TRA' . PARAMETERS: p_dev TYPE tarsystem DEFAULT gc_sys_dev , p_qua TYPE tarsystem DEFAULT gc_sys_qua , p_prd TYPE tarsystem DEFAULT gc_sys_prd , p_tra TYPE tarsystem DEFAULT gc_sys_tra . INITIALIZATION. gs_sort-sortby1 = 'AS4DATE'. gs_sort-direct1 = 'DESC'. gs_sort-sortby2 = 'AS4TIME'. gs_sort-direct2 = 'DESC'. IF o_trkorr-low IS INITIAL. CONCATENATE sy-sysid 'K9*' INTO o_trkorr-low. APPEND o_trkorr. ENDIF. START-OF-SELECTION. SET PF-STATUS 'MAIN'. PERFORM do_all. AT LINE-SELECTION. PERFORM show_request USING e070-trkorr. TOP-OF-PAGE. PERFORM list_header. TOP-OF-PAGE DURING LINE-SELECTION. PERFORM list_header. AT USER-COMMAND. CASE sy-ucomm. WHEN 'ALLOBJECTS'. PERFORM show_all_objects. WHEN 'SORTLIST'. PERFORM set_sort CHANGING gs_sort. PERFORM pos_save. sy-lsind = 0. PERFORM sort_requests USING gs_sort CHANGING gt_requests. PERFORM output_list USING gt_requests gt_targets. PERFORM pos_restore USING 1 gs_pos-page gs_pos-col gs_pos-row. WHEN 'SORTASC'. gs_sort-direct1 = 'ASC'. PERFORM pos_save. sy-lsind = 0. PERFORM sort_requests USING gs_sort CHANGING gt_requests. PERFORM output_list USING gt_requests gt_targets. PERFORM pos_restore USING 1 gs_pos-page gs_pos-col gs_pos-row. WHEN 'SORTDESC'. gs_sort-direct1 = 'DESC'. PERFORM pos_save. sy-lsind = 0. PERFORM sort_requests USING gs_sort CHANGING gt_requests. PERFORM output_list USING gt_requests gt_targets. PERFORM pos_restore USING 1 gs_pos-page gs_pos-col gs_pos-row. WHEN 'REFRESH'. PERFORM pos_save. sy-lsind = 0. PERFORM do_all. PERFORM pos_restore USING 1 gs_pos-page gs_pos-col gs_pos-row. WHEN 'TRANSP'. PERFORM transport USING e070-trkorr. WHEN 'VERSIO'. PERFORM version_compare USING e070-trkorr. WHEN OTHERS. ENDCASE. *---------------------------------------------------------------------* * FORM read_requests * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> C_T_REQUESTS * *---------------------------------------------------------------------* FORM read_requests CHANGING c_t_requests TYPE tt_request. DATA: lwa_request TYPE t_request , l_allcli TYPE flag , lt_history TYPE tmstpalogs , BEGIN OF lwa_e070_e07t. INCLUDE TYPE e070. DATA: as4text TYPE as4text , END OF lwa_e070_e07t , lt_trkorr TYPE SORTED TABLE OF trkorr WITH UNIQUE KEY table_line . FIELD-SYMBOLS: LIKE LINE OF lt_history . CLEAR g_objects_read. CLEAR c_t_requests[]. IF p_system EQ space. IF NOT ( o_trkorr IS INITIAL AND o_trkorr[] IS INITIAL ) OR NOT ( o_as4use IS INITIAL AND o_as4use[] IS INITIAL ) OR NOT ( o_as4dat IS INITIAL AND o_as4dat[] IS INITIAL ). CALL FUNCTION 'PROGRESS_INDICATOR' EXPORTING i_text = 'Aufträge lesen aus E070' i_output_immediately = 'X'. SELECT * FROM e070 WHERE trkorr IN o_trkorr AND trfunction IN o_trfunc AND korrdev IN o_korrde AND as4user IN o_as4use AND as4date IN o_as4dat AND trstatus IN o_status. * AND strkorr = space. CLEAR lwa_request. IF e070-strkorr EQ space. MOVE-CORRESPONDING e070 TO lwa_request. ELSE. * ggf. Auftrag zur Aufgabe lesen SELECT SINGLE * FROM e070 INTO CORRESPONDING FIELDS OF lwa_request WHERE trkorr = e070-strkorr. IF sy-subrc <> 0. CONTINUE. ENDIF. ENDIF. SELECT SINGLE as4text FROM e07t INTO lwa_request-as4text WHERE trkorr = lwa_request-trkorr. CHECK lwa_request-as4text IN o_as4txt. * Duplikate vermeiden INSERT lwa_request-trkorr INTO TABLE lt_trkorr. IF sy-subrc = 0. APPEND lwa_request TO c_t_requests. ENDIF. ENDSELECT. ENDIF. ENDIF. IF p_system NE space. CALL FUNCTION 'PROGRESS_INDICATOR' EXPORTING i_text = 'Aufträge lesen aus TMS-Historie' i_output_immediately = 'X'. IF p_tarcli IS INITIAL. l_allcli = 'X'. ENDIF. CALL FUNCTION 'TMS_TM_GET_HISTORY' EXPORTING iv_system = p_system iv_domain = p_domain iv_allcli = l_allcli iv_trcli = p_tarcli iv_trfunction = p_trfunc iv_project = p_projct iv_imports = p_imphis iv_exports = p_exphis iv_all_steps = ' ' iv_all_alog_steps = ' ' * IV_TPSTAT_KEY = iv_monitor = 'X' IMPORTING * EV_ALOG_LINENR = et_tmstpalog = lt_history * ES_EXCEPTION = CHANGING cv_start_date = p_strdt cv_start_time = p_strtm cv_end_date = p_enddt cv_end_time = p_endtm EXCEPTIONS alert = 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. IF c_t_requests[] IS INITIAL. CHECK NOT lt_history[] IS INITIAL. SELECT a~trkorr a~trfunction a~trstatus a~tarsystem a~korrdev a~as4user a~as4date a~as4time a~strkorr t~as4text FROM e070 AS a INNER JOIN e07t AS t ON t~trkorr = a~trkorr INTO lwa_e070_e07t FOR ALL ENTRIES IN lt_history WHERE a~trkorr = lt_history-trkorr AND t~as4text IN o_as4txt. CLEAR lwa_request. MOVE-CORRESPONDING lwa_e070_e07t TO lwa_request. * SELECT SINGLE as4text FROM e07t INTO lwa_request-as4text * WHERE trkorr = lwa_request-trkorr. IF lwa_request-trkorr IN o_trkorr AND lwa_request-trfunction IN o_trfunc AND lwa_request-korrdev IN o_korrde AND lwa_request-as4user IN o_as4use AND lwa_request-as4date IN o_as4dat AND lwa_request-trstatus IN o_status. * AND lwa_request-strkorr = space. APPEND lwa_request TO c_t_requests. ENDIF. ENDSELECT. ELSE. LOOP AT lt_history ASSIGNING . READ TABLE c_t_requests TRANSPORTING NO FIELDS WITH KEY trkorr = -trkorr. IF sy-subrc <> 0. CLEAR e070. * SELECT SINGLE * FROM e070 WHERE trkorr = -trkorr. SELECT SINGLE a~trkorr a~trfunction a~trstatus a~tarsystem a~korrdev a~as4user a~as4date a~as4time a~strkorr t~as4text FROM e070 AS a INNER JOIN e07t AS t ON t~trkorr = a~trkorr INTO lwa_e070_e07t WHERE a~trkorr = -trkorr AND t~as4text IN o_as4txt. IF sy-subrc = 0. CLEAR lwa_request. MOVE-CORRESPONDING e070 TO lwa_request. * SELECT SINGLE as4text FROM e07t INTO lwa_request-as4text * WHERE trkorr = lwa_request-trkorr. IF lwa_request-trkorr IN o_trkorr AND lwa_request-trfunction IN o_trfunc AND lwa_request-korrdev IN o_korrde AND lwa_request-as4user IN o_as4use AND lwa_request-as4date IN o_as4dat AND lwa_request-trstatus IN o_status. APPEND lwa_request TO c_t_requests. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. ENDIF. ENDFORM. " read_requests *---------------------------------------------------------------------* * FORM read_targets * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> C_T_REQUESTS * * --> ENDFORM * *---------------------------------------------------------------------* FORM read_targets CHANGING c_t_requests TYPE tt_request c_t_targets_unique TYPE tt_target_unique. DATA: lwa_cofi_header TYPE tstrfcofih . FIELD-SYMBOLS: LIKE LINE OF c_t_requests , TYPE t_target . CALL FUNCTION 'PROGRESS_INDICATOR' EXPORTING i_text = 'Cofiles lesen' i_output_immediately = 'X'. LOOP AT c_t_requests ASSIGNING . CALL FUNCTION 'STRF_READ_COFILE' EXPORTING * IV_DIRTYPE = 'T' iv_trkorr = -trkorr * IV_READ_HEADER = 'X' * IV_TRANSPORT_DIRECTORY = ' ' IMPORTING ev_cofi_header = lwa_cofi_header * EV_PROJECT = * ET_PREDECESSORS = TABLES tt_cofi_lines = -targets EXCEPTIONS wrong_call = 1 no_info_found = 2 OTHERS = 3 . IF sy-subrc = 1 OR sy-subrc = 3. WRITE: / 'Fehler', sy-subrc , 'beim Lesen von COFILE zu Auftrag', -trkorr . CONTINUE. ELSE. * Irrelevanten Steps entfernen (siehe FORM WRITE_STEP_DESCRIPTION * in Include LTR_LOG_OVERVIEWF02) DELETE -targets WHERE function CA 'Ypq|r><)(:'. * Nur der jüngste Step einer Sorte ist interessant SORT -targets DESCENDING BY tarsystem trdate trtime. DELETE ADJACENT DUPLICATES FROM -targets COMPARING tarsystem function. LOOP AT -targets ASSIGNING . IF -function CA 'R'. " Methodenausführung -xpra = 'X'. ENDIF. INSERT INTO TABLE c_t_targets_unique. ENDLOOP. ENDIF. ENDLOOP. ENDFORM. " read_targets *---------------------------------------------------------------------* * FORM filter_targets * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> C_T_REQUESTS * * --> C_T_TARGETS * *---------------------------------------------------------------------* FORM filter_targets CHANGING c_t_requests TYPE tt_request. DATA: l_lines TYPE i . FIELD-SYMBOLS: LIKE LINE OF c_t_requests , TYPE t_target . DATA: l_tabix TYPE sytabix. CHECK p_misson NE space OR p_xpra NE space OR p_haskey NE space OR p_genkey NE space. CALL FUNCTION 'PROGRESS_INDICATOR' EXPORTING i_text = 'Aufträge filtern' i_output_immediately = 'X'. LOOP AT c_t_requests ASSIGNING . l_tabix = sy-tabix. LOOP AT -targets ASSIGNING WHERE tarsystem = p_misson AND trdate NE space. ENDLOOP. IF sy-subrc = 0. DELETE c_t_requests INDEX l_tabix. ENDIF. IF IS ASSIGNED. IF p_xpra = 'X' AND -xpra = space OR p_haskey = 'X' AND -haskeys = space OR p_genkey = 'X' AND -generic = space. DELETE c_t_requests INDEX l_tabix. ENDIF. ENDIF. ENDLOOP. DESCRIBE TABLE c_t_requests LINES l_lines. MESSAGE s001(bl) WITH l_lines 'Aufträge selektiert'. ENDFORM. "filter_targets *---------------------------------------------------------------------* * FORM read_objects * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> C_T_REQUESTS * * --> ENDFORM * *---------------------------------------------------------------------* FORM read_objects CHANGING c_t_requests TYPE tt_request. FIELD-SYMBOLS: TYPE t_request , LIKE LINE OF -objects . DATA: le_request TYPE trwbo_request , l_category LIKE e070-korrdev , l_clidep(1) . CHECK g_objects_read IS INITIAL. CALL FUNCTION 'PROGRESS_INDICATOR' EXPORTING i_text = 'Objektschlüssel lesen und auswerten' i_output_immediately = 'X'. LOOP AT c_t_requests ASSIGNING . CLEAR le_request. MOVE-CORRESPONDING TO le_request-h. CALL FUNCTION 'TRINT_READ_REQUEST' EXPORTING * IV_READ_E070 = ' ' * IV_READ_E07T = ' ' * IV_READ_E070C = ' ' * IV_READ_E070M = ' ' iv_read_objs_keys = 'X' * IV_READ_OBJS = ' ' * IV_READ_ATTRIBUTES = ' ' * IV_SUPPRESS_LOCKFLAG_HANDLING = ' ' * IMPORTING * EV_E07T_DOESNT_EXIST = * EV_E070C_DOESNT_EXIST = * EV_E070M_DOESNT_EXIST = CHANGING cs_request = le_request EXCEPTIONS error_occured = 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. ELSE. -objects = le_request-objects[]. LOOP AT le_request-keys TRANSPORTING NO FIELDS WHERE tabkey CA '*+'. -generic = 'X'. EXIT. ENDLOOP. IF NOT le_request-keys[] IS INITIAL. -haskeys = 'X'. ENDIF. LOOP AT -objects ASSIGNING . CALL FUNCTION 'TR_CHECK_TYPE' EXPORTING wi_e071 = * IV_TRANSLATE_OBJNAME = ' ' IMPORTING * PE_RESULT = * WE_E071 = * WE_LOCK_KEY = * WE_TADIR = * WE_COMPLETE_ONLY = we_category = l_category we_cli_dep = l_clidep * WE_TABLE_TYP = * WE_TABLE_CONTFLAG = * PE_NAME_TOO_LONG = * EV_NO_OBJECT_NAME = * EV_R3TRTEXT_SYNTAXERROR = * EV_LANGTYP = * EV_LANGTYPA = * EV_LOGO_OBJ = * EV_CURR_SETTING = * EV_NAME_TOO_LONG_FOR_OLD = * EV_NAME_WITH_NONSTANDARD_CHARS = * EV_NAMESPACE = * EV_INVALID_PREFIX_SYNTAX = * EV_PREFIX_NOT_ALLOWED = * EV_CASE_SENSITIVE = * EV_OBJLEN = * EV_INVALID_LANGUAGE_FIELD = . IF l_clidep = 'X'. MOVE l_clidep TO -clidep. ENDIF. IF l_category = 'CUSY'. MOVE 'X' TO -cusy. ENDIF. ENDLOOP. ENDIF. ENDLOOP. g_objects_read = 'X'. ENDFORM. " read_objects *---------------------------------------------------------------------* * FORM output_list * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> C_T_REQUESTS * * --> ENDFORM * *---------------------------------------------------------------------* FORM output_list USING i_t_requests TYPE tt_request i_t_targets TYPE tt_target_unique. FIELD-SYMBOLS: TYPE t_request , TYPE t_target . DEFINE empty_output. write: at &1(1) space no-gap, sy-vline no-gap , at (10) space no-gap, sy-vline no-gap , at (8) space no-gap, sy-vline no-gap , at (7) space no-gap, sy-vline no-gap . END-OF-DEFINITION. DATA: l_stripe TYPE i , l_retc(4) TYPE n . LOOP AT i_t_requests ASSIGNING . l_stripe = sy-tabix MOD 2. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. WRITE: / sy-vline NO-GAP , -trkorr(10) NO-GAP HOTSPOT ON, sy-vline NO-GAP , -korrdev NO-GAP, sy-vline NO-GAP , -as4user NO-GAP, sy-vline NO-GAP , -as4date NO-GAP, sy-vline NO-GAP , -as4text(52) NO-GAP, sy-vline NO-GAP . MOVE -trkorr TO e070-trkorr. HIDE e070-trkorr. IF -clidep = 'X'. FORMAT COLOR COL_TOTAL. ELSE. FORMAT COLOR COL_NORMAL. ENDIF. WRITE: -clidep NO-GAP, sy-vline NO-GAP. IF -cusy = 'X'. FORMAT COLOR COL_HEADING. ELSE. FORMAT COLOR COL_NORMAL. ENDIF. WRITE: -cusy NO-GAP, sy-vline NO-GAP. FORMAT COLOR COL_NORMAL. IF -xpra = 'X'. WRITE AT 84(2) icon_submit AS ICON QUICKINFO 'Methodenausführung'. ENDIF. IF -haskeys = 'X'. WRITE AT 87(2) icon_foreign_key AS ICON QUICKINFO 'Mit Key(s)'. ENDIF. IF -generic = 'X'. WRITE AT 90(2) icon_warning AS ICON QUICKINFO 'Generischer Key!'. ENDIF. SORT -targets DESCENDING BY trdate trtime. * DEV READ TABLE -targets ASSIGNING WITH KEY tarsystem = p_dev. IF sy-subrc = 0. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. IF -retcode < 4. FORMAT COLOR COL_POSITIVE. ELSEIF -retcode < 8. FORMAT COLOR COL_TOTAL. ELSE. FORMAT COLOR COL_NEGATIVE. ENDIF. MOVE -retcode TO l_retc. WRITE: AT 99 -function NO-GAP, sy-vline NO-GAP , -trdate NO-GAP, sy-vline NO-GAP , -trtime NO-GAP, sy-vline NO-GAP , (7) l_retc NO-GAP, sy-vline NO-GAP . ELSE. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. empty_output 99. ENDIF. * QUA READ TABLE -targets ASSIGNING WITH KEY tarsystem = p_qua. IF sy-subrc = 0. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. IF -retcode < 4. FORMAT COLOR COL_POSITIVE. ELSEIF -retcode < 8. FORMAT COLOR COL_TOTAL. ELSE. FORMAT COLOR COL_NEGATIVE. ENDIF. MOVE -retcode TO l_retc. WRITE: AT 129 -function NO-GAP, sy-vline NO-GAP , -trdate NO-GAP, sy-vline NO-GAP , -trtime NO-GAP, sy-vline NO-GAP , (7) l_retc NO-GAP, sy-vline NO-GAP . ELSE. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. empty_output 129. ENDIF. * PRD READ TABLE -targets ASSIGNING WITH KEY tarsystem = p_prd. IF sy-subrc = 0. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. IF -retcode < 4. FORMAT COLOR COL_POSITIVE. ELSEIF -retcode < 8. FORMAT COLOR COL_TOTAL. ELSE. FORMAT COLOR COL_NEGATIVE. ENDIF. MOVE -retcode TO l_retc. WRITE: AT 159 -function NO-GAP, sy-vline NO-GAP , -trdate NO-GAP, sy-vline NO-GAP , -trtime NO-GAP, sy-vline NO-GAP , (7) l_retc NO-GAP, sy-vline NO-GAP . ELSE. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. empty_output 159. ENDIF. * TRA READ TABLE -targets ASSIGNING WITH KEY tarsystem = p_tra. IF sy-subrc = 0. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. IF -retcode < 4. FORMAT COLOR COL_POSITIVE. ELSEIF -retcode < 8. FORMAT COLOR COL_TOTAL. ELSE. FORMAT COLOR COL_NEGATIVE. ENDIF. MOVE -retcode TO l_retc. WRITE: AT 189 -function NO-GAP, sy-vline NO-GAP , -trdate NO-GAP, sy-vline NO-GAP , -trtime NO-GAP, sy-vline NO-GAP , (7) l_retc NO-GAP, sy-vline NO-GAP . ELSE. IF l_stripe = 1. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ELSE. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. ENDIF. empty_output 189. ENDIF. WRITE AT sy-linsz sy-vline NO-GAP. ENDLOOP. ULINE. PERFORM output_statistic USING i_t_requests. ENDFORM. " output_list *&---------------------------------------------------------------------* *& Form output_list_alv *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->I_T_TARGETS text *----------------------------------------------------------------------* FORM output_list_alv USING i_t_targets TYPE tt_target_unique. FIELD-SYMBOLS: TYPE t_request , TYPE t_target . * TODO: Tabelle TCERELE auswerten, um Systeme in die richtige * Reihenfolge zu bringen PERFORM fieldcat_build USING i_t_targets CHANGING gt_fieldcat. CALL FUNCTION 'REUSE_ALV_TABLE_CREATE' EXPORTING it_fieldcat = gt_fieldcat i_callback_program = 'Z_CTS_CROSS_REF' i_formname = 'ITAB_CALLBACK'. ENDFORM. "output_list_alv *---------------------------------------------------------------------* * FORM fieldcat_build * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> I_T_TARGETS * * --> C_T_FCAT * *---------------------------------------------------------------------* FORM fieldcat_build USING i_t_targets TYPE tt_target_unique CHANGING c_t_fcat TYPE slis_t_fieldcat_alv. FIELD-SYMBOLS: TYPE t_request , TYPE t_target . DATA: ls_field LIKE LINE OF c_t_fcat , l_odd TYPE i , l_emph(4) . * CLEAR ls_field. * ls_field-ref_tabname = 'SLIS_SPECIALCOL_ALV'. ** ls_field-ref_tabname = 'MASS_MARC'. ** ls_field-ref_fieldname = 'COLINFO'. * ls_field-fieldname = 'COLINFO'. * ls_field-tech = 'X'. * APPEND ls_field TO c_t_fcat. * CLEAR ls_field. ls_field-ref_tabname = 'E070'. ls_field-fieldname = 'TRKORR'. ls_field-ref_fieldname = 'TRKORR'. ls_field-intlen = 20. ls_field-outputlen = 12. ls_field-ddictxt = 'S'. " kurzen Text nehmen ls_field-key = 'X'. APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-ref_tabname = 'E070'. ls_field-fieldname = 'KORRDEV'. ls_field-ref_fieldname = 'KORRDEV'. ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-ref_tabname = 'E070'. ls_field-fieldname = 'AS4USER'. ls_field-ref_fieldname = 'AS4USER'. ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-ref_tabname = 'E070'. ls_field-fieldname = 'AS4DATE'. ls_field-ref_fieldname = 'AS4DATE'. ls_field-edit_mask = '==MODAT'. ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-ref_tabname = 'E07T'. ls_field-fieldname = 'AS4TEXT'. ls_field-ref_fieldname = 'AS4TEXT'. ls_field-rollname = 'AS4TEXT'. ls_field-intlen = 60. ls_field-outputlen = 30. ls_field-ddictxt = 'L'. " langen Text nehmen APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-ref_tabname = 'OBJH'. ls_field-fieldname = 'CLIDEP'. ls_field-ref_fieldname = 'CLIDEP'. ls_field-checkbox = 'X'. APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-fieldname = 'SELECTED'. ls_field-rollname = 'FLAG'. ls_field-tech = 'X'. APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-fieldname = 'HASKEYS'. ls_field-rollname = 'FLAG'. ls_field-checkbox = 'X'. ls_field-seltext_s = 'mit_Key(s)'(001). ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-fieldname = 'GENERIC'. ls_field-rollname = 'FLAG'. ls_field-checkbox = 'X'. ls_field-seltext_s = 'generisch'(002). ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-fieldname = 'CUSY'. ls_field-rollname = 'FLAG'. ls_field-checkbox = 'X'. ls_field-seltext_s = 'CUSY'(004). " mandantenunabh. Customizing-Objekt ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. CLEAR ls_field. ls_field-fieldname = 'XPRA'. ls_field-rollname = 'FLAG'. ls_field-checkbox = 'X'. ls_field-seltext_s = 'XPRA'(003). ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. LOOP AT i_t_targets ASSIGNING . l_odd = sy-tabix MOD 2. IF l_odd = 0. l_emph = 'C200'. ELSE. l_emph = 'C210'. ENDIF. * Spalte für Step CLEAR ls_field. ls_field-ref_tabname = 'TMSTPALOG'. ls_field-rollname = 'TRSTEP'. ls_field-ref_fieldname = 'TRSTEP'. ls_field-emphasize = l_emph. CONCATENATE -tarsystem 'STEP' INTO ls_field-fieldname. CONCATENATE -tarsystem 'Step' INTO ls_field-seltext_s SEPARATED BY '_'. ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. * Spalte für Importdatum CLEAR ls_field. CONCATENATE -tarsystem 'DATE' ls_field-fieldname INTO ls_field-fieldname. ls_field-ref_tabname = 'E070'. ls_field-rollname = 'AS4DATE'. ls_field-ref_fieldname = 'AS4DATE'. ls_field-emphasize = l_emph. CONCATENATE -tarsystem 'Datum' INTO ls_field-seltext_s SEPARATED BY '_'. ls_field-ddictxt = 'S'. " kurzen Text nehmen ls_field-edit_mask = '==MODAT'. APPEND ls_field TO c_t_fcat. * Spalte für Importzeit CLEAR ls_field. CONCATENATE -tarsystem 'TIME' ls_field-fieldname INTO ls_field-fieldname. ls_field-ref_tabname = 'E070'. ls_field-ref_fieldname = 'AS4TIME'. ls_field-rollname = 'AS4TIME'. ls_field-emphasize = l_emph. CONCATENATE -tarsystem 'Zeit' INTO ls_field-seltext_s SEPARATED BY '_'. ls_field-ddictxt = 'S'. " kurzen Text nehmen ls_field-edit_mask = '==TIMLO'. APPEND ls_field TO c_t_fcat. * Spalte für Returncode CLEAR ls_field. ls_field-ref_tabname = 'ICONS'. ls_field-ref_fieldname = 'L4'. ls_field-outputlen = 4. ls_field-rollname = 'ICON'. ls_field-emphasize = l_emph. ls_field-icon = 'X'. CONCATENATE -tarsystem 'SYM' INTO ls_field-fieldname. CONCATENATE -tarsystem 'SYM' INTO ls_field-seltext_s SEPARATED BY '_'. ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. * Spalte für Returncode CLEAR ls_field. ls_field-ref_tabname = 'TMSTPALOG'. ls_field-ref_fieldname = 'RETCODE'. ls_field-rollname = 'RETCODE'. ls_field-emphasize = l_emph. CONCATENATE -tarsystem 'RC' INTO ls_field-fieldname. CONCATENATE -tarsystem 'RC' INTO ls_field-seltext_s SEPARATED BY '_'. ls_field-ddictxt = 'S'. " kurzen Text nehmen APPEND ls_field TO c_t_fcat. ENDLOOP. LOOP AT c_t_fcat INTO ls_field. ls_field-col_pos = sy-tabix. MODIFY c_t_fcat FROM ls_field. ENDLOOP. * ls_field-edit_mask = .... * usw. ENDFORM. "fieldcat_build *---------------------------------------------------------------------* * FORM itab_callback * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> ITAB * *---------------------------------------------------------------------* FORM itab_callback TABLES itab. DATA: ls_layo TYPE slis_layout_alv . FIELD-SYMBOLS: TYPE t_request , TYPE t_target . PERFORM itab_fill TABLES itab USING gt_requests gt_targets. UNASSIGN . ASSIGN itab[] TO . * ls_layo-coltab_fieldname = 'COLINFO'. ls_layo-colwidth_optimize = 'X'. ls_layo-box_fieldname = 'SELECTED'. ls_layo-box_tabname = 'ITAB'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' i_bypassing_buffer = 'X' * I_BUFFER_ACTIVE = ' ' i_callback_program = 'Z_CTS_CROSS_REF' i_callback_pf_status_set = 'ALV_PF_STATUS' i_callback_user_command = 'ALV_USER_COMMAND' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = is_layout = ls_layo it_fieldcat = gt_fieldcat * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IT_ALV_GRAPHICS = * IT_ADD_FIELDCAT = * IT_HYPERLINK = * I_HTML_HEIGHT_TOP = * I_HTML_HEIGHT_END = * IT_EXCEPT_QINFO = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = itab EXCEPTIONS program_error = 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. ENDFORM. "itab_callback *---------------------------------------------------------------------* * FORM itab_fill * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> ITAB * * --> IT_REQUESTS * * --> IT_TARGETS * *---------------------------------------------------------------------* FORM itab_fill TABLES itab USING it_requests TYPE tt_request it_targets TYPE tt_target_unique. FIELD-SYMBOLS: TYPE t_request , TYPE t_target , . DATA: l_fname TYPE fieldname , ls_colinfo TYPE slis_specialcol_alv , l_err(4) VALUE 'C611' , l_war(4) VALUE 'C311' , l_suc(4) VALUE 'C511' , l_icon(4) . LOOP AT it_requests ASSIGNING . CLEAR itab. " Zeile initialisieren MOVE-CORRESPONDING TO itab. LOOP AT -targets ASSIGNING . AT NEW tarsystem. CLEAR ls_colinfo. IF -retcode = '0000'. ls_colinfo-color-col = 5. ls_colinfo-color-int = 1. ls_colinfo-color-inv = 0. l_icon = icon_green_light(4). ELSEIF -retcode <= '0004'. ls_colinfo-color-col = 3. ls_colinfo-color-int = 1. ls_colinfo-color-inv = 0. l_icon = icon_yellow_light(4). ELSEIF -retcode > '0004'. ls_colinfo-color-col = 6. ls_colinfo-color-int = 1. ls_colinfo-color-inv = 0. l_icon = icon_red_light(4). ENDIF. * Returncode übertragen CONCATENATE -tarsystem 'RC' INTO l_fname. ASSIGN COMPONENT l_fname OF STRUCTURE itab TO . MOVE -retcode TO . * ICON übertragen CONCATENATE -tarsystem 'SYM' INTO l_fname. ASSIGN COMPONENT l_fname OF STRUCTURE itab TO . MOVE l_icon TO . * Step übertragen CONCATENATE -tarsystem 'STEP' INTO l_fname. ASSIGN COMPONENT l_fname OF STRUCTURE itab TO . MOVE -function TO . * Datum übertragen CONCATENATE -tarsystem 'DATE' INTO l_fname. ASSIGN COMPONENT l_fname OF STRUCTURE itab TO . MOVE -trdate TO . * Zeit übertragen CONCATENATE -tarsystem 'TIME' INTO l_fname. ASSIGN COMPONENT l_fname OF STRUCTURE itab TO . MOVE -trtime TO . ENDAT. ENDLOOP. APPEND itab. " Zeile anfügen ENDLOOP. ENDFORM. "itab_fill *&---------------------------------------------------------------------* *& Form show_request *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_E070_TRKORR text *----------------------------------------------------------------------* FORM show_request USING i_p_trkorr LIKE e070-trkorr. DATA: ls_popup TYPE strhi_popup . ls_popup-start_column = 3. ls_popup-start_row = 3. ls_popup-end_column = 123. ls_popup-end_row = 25. CALL FUNCTION 'TR_LOG_OVERVIEW_REQUEST' EXPORTING iv_trkorr = i_p_trkorr * IV_DIR_TYPE = 'T' iv_detailed_chronology = 'X' * IV_TARGET_SYSTEM = ' ' is_popup = ls_popup EXCEPTIONS e_wrong_call = 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. ENDFORM. " show_request *&---------------------------------------------------------------------* *& Form list_header *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM list_header. SET LEFT SCROLL-BOUNDARY COLUMN 90. ULINE. FORMAT COLOR COL_HEADING INTENSIFIED ON. WRITE: / sy-vline NO-GAP , AT 94 sy-vline NO-GAP , AT 95(1) 'A' QUICKINFO 'mandantenabhängig' NO-GAP, sy-vline NO-GAP , AT 97(1) 'S' QUICKINFO 'mand.unabh. Custom.' NO-GAP, sy-vline NO-GAP , AT 99(29) p_dev(3) NO-GAP, sy-vline NO-GAP , AT 129(29) p_qua(3) NO-GAP, sy-vline NO-GAP , AT 159(29) p_prd(3) NO-GAP, sy-vline NO-GAP , AT 189(29) p_tra(3) NO-GAP, sy-vline NO-GAP . WRITE AT sy-linsz sy-vline NO-GAP. ULINE. ENDFORM. " list_header *&---------------------------------------------------------------------* *& Form show_all_objects *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM show_all_objects. FIELD-SYMBOLS: TYPE LINE OF tt_request , TYPE LINE OF tt_object . DATA: ls_layout TYPE slis_layout_alv. CLEAR gt_e071[]. LOOP AT gt_requests ASSIGNING . LOOP AT -objects ASSIGNING . * WRITE: / -trkorr, * -as4pos, * -pgmid, * -object, * -obj_name, * -objfunc, * -lockflag, * -gennum, * -lang, * -activity. APPEND TO gt_e071. ENDLOOP. ENDLOOP. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = * I_BUFFER_ACTIVE = ' ' i_callback_program = sy-repid * I_CALLBACK_PF_STATUS_SET = ' ' i_callback_user_command = 'OBJLIST_EVENT_UCOMM' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' i_structure_name = 'E071' * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = is_layout = ls_layout * IT_FIELDCAT = * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IT_ALV_GRAPHICS = * IT_ADD_FIELDCAT = * IT_HYPERLINK = * I_HTML_HEIGHT_TOP = * I_HTML_HEIGHT_END = * IT_EXCEPT_QINFO = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = gt_e071 EXCEPTIONS program_error = 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. ENDFORM. " show_all_objects *&---------------------------------------------------------------------* *& Form objlist_event_ucomm *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->E_UCOMM text *----------------------------------------------------------------------* FORM objlist_event_ucomm USING e_ucomm LIKE sy-ucomm es_field TYPE slis_selfield. "#EC * FIELD-SYMBOLS: LIKE LINE OF gt_e071 , TYPE t_request . DATA: ls_request_header TYPE trwbo_request_header , ls_key TYPE e071k . READ TABLE gt_e071 ASSIGNING INDEX es_field-tabindex. CHECK sy-subrc = 0. READ TABLE gt_requests ASSIGNING WITH KEY trkorr = -trkorr. MOVE-CORRESPONDING -header TO ls_request_header. IF -keys[] IS INITIAL. CALL FUNCTION 'TRINT_READ_COMM_KEYS' EXPORTING wi_trkorr = -trkorr TABLES wt_e071k = -keys[]. ENDIF. * READ TABLE -keys INTO ls_key * WITH KEY trkorr = -trkorr * pgmid = -pgmid * mastertype = -object * mastername = -obj_name. ** as4pos = -as4pos. CASE e_ucomm. WHEN '&IC1'. " Line-Selection IF es_field-fieldname = 'OBJFUNC'. IF -objfunc NE space. LOOP AT -keys INTO ls_key WHERE trkorr = -trkorr * and pgmid = -pgmid * and mastertype = -object * and mastername = -obj_name AND tabkey CA '*+'. CALL FUNCTION 'TRKLE_POPUP_TO_EDIT_TABKEY' EXPORTING * IV_EDIT_MODE = ' ' * IV_NO_CHECK = 'X' is_key = ls_key is_request_header = ls_request_header * IMPORTING * EV_NEW_TABKEY = * EV_USER_NAVIGATION = EXCEPTIONS user_canceled = 1 invalid_input = 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. EXIT. ENDIF. ENDLOOP. ENDIF. ELSE. CALL FUNCTION 'TR_PRESENT_REQUEST' EXPORTING iv_trkorr = -trkorr * IV_HIGHLIGHT = 'X' * IS_POPUP = * IV_SHOWONLY = ' ' . ENDIF. WHEN 'ALLOBJECTS'. PERFORM show_all_objects. WHEN OTHERS. ENDCASE. ENDFORM. "objlist_event_ucomm *&---------------------------------------------------------------------* *& Form sort_requests *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_GS_SORT text * <--P_GT_REQUESTS text *----------------------------------------------------------------------* FORM sort_requests USING is_sort TYPE t_sortopts CHANGING ct_requests TYPE tt_request. FIELD-SYMBOLS: LIKE LINE OF ct_requests , , , . LOOP AT ct_requests ASSIGNING . ASSIGN COMPONENT is_sort-sortby1 OF STRUCTURE -header TO . IF sy-subrc <> 0. ASSIGN space TO . ENDIF. ASSIGN COMPONENT is_sort-sortby2 OF STRUCTURE -header TO . IF sy-subrc <> 0. ASSIGN space TO . ENDIF. ASSIGN COMPONENT is_sort-sortby3 OF STRUCTURE -header TO . IF sy-subrc <> 0. ASSIGN space TO . ENDIF. CONCATENATE INTO -sortkey. ENDLOOP. IF is_sort-direct1 = 'ASC'. SORT ct_requests BY sortkey ASCENDING. ELSEIF is_sort-direct1 = 'DESC'. SORT ct_requests BY sortkey DESCENDING. ELSE. SORT ct_requests BY sortkey ASCENDING. ENDIF. ENDFORM. " sort_requests *&---------------------------------------------------------------------* *& Form set_sort *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_GS_SORT text *----------------------------------------------------------------------* FORM set_sort CHANGING cs_sort TYPE t_sortopts. DATA: l_retval , lt_sval TYPE TABLE OF sval WITH HEADER LINE . lt_sval-tabname = 'GS_SORT'. lt_sval-fieldname = 'SORTBY1'. lt_sval-value = gs_sort-sortby1. APPEND lt_sval. lt_sval-tabname = 'GS_SORT'. lt_sval-fieldname = 'SORTBY2'. lt_sval-value = gs_sort-sortby2. APPEND lt_sval. lt_sval-tabname = 'GS_SORT'. lt_sval-fieldname = 'SORTBY3'. lt_sval-value = gs_sort-sortby3. APPEND lt_sval. CALL FUNCTION 'POPUP_GET_VALUES' EXPORTING no_value_check = ' ' popup_title = 'Sortierung' * START_COLUMN = '5' * START_ROW = '5' IMPORTING returncode = l_retval TABLES fields = lt_sval * EXCEPTIONS * ERROR_IN_FIELDS = 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. ENDFORM. " set_sort *&---------------------------------------------------------------------* *& Form output_statistic *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM output_statistic USING it_requests TYPE tt_request. FIELD-SYMBOLS LIKE LINE OF it_requests. DATA: l_count TYPE sydbcnt , l_xpra TYPE sydbcnt , l_cusy TYPE sydbcnt , l_haskeys TYPE sydbcnt , l_generic TYPE sydbcnt , l_released TYPE sydbcnt , l_changeable TYPE sydbcnt , l_error TYPE sydbcnt . DESCRIBE TABLE it_requests LINES l_count. LOOP AT it_requests ASSIGNING . CASE 'X'. WHEN -xpra. ADD 1 TO l_xpra. WHEN -haskeys. ADD 1 TO l_haskeys. WHEN -generic. ADD 1 TO l_generic. WHEN -cusy. ADD 1 TO l_cusy. WHEN OTHERS. ENDCASE. CASE -trstatus. WHEN 'D'. ADD 1 TO l_changeable. WHEN 'R'. ADD 1 TO l_released. WHEN OTHERS. ADD 1 TO l_error. ENDCASE. ENDLOOP. FORMAT COLOR COL_TOTAL. WRITE: / sy-vline NO-GAP, 5 l_count, 'Aufträge', AT sy-linsz sy-vline , / sy-vline NO-GAP, 5 l_released, 'freigegeben', AT sy-linsz sy-vline , / sy-vline NO-GAP, 5 l_changeable, 'änderbar', AT sy-linsz sy-vline , / sy-vline NO-GAP, 5 l_error, 'fehlerhaft', AT sy-linsz sy-vline , / sy-vline NO-GAP, 5 l_xpra, 'mit Methodenausführung', AT sy-linsz sy-vline , / sy-vline NO-GAP, 5 l_haskeys, 'mit Tabellenschlüsseln', AT sy-linsz sy-vline , / sy-vline NO-GAP, 5 l_generic, 'mit generischem Schlüssel', AT sy-linsz sy-vline , / sy-vline NO-GAP, 5 l_cusy, 'mit mand.unabh. Customizing', AT sy-linsz sy-vline . ULINE. ENDFORM. " output_statistic *&---------------------------------------------------------------------* *& Form do_all *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM do_all . PERFORM read_requests CHANGING gt_requests. * Objektlisten lesen + Mandantenabhängigkeit ermitteln PERFORM read_objects CHANGING gt_requests. PERFORM read_targets CHANGING gt_requests gt_targets. PERFORM filter_targets CHANGING gt_requests. PERFORM sort_requests USING gs_sort CHANGING gt_requests. IF p_alv IS INITIAL. PERFORM output_list USING gt_requests gt_targets. ELSE. PERFORM output_list_alv USING gt_targets. ENDIF. ENDFORM. " do_all *&---------------------------------------------------------------------* *& Form pos_restore *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM pos_restore USING p_index p_page p_col p_row. SCROLL LIST TO COLUMN p_col TO PAGE p_page LINE p_row INDEX p_index. ENDFORM. " pos_restore *&---------------------------------------------------------------------* *& Form pos_save *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM pos_save . gs_pos-page = sy-pagno. gs_pos-col = sy-staco. gs_pos-row = sy-staro. ENDFORM. " pos_save *&---------------------------------------------------------------------* *& Form transport *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_E070_TRKORR text *----------------------------------------------------------------------* FORM transport USING i_trkorr TYPE trkorr. DATA: li_target LIKE tmscsys-sysnam , li_tarcli LIKE tmsbuffer-tarcli , l_answer , lt_requests TYPE TABLE OF cts_req WITH HEADER LINE . CALL FUNCTION 'TMS_UI_FORWARD_TR_REQUEST' EXPORTING iv_request = i_trkorr * IV_REQTXT = * IV_TARGET = * IV_TARDOM = * IV_TARTXT = * IV_SOURCE = * IV_SRCDOM = * IV_FTP_ALLOWED = * IV_NR_OF_GRPS = * IV_CTC_ACTIVE = * IV_VERBOSE = * IV_EXPERT_MODE = * IT_REQUESTS = IMPORTING ev_target = li_target ev_tarcli = li_tarcli * TABLES * TT_SYSTEM = EXCEPTIONS cancelled_by_user = 1 forward_request_failed = 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. CALL FUNCTION 'TMS_UI_IMPORT_TR_REQUEST' EXPORTING iv_system = li_target * IV_DOMAIN = iv_request = i_trkorr iv_tarcli = li_tarcli * IV_SYSTXT = * IV_REQTXT = * IV_CTC_ACTIVE = * IV_SOME_ACTIVE = 'X' * IV_VERBOSE = * IV_EXPERT_MODE = * IV_CHECK_STRATEGY = * IT_REQUESTS = * IT_CLIENTS = * IT_ALL_REQUESTS = EXCEPTIONS cancelled_by_user = 1 import_request_denied = 2 import_request_failed = 3 OTHERS = 4 . CASE sy-subrc. WHEN 0. WHEN 1. EXIT. WHEN OTHERS. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDCASE. ENDFORM. " transport *&---------------------------------------------------------------------* *& Form version_compare *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->I_TRKORR text *----------------------------------------------------------------------* FORM version_compare USING i_trkorr TYPE trkorr. DATA: li_target LIKE tmscsys-sysnam , li_tarcli LIKE tmsbuffer-tarcli , l_retcode , lt_requests TYPE TABLE OF cts_req WITH HEADER LINE , lt_sval TYPE TABLE OF sval WITH HEADER LINE . lt_sval-tabname = 'RFCDES'. "#EC NOTEXT lt_sval-fieldname = 'RFCDEST'. "#EC NOTEXT APPEND lt_sval. CALL FUNCTION 'POPUP_GET_VALUES_DB_CHECKED' EXPORTING * CHECK_EXISTENCE = 'X' popup_title = 'Destination für Vergleich angeben'(005) * START_COLUMN = '5' * START_ROW = '5' IMPORTING returncode = l_retcode TABLES fields = lt_sval EXCEPTIONS error_in_fields = 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. READ TABLE lt_sval INDEX 1. SUBMIT rsvcad11 VIA SELECTION-SCREEN AND RETURN WITH dest = lt_sval-value WITH trkorr = i_trkorr. ENDFORM. " version_compare *&---------------------------------------------------------------------* *& Form alv_pf_status *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM alv_pf_status USING rt_extab TYPE slis_t_extab. SET PF-STATUS 'STANDARD_FULLSCREEN'. ENDFORM. "alv_pf_status *&---------------------------------------------------------------------* *& Form alv_user_command *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->R_UCOMM text * -->RS_SELFIELD text *----------------------------------------------------------------------* FORM alv_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. "#EC * FIELD-SYMBOLS: , . RANGES: ra_docnum FOR edidc-docnum , ra_credat FOR edidc-credat . DATA: l_status TYPE edi_status , l_upddat LIKE edidc-upddat , l_updtim LIKE edidc-updtim , l_statx TYPE edi_statx_ , lt_edids TYPE TABLE OF edids WITH HEADER LINE . IF rs_selfield-tabindex > 0. READ TABLE ASSIGNING INDEX rs_selfield-tabindex. CHECK sy-subrc = 0. ENDIF. CASE r_ucomm. WHEN 'VERSIO'. ASSIGN COMPONENT 'TRKORR' OF STRUCTURE "#EC NOTEXT TO . * SET PARAMETER ID 'DCN' FIELD lwa_compare-docnum. * CALL TRANSACTION 'WE02' AND SKIP FIRST SCREEN. CHECK sy-subrc = 0. CLEAR: ra_docnum, ra_docnum[]. PERFORM version_compare USING . WHEN 'ALLOBJECTS'. ASSIGN COMPONENT rs_selfield-fieldname OF STRUCTURE TO . PERFORM show_all_objects. WHEN '&IC1'. " Doppelklick CASE rs_selfield-fieldname. WHEN 'TRKORR'. ASSIGN COMPONENT rs_selfield-fieldname OF STRUCTURE TO . * SET PARAMETER ID 'DCN' FIELD lwa_compare-docnum. * CALL TRANSACTION 'WE02' AND SKIP FIRST SCREEN. CLEAR: ra_docnum, ra_docnum[]. PERFORM show_request USING . WHEN 'TRANSPORT'. ASSIGN COMPONENT rs_selfield-fieldname OF STRUCTURE TO . * SET PARAMETER ID 'DCN' FIELD lwa_compare-docnum. * CALL TRANSACTION 'WE02' AND SKIP FIRST SCREEN. CLEAR: ra_docnum, ra_docnum[]. PERFORM transport USING . * WHEN gc_ucomm_refresh. * * CALL FUNCTION 'REUSE_ALV_GRID_LAYOUT_INFO_GET' * IMPORTING * es_layout = gs_layout * et_fieldcat = gt_fieldcat * et_sort = gt_sort * et_filter = gt_filter * es_grid_scroll = gs_grid_scroll * es_variant = gs_variant * et_marked_columns = gt_marked_columns * et_filtered_entries = gt_filtered_entries * et_fieldcat_backend = gt_fieldcat_backend * es_print = gs_print * EXCEPTIONS * no_infos = 1 * program_error = 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. * * PERFORM select_and_process. * * CALL FUNCTION 'REUSE_ALV_GRID_LAYOUT_INFO_SET' * EXPORTING * is_layout = gs_layout * it_fieldcat = gt_fieldcat * it_sort = gt_sort * it_filter = gt_filter * is_grid_scroll = gs_grid_scroll * is_print = gs_print. * ** Daten aus sortierter Tabelle übernehmen * gt_outtab = gt_compare[]. * REFRESH gt_compare. * * rs_selfield-refresh = 'X'. WHEN OTHERS. ENDCASE. WHEN OTHERS. ENDCASE. CHECK r_ucomm EQ 'LIST' OR r_ucomm EQ 'FULLSCREEN' OR r_ucomm EQ 'GRID'. CASE r_ucomm. WHEN 'LIST'. ENDCASE. rs_selfield-exit = 'X'. ENDFORM. "alv_user_command