From bc00e4d911627be320bb69fa983407fb6f03d532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frank=20M=C3=BCller?= <101019006+fmabap@users.noreply.github.com> Date: Fri, 1 Sep 2023 20:23:41 +0200 Subject: [PATCH] Optimize add namespace (#6461) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/objects/core/zcl_abapgit_tadir.clas.abap | 44 +++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/objects/core/zcl_abapgit_tadir.clas.abap b/src/objects/core/zcl_abapgit_tadir.clas.abap index 646b11d4a..6a66870bd 100644 --- a/src/objects/core/zcl_abapgit_tadir.clas.abap +++ b/src/objects/core/zcl_abapgit_tadir.clas.abap @@ -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 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 . - -pgmid = 'R3TR'. - -object = 'NSPC'. - -obj_name = ls_obj_with_namespace-namespace. - -devclass = iv_package. - -srcsystem = sy-sysid. - -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 LIKE LINE OF ct_tadir. " Namespaces are not in TADIR, but are necessary for creating objects in transportable packages LOOP AT ct_tadir ASSIGNING WHERE obj_name(1) = '/'. add_namespace( EXPORTING - iv_package = iv_package - iv_object = -obj_name + iv_package = iv_package + iv_object = -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.