ABAP cross system object recursive dependencies check with transport

If you need to know the scope and dependencies of a repository workbench object and if needed at the end prepare a coherent transport request this tool is what you are looking for.

You can even run cross-system version checks to detect objects differences and decide what to include in your transport or analyze each object using direct object editor navigation with all standard features.

Since SAP objects hierarchy is complex to understand this tool will be versioned and I hope one day more objects can be added.

Standard features:

  • Normally attached to each ABAP objects development transactions you can run Environment Analysis (menu Utilities) to list all used objects but without recursive check in founded ones.
  • The same for existent standard reports like RSDEPEND where you can display dependencies but without recursive check.

If none of these standard methods are suitable for you please implement the tool bellow.

How to implement:

  • Create a executable report in your SAP development system with name ZNM_OBJS_DEP_TRANS and description Object Dependencies and Transport using transaction SE38;
  • Copy past code bellow and activate the program;
  • Create/Fill corresponding Text Symbols and Selection Texts. Please check the meaning at top comments of the program;
  • Create GUI Status with name STATUS and add standard functions &ALL, &SAL, &OUP, &ODN, &ILT, %PC, &OL0, &OAD and &AVE.

Create customer function code TR :

  • Optional Step: To convert local class in code to Global in SE24 please follow this link: Convert local class in program to global class in SE24

After conversion change reference of global object variable GO_ODT to the new Global class and delete local class definition and implementation from code.


If you are not able to activate the program because of nonexistent standard objects please downgrade for earlier SAP versions. If you need help on it,please kept me informed.


