From 6e0e94103fc5e6eaf43540002d0a6edec9994ddb Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sun, 28 Jun 2015 19:40:28 +0200 Subject: [PATCH] delete includes after main programs --- zabapgit.abap | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/zabapgit.abap b/zabapgit.abap index 2bedc5a93..202cabad2 100644 --- a/zabapgit.abap +++ b/zabapgit.abap @@ -3,7 +3,7 @@ REPORT zabapgit. * See https://github.com/larshp/abapGit/ CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v0.34'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v0.35'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) @@ -6336,6 +6336,10 @@ CLASS lcl_objects DEFINITION FINAL. RETURNING VALUE(rv_class_name) TYPE string. PRIVATE SECTION. + CLASS-METHODS resolve_tabl + CHANGING ct_tadir TYPE tt_tadir + RAISING lcx_exception. + CLASS-METHODS delete_obj IMPORTING is_item TYPE st_item RAISING lcx_exception. @@ -6412,11 +6416,24 @@ CLASS lcl_objects IMPLEMENTATION. -korrnum = '8000'. WHEN 'DOMA'. -korrnum = '9000'. + WHEN 'PROG'. +* delete includes after main programs + SELECT COUNT(*) FROM reposrc + WHERE progname = -obj_name + AND r3state = 'A' + AND subc = 'I'. + IF sy-subrc = 0. + -korrnum = '2000'. + ELSE. + -korrnum = '1000'. + ENDIF. WHEN OTHERS. -korrnum = '1000'. ENDCASE. ENDLOOP. + resolve_tabl( CHANGING ct_tadir = lt_tadir ). + SORT lt_tadir BY korrnum ASCENDING. LOOP AT lt_tadir ASSIGNING . @@ -6428,6 +6445,78 @@ CLASS lcl_objects IMPLEMENTATION. ENDMETHOD. "delete + METHOD resolve_tabl. +* this will make sure the deletion sequence of structures/tables work +* in case they have dependencies with .INCLUDE + + TYPES: BEGIN OF ty_edge, + from TYPE sobj_name, + to TYPE sobj_name, + END OF ty_edge. + + DATA: lt_nodes TYPE TABLE OF sobj_name, + lt_edges TYPE TABLE OF ty_edge, + lt_findstrings TYPE TABLE OF rsfind, + lt_founds TYPE TABLE OF rsfindlst, + lt_scope TYPE STANDARD TABLE OF seu_obj. + + FIELD-SYMBOLS: LIKE LINE OF ct_tadir, + LIKE LINE OF lt_edges, + LIKE LINE OF lt_founds, + LIKE LINE OF lt_nodes. + + +* build nodes + LOOP AT ct_tadir ASSIGNING WHERE object = 'TABL'. + APPEND -obj_name TO lt_nodes. + ENDLOOP. + + APPEND 'TABL' TO lt_scope. + APPEND 'STRU' TO lt_scope. + +* build edges + LOOP AT lt_nodes ASSIGNING . + + CLEAR lt_findstrings. + APPEND TO lt_findstrings. + + CALL FUNCTION 'RS_EU_CROSSREF' + EXPORTING + i_find_obj_cls = 'TABL' + TABLES + i_findstrings = lt_findstrings + o_founds = lt_founds + i_scope_object_cls = lt_scope + EXCEPTIONS + not_executed = 1 + not_found = 2 + illegal_object = 3 + no_cross_for_this_object = 4 + batch = 5 + batchjob_error = 6 + wrong_type = 7 + object_not_exist = 8 + OTHERS = 9. + IF sy-subrc <> 0. + CONTINUE. + ENDIF. + + LOOP AT lt_founds ASSIGNING . + APPEND INITIAL LINE TO lt_edges ASSIGNING . + -from = . + -to = -object. + ENDLOOP. + + ENDLOOP. +* todo, work in progress +* +*do. +*loop at lt_nodes assigning . +*endloop. +*enddo. + + ENDMETHOD. + METHOD delete_obj. DATA: lv_class_name TYPE string,