From aa90f278b73d2874227f09f9063899f41c9117c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20K=C3=A4semann?= <32765685+mkaesemann@users.noreply.github.com> Date: Tue, 31 Jul 2018 17:31:18 +0200 Subject: [PATCH] Added Buffering to ZCL_ABAPGIT_SAP_PACKAGE (#1724) * Added Buffering to ZCL_ABAPGIT_SAP_PACKAGE - Added a buffering option to ZCL_ABAPGIT_SAP_PACKAGE=>LIST_SUBPACKAGES, which gives a performance increase in repos with a deep tree structure, because all relevant packages are read from the DB only once and then the determination of subpackages is performed on an internal buffer table. * Used buffered SAP package information determination in file status processing * Level-based Subpackage Selection - Replaced buffered package access with level-based subpackage selection * Minor fix for select statements to avoid warnings --- src/zcl_abapgit_sap_package.clas.abap | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/zcl_abapgit_sap_package.clas.abap b/src/zcl_abapgit_sap_package.clas.abap index b8b9240b8..82edf2b43 100644 --- a/src/zcl_abapgit_sap_package.clas.abap +++ b/src/zcl_abapgit_sap_package.clas.abap @@ -265,21 +265,24 @@ CLASS ZCL_ABAPGIT_SAP_PACKAGE IMPLEMENTATION. METHOD zif_abapgit_sap_package~list_subpackages. - DATA: lt_list LIKE rt_list, - lv_devclass LIKE LINE OF rt_list. - DATA: lv_children TYPE i. + DATA: lt_list LIKE rt_list. SELECT devclass FROM tdevc - INTO TABLE rt_list + INTO TABLE lt_list WHERE parentcl = mv_package - ORDER BY PRIMARY KEY. "#EC CI_GENBUFF "#EC CI_SUBRC - lv_children = sy-dbcnt. + ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF - LOOP AT rt_list INTO lv_devclass FROM 1 TO lv_children. - "Get Children of Child - lt_list = zcl_abapgit_factory=>get_sap_package( lv_devclass )->list_subpackages( ). + rt_list = lt_list. + WHILE lines( lt_list ) > 0. + + SELECT devclass FROM tdevc + INTO TABLE lt_list + FOR ALL ENTRIES IN lt_list + WHERE parentcl = lt_list-table_line + ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF APPEND LINES OF lt_list TO rt_list. - ENDLOOP. + + ENDWHILE. ENDMETHOD. @@ -292,8 +295,7 @@ CLASS ZCL_ABAPGIT_SAP_PACKAGE IMPLEMENTATION. APPEND mv_package TO rt_list. - SELECT SINGLE parentcl INTO lv_parent - FROM tdevc WHERE devclass = mv_package. "#EC CI_GENBUFF + lv_parent = zif_abapgit_sap_package~read_parent( ). IF sy-subrc = 0 AND NOT lv_parent IS INITIAL. lt_list = zcl_abapgit_factory=>get_sap_package( lv_parent )->list_superpackages( ).