Copy past the code bellow or download the attached file:


 REPORT znm_obj_dep_trans MESSAGE-ID 00. *----------------------------------------------------------------------* * Created by NM for Object Dependencies Checks and Transport *----------------------------------------------------------------------* * Text Symbols * B01  Object selection * B02  Aditional options * C01  Remote * C02  Obj. Desc. * C03  Deepness * C04  Scope * CM1  Cross-system objects version check * M01  Objects not found * M02  Please fill all required fields * M03  Critical error * M04  No objects selected * M05  Transport not allowed for multiple targets * M06  Error creating transport request * M07  Objects added to request ( * M08  Please select a remote system * M09  RFCs destinations missing * M10  Request canceled, object with $TEMP detected * M11  Navigation not suported * M12  Transport canceled * M13  Object dependencies check not support * M14  No dependecies found * M15  Error treating transport request * M16  Please fill deepness for standard objects * O01  Equal * O02  Different * O03  New * O04  No version * P01  Adding object * P02  Checking Dependecies * P03  Checking Remote * P04  Display objects * P05  Processing options * PB1  % Complete * * Selection Texts * P_DEEP  Dependencies Deepness * P_ERFC  Exclude RFCs if exist * P_ICD  Include Tables CDs * P_ILO  Include Tables Locks * P_ITM  Include Tables Maintenances * P_OBJECT  Object Type * P_OBJ_N  Object Name * P_PGMID  Program ID * P_RFC  Remote Versions Checks * P_RFC_D  System Name * P_ST  Include Standard Objects * P_TR  Transport Request * R_OBJ  Check Workbench Object * R_TR  Check Transport Request * * Standard Status GUI function codes: &ALL, &SAL, &OUP, &ODN, &ILT, %PC, &OL0, &OAD and &AVE * Status GUI function code: TR Create Transport * *---------------------------------------------- LOCAL CLASS DEFINITION * CLASS obj_dep_trans DEFINITION FINAL.    PUBLIC SECTION.      TYPE-POOLS: abap, icon. *--------------------------------------------------- Public Structures *      TYPES:        BEGIN OF ty_objects,          status   TYPE icon_d,       "Check status          pgmid    TYPE pgmid,        "Program ID in Requests and Tasks          object   TYPE trobjtype,    "Object Type          obj_name TYPE sobj_name,    "Object Name in Object Directory          obj_desc TYPE ddtext,       "Object Explanatory short text          deep     TYPE i,            "Object deepness position          scope    TYPE icon_d,       "Object Scope          devclass TYPE developclass, "Development Package          target   TYPE tr_target,    "Transport Target of Request          remote(10),                 "Remote check status        END OF ty_objects.      DATA:        t_objects   TYPE TABLE OF ty_objects, "Objects to transport        t_objs_desc TYPE TABLE OF ko100,      "Objects prograns IDs        t_e071      TYPE TABLE OF e071,       "Object Entries of Requests/Tasks        t_e071k     TYPE TABLE OF e071k. *------------------------------------------------------ Public Methods *      METHODS: *---------- Public Methods Constructor Definition ----------*        constructor, *---------- Set global values ----------*        set_values IMPORTING i_robj   TYPE abap_bool   "Add from Object                             i_pgmid  TYPE pgmid       "Program ID in Requests and Tasks                             i_object TYPE trobjtype   "Object Type                             i_obj_n  TYPE sobj_name   "Object Name in Object Directory                             i_rtr    TYPE abap_bool   "Add from TR                             i_tr     TYPE trkorr      "Transport request                             i_deep   TYPE i           "Dependencies deepness                             i_rfc    TYPE abap_bool   "Remote versions checks                             i_rfc_d  TYPE tmssysnam   "System Name                             i_st     TYPE abap_bool   "Include standard objects                             i_itm    TYPE abap_bool   "Include Tables Maintenance                             i_ilo    TYPE abap_bool   "Include Lock objects                             i_icd    TYPE abap_bool   "Include Change documents                             i_erfc   TYPE abap_bool,  "Exclude RFCs if exist *---------- Public Methods PGMID Definition ----------*        pgmid_f4, *---------- Public Methods Object F4 Definition ----------*        object_f4 CHANGING c_pgmid  TYPE pgmid      "Program ID in Requests and Tasks                           c_object TYPE trobjtype, "Object Type *---------- Public Methods Object Name F4 Definition ----------*        object_name_f4 IMPORTING i_object TYPE trobjtype  "Object Type                        CHANGING c_obj_n  TYPE sobj_name, "Object Name in Object Directory *---------- Public Methods Transport Request F4 Definition ----------*        tr_f4 CHANGING c_tr TYPE trkorr,  "Request/Task *---------- Public Methods RFC F4 Definition ----------*        rfc_f4 CHANGING c_rfc_d TYPE tmssysnam, "TMS: System Name *---------- Public Methods Screen PAI Definition ----------*        screen_pai, *---------- Public Methods Run Checks Definition ----------*        run_checks, *---------- Public Methods Display Objects Definition ----------*        display_objects. *----------------------------------------------------- Public Handlers *      METHODS: *---------- Public Handler On User Command Definition ----------*        on_user_command FOR EVENT added_function OF cl_salv_events  IMPORTING e_salv_function, *---------- Public Handler On Double Click Definition ----------*        on_double_click FOR EVENT double_click OF cl_salv_events_table IMPORTING row column. "#EC NEEDED    PRIVATE SECTION. *--------------------------------------------------- Private Constants *      DATA:        c_r3tr TYPE pgmid        VALUE 'R3TR',  "Main object        c_tobj TYPE trobjtype    VALUE 'TOBJ',  "Table content in transport        c_chdo TYPE trobjtype    VALUE 'CHDO',  "Change documents        c_fugr TYPE trobjtype    VALUE 'FUGR',  "Function group        c_tabl TYPE trobjtype    VALUE 'TABL',  "Table        c_devc TYPE trobjtype    VALUE 'DEVC',  "Development class        c_temp TYPE developclass VALUE '$TMP'.  "Local development class *--------------------------------------------------- Private Variables *      DATA:        v_robj    TYPE abap_bool, "Add from Object        v_pgmid   TYPE pgmid,     "Program ID in Requests and Tasks        v_object  TYPE trobjtype, "Object Type        v_obj_n   TYPE sobj_name, "Object Name in Object Directory        v_rtr     TYPE abap_bool, "Add from TR        v_tr      TYPE trkorr,    "Transport request        v_deep    TYPE i,         "Dependencies deepness        v_rfc     TYPE abap_bool, "Remote versions checks        v_rfc_d   TYPE tmssysnam, "System Name        v_st      TYPE abap_bool, "Include standard objects        v_itm     TYPE abap_bool, "Include Tables Maintenance        v_ilo     TYPE abap_bool, "Include Lock objects        v_icd     TYPE abap_bool, "Include Change documents        v_erfc    TYPE abap_bool, "Exclude RFCs if exist        v_percent TYPE i.         "Progress bar percentage *--------------------------------------------------- Private Class ALV *      DATA o_objects TYPE REF TO cl_salv_table. "Objects ALV *----------------------------------------------------- Private Methods *      METHODS: *---------- Private Methods Progress Bar Definition ----------*        progress_bar IMPORTING value(i_value) TYPE itex132 "#EC CI_VALPAR                                     i_tabix  TYPE i, *---------- Private Methods Execute Add Objects Definition ----------*        execute_add_objects, *---------- Private Methods Execute Add From Transport Definition ----------*        execute_add_from_transport, *---------- Private Methods Check Add Object Definition *        check_add_object IMPORTING value(i_pgmid)  TYPE pgmid "Program ID in Requests and Tasks                                   value(i_object) TYPE any   "Object Type                                   value(i_obj_n)  TYPE any   "Object Name in Object Directory                                   is_env_tab      TYPE senvi "Info system                                   i_deep          TYPE i,    "Deepness        add_objects_of_devclass IMPORTING i_obj_n TYPE any "Object Name in Object Directory                                          i_deep  TYPE i,  "Deepness *---------- Private Methods Add Object Definition ----------*        add_object IMPORTING i_deep    TYPE i            "Deepness                    CHANGING cs_object TYPE ty_objects,  "Objects table *---------- Private Methods Objects Dependencies Check Definition ----------*        objects_dependencies_check, *---------- Private Methods Remote Objects Check Definition ----------*        remote_objects_check, *---------- Private Methods Exclude RFCs Definition ----------*        exclude_rfcs IMPORTING i_obj_name TYPE sobj_name  "Object Name in Object Directory                      CHANGING c_no_rfc   TYPE abap_bool, "Found RFC flag *---------- Private Methods Include Maintenances Definition ----------*        include_maintenances, *---------- Private Methods Include Locks Definition ----------*        include_locks, *---------- Private Methods CDs Definition ----------*        include_cds, *---------- Private Methods Add TOBJ Content Definition ----------*        add_tobj_content IMPORTING i_obj_name TYPE sobj_name, "Object Name in Object Directory *---------- Private Methods Object Header Definition ----------*        add_object_header IMPORTING i_pgmid   TYPE pgmid    "Program ID in Requests and Tasks                                    i_object  TYPE any      "Object Type                                    i_obj_n   TYPE any      "Object Name in Object Directory                                    i_objfunc TYPE objfunc, "Object function *---------- Private Methods Object Keys Definition ----------*        add_object_keys IMPORTING i_pgmid  TYPE pgmid "Program ID in Requests and Tasks                                  i_object TYPE any   "Object Type                                  i_obj_n  TYPE any   "Object Name in Object Directory                                  i_tabkey TYPE any.  "Table key ENDCLASS.                    "obj_dep_trans DEFINITION *--------------------------------------------------------- GLOBAL DATA * DATA go_odt TYPE REF TO obj_dep_trans.                      "#EC NEEDED *---------------------------------------------------- SELECTION SCREEN * *---------------------------------------------------- Object selection * SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01. SELECTION-SCREEN SKIP 1. PARAMETERS r_obj RADIOBUTTON GROUP rbt USER-COMMAND rbt DEFAULT 'X'.  "Add from Objects or Development Package SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 4. PARAMETERS:    p_pgmid  TYPE pgmid DEFAULT 'R3TR', "Program ID in Requests and Tasks    p_object TYPE trobjtype,            "Object Type    p_obj_n  TYPE sobj_name.            "Object Name in Object Directory SELECTION-SCREEN END OF LINE. SELECTION-SCREEN SKIP 1. PARAMETERS r_tr RADIOBUTTON GROUP rbt.  "Add from TR SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 4. PARAMETERS p_tr TYPE trkorr.  "Transport request SELECTION-SCREEN END OF LINE. SELECTION-SCREEN SKIP 1. PARAMETERS p_deep TYPE i DEFAULT 0. "Dependencies deepness SELECTION-SCREEN END OF BLOCK b01. *-------------------------------------------------- Aditional options * SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE text-b02. SELECTION-SCREEN SKIP 1. SELECTION-SCREEN BEGIN OF LINE. PARAMETERS p_rfc AS CHECKBOX. "Remote versions checks SELECTION-SCREEN COMMENT (37) com_rfc. PARAMETERS p_rfc_d TYPE tmssysnam.  "System Name SELECTION-SCREEN END OF LINE. PARAMETERS p_st AS CHECKBOX.  "Include standard objects SELECTION-SCREEN SKIP 1. PARAMETERS:    p_itm  AS CHECKBOX, "Include Tables Maintenance    p_ilo  AS CHECKBOX, "Include Lock objects    p_icd  AS CHECKBOX, "Include Change documents    p_erfc AS CHECKBOX. "Exclude RFCs if exist SELECTION-SCREEN END OF BLOCK b02. *------------------------------------------ SELECTION SCREEN PAI HELPS * *------------------------------------------------------- Program ID F4 * AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pgmid.    go_odt->pgmid_f4( ). *------------------------------------------------------ Object Type F4 * AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_object.    go_odt->object_f4( CHANGING c_pgmid = p_pgmid c_object = p_object ). *------------------------------------------------------ Object Name F4 * AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_obj_n.    go_odt->object_name_f4( EXPORTING i_object = p_object CHANGING c_obj_n = p_obj_n ). *------------------------------------------------ Transport request F4 * AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_tr.    go_odt->tr_f4( CHANGING c_tr = p_tr ). *-------------------------------------------------- Systems and RFC F4 * AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_rfc_d.    go_odt->rfc_f4( CHANGING c_rfc_d = p_rfc_d ). *------------------------------------------------ SELECTION SCREEN PAI * AT SELECTION-SCREEN.    go_odt->set_values( i_robj   = r_obj      "Add from Object                        i_pgmid  = p_pgmid    "Program ID in Requests and Tasks                        i_object = p_object   "Object Type                        i_obj_n  = p_obj_n    "Object Name in Object Directory                        i_rtr    = r_tr       "Add from TR                        i_tr     = p_tr       "Transport request                        i_deep   = p_deep     "Dependencies deepness                        i_rfc    = p_rfc      "Remote versions checks                        i_rfc_d  = p_rfc_d    "System Name                        i_st     = p_st       "Include standard objects                        i_itm    = p_itm      "Include Tables Maintenance                        i_ilo    = p_ilo      "Include Lock objects                        i_icd    = p_icd      "Include Change documents                        i_erfc   = p_erfc ).  "Exclude RFCs if exist    go_odt->screen_pai( ).  "Screen Process after input *------------------------------------------------------- REPORT EVENTS * *----------------------------------------------- Initialization events * INITIALIZATION.    com_rfc = 'Cross-system objects version check'(cm1).    CREATE OBJECT go_odt. "Create main class *---------------------------------------------------- Executing events * START-OF-SELECTION.    go_odt->run_checks( ).      "Execution    go_odt->display_objects( ). "Result display *------------------------------------------ LOCAL CLASS IMPLEMENTATION * CLASS obj_dep_trans IMPLEMENTATION. *---------------------------- Public Method Constructor Implementation *    METHOD constructor.      CALL FUNCTION 'TR_OBJECT_TABLE' "Fill Program IDs        TABLES          wt_object_text = t_objs_desc.    ENDMETHOD.                    "constructor *-------------------------- Public Method to Set Values Implementation *    METHOD set_values.      v_robj   = i_robj.   "Add from Object      v_pgmid  = i_pgmid.  "Program ID in Requests and Tasks      v_object = i_object. "Object Type      v_obj_n  = i_obj_n.  "Object Name in Object Directory      v_rtr    = i_rtr.    "Add from TR      v_tr     = i_tr.     "Transport request      v_deep   = i_deep.   "Dependencies deepness      v_rfc    = i_rfc.    "Remote versions checks      v_rfc_d  = i_rfc_d.  "System Name      v_st     = i_st.     "Include standard objects      v_itm    = i_itm.    "Include Tables Maintenance      v_ilo    = i_ilo.    "Include Lock objects      v_icd    = i_icd.    "Include Change documents      v_erfc   = i_erfc.   "Exclude RFCs if exist    ENDMETHOD.                    "set_values *------------------------------- Public Method PGMID F4 Implementation *    METHOD pgmid_f4.      DATA lt_pgmids TYPE TABLE OF ko101.  "Program IDs with Description *---------- Read PGMID ----------*      CALL FUNCTION 'TR_PGMID_TABLE'        TABLES          wt_pgmid_text = lt_pgmids. *---------- Set PGMID F4 ----------*      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' "#EC FB_RC "#EC CI_SUBRC        EXPORTING          retfield        = 'PGMID'          dynpprog        = sy-cprog          value_org       = 'S'          dynpnr          = '1000'          dynprofield     = 'TRE071X-PGMID'        TABLES          value_tab       = lt_pgmids        EXCEPTIONS          parameter_error = 1          no_values_found = 2          OTHERS          = 3.    ENDMETHOD.                    "pgmid_f4 *------------------------------ Public Method Object F4 Implementation *    METHOD object_f4.      CONSTANTS:        lc_object TYPE fieldname VALUE 'OBJECT', "Object field        lc_pgmid  TYPE fieldname VALUE 'PGMID'.  "Program ID in Requests and Tasks field      DATA:        lt_shlp          TYPE shlp_descr,           "Description of Search Help        lt_return_values TYPE TABLE OF ddshretval,  "Interface Structure Search Help        ls_return_values LIKE LINE OF lt_return_values,        lv_rc            TYPE sysubrc.              "Return Value of ABAP Statements      FIELD-SYMBOLS 
Comments (0)
Add Comment