From bdbfd57248956fe2e0b4f3a1efd3d1ed2fa701ae Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Wed, 15 Jan 2025 17:41:04 +0100 Subject: [PATCH] CHDO: Refactor logic for generated objects (#7129) Co-authored-by: Lars Hvam --- deps/tcdrs.tabl.xml | 4 +- .../tabl/zcl_abapgit_object_tabl.clas.abap | 10 ++- src/objects/zcl_abapgit_object_fugr.clas.abap | 8 +++ src/objects/zcl_abapgit_object_prog.clas.abap | 9 +++ .../filter/zcl_abapgit_repo_filter.clas.abap | 63 +------------------ 5 files changed, 29 insertions(+), 65 deletions(-) diff --git a/deps/tcdrs.tabl.xml b/deps/tcdrs.tabl.xml index 016dd523e..493ca39a4 100644 --- a/deps/tcdrs.tabl.xml +++ b/deps/tcdrs.tabl.xml @@ -14,9 +14,9 @@ TABNAME 0 C - 000002 + 000060 CHAR - 000001 + 000030 CHAR diff --git a/src/objects/tabl/zcl_abapgit_object_tabl.clas.abap b/src/objects/tabl/zcl_abapgit_object_tabl.clas.abap index 321331d10..b5b099665 100644 --- a/src/objects/tabl/zcl_abapgit_object_tabl.clas.abap +++ b/src/objects/tabl/zcl_abapgit_object_tabl.clas.abap @@ -84,7 +84,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION. +CLASS zcl_abapgit_object_tabl IMPLEMENTATION. METHOD clear_dd03p_fields. @@ -838,6 +838,14 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION. ENDIF. rv_bool = boolc( sy-subrc = 0 ). + " Skip TABL generated by CHDO + IF rv_bool = abap_true. + SELECT SINGLE tabname FROM tcdrs INTO lv_tabname WHERE tabname = lv_tabname. + IF sy-subrc = 0. + rv_bool = abap_false. + ENDIF. + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_fugr.clas.abap b/src/objects/zcl_abapgit_object_fugr.clas.abap index d4661d869..41b53c503 100644 --- a/src/objects/zcl_abapgit_object_fugr.clas.abap +++ b/src/objects/zcl_abapgit_object_fugr.clas.abap @@ -1277,6 +1277,14 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION. pool_not_exists = 1. rv_bool = boolc( sy-subrc <> 1 ). + " Skip FUGR generated by CHDO + IF rv_bool = abap_true. + SELECT SINGLE fgrp FROM tcdrp INTO lv_pool WHERE fgrp = lv_pool. + IF sy-subrc = 0. + rv_bool = abap_false. + ENDIF. + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_prog.clas.abap b/src/objects/zcl_abapgit_object_prog.clas.abap index 5009c4e46..d0bb9bbd7 100644 --- a/src/objects/zcl_abapgit_object_prog.clas.abap +++ b/src/objects/zcl_abapgit_object_prog.clas.abap @@ -279,6 +279,15 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION. WHERE progname = ms_item-obj_name. rv_bool = boolc( sy-subrc = 0 ). + " Skip PROG generated by CHDO + IF rv_bool = abap_true. + FIND REGEX '^F.*CD[C|F|T|V]' IN ms_item-obj_name. + IF sy-subrc <> 0. + FIND REGEX '^/.*/F.*CD[C|F|T|V]' IN ms_item-obj_name. + ENDIF. + rv_bool = boolc( sy-subrc <> 0 ). + ENDIF. + ENDMETHOD. diff --git a/src/repo/filter/zcl_abapgit_repo_filter.clas.abap b/src/repo/filter/zcl_abapgit_repo_filter.clas.abap index 5dc36a3a1..4f9f073a1 100644 --- a/src/repo/filter/zcl_abapgit_repo_filter.clas.abap +++ b/src/repo/filter/zcl_abapgit_repo_filter.clas.abap @@ -19,12 +19,8 @@ CLASS zcl_abapgit_repo_filter DEFINITION ct_files TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception. + PROTECTED SECTION. - - METHODS filter_generated_tadir - CHANGING - !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt . - PRIVATE SECTION. ENDCLASS. @@ -41,8 +37,6 @@ CLASS zcl_abapgit_repo_filter IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF ct_tadir. - filter_generated_tadir( CHANGING ct_tadir = ct_tadir ). - IF lines( it_filter ) = 0. RETURN. ENDIF. @@ -96,13 +90,6 @@ CLASS zcl_abapgit_repo_filter IMPLEMENTATION. INSERT ls_tadir INTO TABLE lt_tadir. - filter_generated_tadir( CHANGING ct_tadir = lt_tadir ). - - IF lt_tadir IS INITIAL. - DELETE ct_files. - CONTINUE. - ENDIF. - READ TABLE lt_filter TRANSPORTING NO FIELDS WITH KEY object = ls_tadir-object obj_name = ls_tadir-obj_name @@ -115,52 +102,4 @@ CLASS zcl_abapgit_repo_filter IMPLEMENTATION. ENDLOOP. ENDMETHOD. - - - METHOD filter_generated_tadir. - - DATA: ls_tadir TYPE zif_abapgit_definitions=>ty_tadir, - ls_tadir_gen TYPE zif_abapgit_definitions=>ty_tadir, - lv_cd_object TYPE cdobjectcl, - lt_cd_names TYPE STANDARD TABLE OF cdnames, - ls_cd_names TYPE cdnames, - lt_tcdrs TYPE STANDARD TABLE OF tcdrs, - ls_tcdrs TYPE tcdrs. - - LOOP AT ct_tadir INTO ls_tadir WHERE pgmid = 'R3TR' AND object = 'CHDO'. - CLEAR: lv_cd_object, lt_cd_names, ls_tadir_gen, lt_tcdrs, ls_tcdrs. - - lv_cd_object = ls_tadir-obj_name. - - CALL FUNCTION 'CDNAMES_GET' - EXPORTING - iv_object = lv_cd_object - TABLES - it_names = lt_cd_names - it_tcdrs = lt_tcdrs - EXCEPTIONS - object_space = 1 - object_not_found = 2 - OTHERS = 3. - IF sy-subrc <> 0. - CONTINUE. - ENDIF. - - LOOP AT lt_cd_names INTO ls_cd_names. - DELETE ct_tadir WHERE pgmid = 'R3TR' - AND ( ( object = 'PROG' - AND ( obj_name = ls_cd_names-repnamec - OR obj_name = ls_cd_names-repnamet - OR obj_name = ls_cd_names-repnamefix - OR obj_name = ls_cd_names-repnamevar ) ) - OR object = 'FUGR' AND obj_name = ls_cd_names-fgrp ). - ENDLOOP. - - LOOP AT lt_tcdrs INTO ls_tcdrs. - DELETE ct_tadir WHERE pgmid = 'R3TR' AND object = 'TABL' AND obj_name = ls_tcdrs-tabname. - ENDLOOP. - - ENDLOOP. - - ENDMETHOD. ENDCLASS.