CHDO: Refactor logic for generated objects

Move object-specific logic to object handler classes.

Closes #4187
This commit is contained in:
Marc Bernard 2025-01-15 10:30:59 +00:00
parent ee9e32d442
commit baeb6ffee5
4 changed files with 27 additions and 63 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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: <ls_tadir> 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.