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
This commit is contained in:
Michael Käsemann 2018-07-31 17:31:18 +02:00 committed by Lars Hvam
parent fa61f45886
commit aa90f278b7

View File

@ -265,21 +265,24 @@ CLASS ZCL_ABAPGIT_SAP_PACKAGE IMPLEMENTATION.
METHOD zif_abapgit_sap_package~list_subpackages. METHOD zif_abapgit_sap_package~list_subpackages.
DATA: lt_list LIKE rt_list, DATA: lt_list LIKE rt_list.
lv_devclass LIKE LINE OF rt_list.
DATA: lv_children TYPE i.
SELECT devclass FROM tdevc SELECT devclass FROM tdevc
INTO TABLE rt_list INTO TABLE lt_list
WHERE parentcl = mv_package WHERE parentcl = mv_package
ORDER BY PRIMARY KEY. "#EC CI_GENBUFF "#EC CI_SUBRC ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF
lv_children = sy-dbcnt.
LOOP AT rt_list INTO lv_devclass FROM 1 TO lv_children. rt_list = lt_list.
"Get Children of Child WHILE lines( lt_list ) > 0.
lt_list = zcl_abapgit_factory=>get_sap_package( lv_devclass )->list_subpackages( ).
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. APPEND LINES OF lt_list TO rt_list.
ENDLOOP.
ENDWHILE.
ENDMETHOD. ENDMETHOD.
@ -292,8 +295,7 @@ CLASS ZCL_ABAPGIT_SAP_PACKAGE IMPLEMENTATION.
APPEND mv_package TO rt_list. APPEND mv_package TO rt_list.
SELECT SINGLE parentcl INTO lv_parent lv_parent = zif_abapgit_sap_package~read_parent( ).
FROM tdevc WHERE devclass = mv_package. "#EC CI_GENBUFF
IF sy-subrc = 0 AND NOT lv_parent IS INITIAL. IF sy-subrc = 0 AND NOT lv_parent IS INITIAL.
lt_list = zcl_abapgit_factory=>get_sap_package( lv_parent )->list_superpackages( ). lt_list = zcl_abapgit_factory=>get_sap_package( lv_parent )->list_superpackages( ).