From 16dcb2ea990292231e06f02465e2655313f3158f Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sat, 21 Jul 2018 11:36:15 +0200 Subject: [PATCH] Optimize STATUS performance (#1664) * Optimize STATUS performance move list_subpackages() outside of loop * logic updated --- src/zcl_abapgit_file_status.clas.abap | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/zcl_abapgit_file_status.clas.abap b/src/zcl_abapgit_file_status.clas.abap index 5a324a16d..a44b9f6b7 100644 --- a/src/zcl_abapgit_file_status.clas.abap +++ b/src/zcl_abapgit_file_status.clas.abap @@ -57,7 +57,7 @@ ENDCLASS. -CLASS zcl_abapgit_file_status IMPLEMENTATION. +CLASS ZCL_ABAPGIT_FILE_STATUS IMPLEMENTATION. METHOD build_existing. @@ -190,6 +190,7 @@ CLASS zcl_abapgit_file_status IMPLEMENTATION. lt_items TYPE zif_abapgit_definitions=>ty_items_tt, ls_item LIKE LINE OF lt_items, lv_is_xml TYPE abap_bool, + lv_sub_fetched TYPE abap_bool, lt_sub_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt, lt_items_idx TYPE zif_abapgit_definitions=>ty_items_ts, lt_state_idx TYPE zif_abapgit_definitions=>ty_file_signatures_ts. " Sorted by path+filename @@ -241,8 +242,11 @@ CLASS zcl_abapgit_file_status IMPLEMENTATION. iv_obj_name = ls_item-obj_name ). IF NOT ls_item-devclass IS INITIAL AND iv_devclass <> ls_item-devclass. + IF lv_sub_fetched = abap_false. + lt_sub_packages = zcl_abapgit_factory=>get_sap_package( iv_devclass )->list_subpackages( ). + lv_sub_fetched = abap_true. + ENDIF. * make sure the package is under the repo main package - lt_sub_packages = zcl_abapgit_factory=>get_sap_package( iv_devclass )->list_subpackages( ). READ TABLE lt_sub_packages WITH KEY table_line = ls_item-devclass TRANSPORTING NO FIELDS. IF sy-subrc <> 0. CLEAR ls_item-devclass.