Optimize add namespace (#6461)

Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
This commit is contained in:
Frank Müller 2023-09-01 20:23:41 +02:00 committed by GitHub
parent 8e3a64dd68
commit bc00e4d911
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -54,10 +54,11 @@ CLASS zcl_abapgit_tadir DEFINITION
zcx_abapgit_exception .
METHODS add_namespace
IMPORTING
!iv_package TYPE devclass
!iv_object TYPE csequence
!iv_package TYPE devclass
!iv_object TYPE csequence
CHANGING
!ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt
!ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt
!ct_tadir_nspc TYPE zif_abapgit_definitions=>ty_tadir_tt
RAISING
zcx_abapgit_exception .
METHODS determine_path
@ -106,11 +107,9 @@ CLASS zcl_abapgit_tadir IMPLEMENTATION.
METHOD add_namespace.
DATA ls_tadir TYPE zif_abapgit_definitions=>ty_tadir.
DATA ls_tadir TYPE zif_abapgit_definitions=>ty_tadir.
DATA ls_obj_with_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace.
FIELD-SYMBOLS <ls_tadir> LIKE LINE OF ct_tadir.
TRY.
ls_obj_with_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( iv_object ).
CATCH zcx_abapgit_exception.
@ -120,16 +119,17 @@ CLASS zcl_abapgit_tadir IMPLEMENTATION.
IF ls_obj_with_namespace-namespace IS NOT INITIAL.
READ TABLE ct_tadir TRANSPORTING NO FIELDS
READ TABLE ct_tadir_nspc TRANSPORTING NO FIELDS
WITH KEY pgmid = 'R3TR' object = 'NSPC' obj_name = ls_obj_with_namespace-namespace.
IF sy-subrc <> 0.
APPEND INITIAL LINE TO ct_tadir ASSIGNING <ls_tadir>.
<ls_tadir>-pgmid = 'R3TR'.
<ls_tadir>-object = 'NSPC'.
<ls_tadir>-obj_name = ls_obj_with_namespace-namespace.
<ls_tadir>-devclass = iv_package.
<ls_tadir>-srcsystem = sy-sysid.
<ls_tadir>-masterlang = sy-langu.
ls_tadir-pgmid = 'R3TR'.
ls_tadir-object = 'NSPC'.
ls_tadir-obj_name = ls_obj_with_namespace-namespace.
ls_tadir-devclass = iv_package.
ls_tadir-srcsystem = sy-sysid.
ls_tadir-masterlang = sy-langu.
INSERT ls_tadir INTO TABLE ct_tadir.
INSERT ls_tadir INTO TABLE ct_tadir_nspc.
ENDIF.
ENDIF.
@ -139,26 +139,30 @@ CLASS zcl_abapgit_tadir IMPLEMENTATION.
METHOD add_namespaces.
DATA lt_tadir_nspc TYPE zif_abapgit_definitions=>ty_tadir_tt.
FIELD-SYMBOLS <ls_tadir> LIKE LINE OF ct_tadir.
" Namespaces are not in TADIR, but are necessary for creating objects in transportable packages
LOOP AT ct_tadir ASSIGNING <ls_tadir> WHERE obj_name(1) = '/'.
add_namespace(
EXPORTING
iv_package = iv_package
iv_object = <ls_tadir>-obj_name
iv_package = iv_package
iv_object = <ls_tadir>-obj_name
CHANGING
ct_tadir = ct_tadir ).
ct_tadir = ct_tadir
ct_tadir_nspc = lt_tadir_nspc ).
ENDLOOP.
" Root package of repo might not exist yet but needs to be considered, too
IF iv_package CP '/*'.
add_namespace(
EXPORTING
iv_package = iv_package
iv_object = iv_package
iv_package = iv_package
iv_object = iv_package
CHANGING
ct_tadir = ct_tadir ).
ct_tadir = ct_tadir
ct_tadir_nspc = lt_tadir_nspc ).
ENDIF.
ENDMETHOD.