mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
apack performance fix (#6649)
This commit is contained in:
parent
380563d144
commit
5c99f34d25
|
@ -70,7 +70,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_APACK_READER IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -173,6 +173,9 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
|
|||
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
|
||||
ls_manifest_implementation TYPE ty_s_manifest_declaration,
|
||||
lt_manifest_implementation TYPE STANDARD TABLE OF ty_s_manifest_declaration WITH DEFAULT KEY.
|
||||
DATA lt_refclsname TYPE RANGE OF abap_classname.
|
||||
DATA ls_refclsname LIKE LINE OF lt_refclsname.
|
||||
|
||||
|
||||
IF mv_package_name IS NOT INITIAL.
|
||||
lt_packages = zcl_abapgit_factory=>get_sap_package( mv_package_name )->list_subpackages( ).
|
||||
|
@ -180,16 +183,31 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
IF mv_is_cached IS INITIAL AND lt_packages IS NOT INITIAL.
|
||||
ls_refclsname-sign = 'I'.
|
||||
ls_refclsname-option = 'EQ'.
|
||||
ls_refclsname-low = zif_abapgit_apack_definitions=>c_apack_interface_cust.
|
||||
INSERT ls_refclsname INTO TABLE lt_refclsname.
|
||||
|
||||
ls_refclsname-sign = 'I'.
|
||||
ls_refclsname-option = 'EQ'.
|
||||
ls_refclsname-low = zif_abapgit_apack_definitions=>c_apack_interface_sap.
|
||||
INSERT ls_refclsname INTO TABLE lt_refclsname.
|
||||
|
||||
IF mv_package_name CA '/'.
|
||||
ls_refclsname-sign = 'I'.
|
||||
ls_refclsname-option = 'CP'.
|
||||
ls_refclsname-low = zif_abapgit_apack_definitions=>c_apack_interface_nspc.
|
||||
INSERT ls_refclsname INTO TABLE lt_refclsname.
|
||||
ENDIF.
|
||||
|
||||
" Find all classes that implement customer or SAP version of APACK interface
|
||||
SELECT seometarel~clsname tadir~devclass FROM seometarel "#EC CI_NOORDER
|
||||
INNER JOIN tadir ON seometarel~clsname = tadir~obj_name "#EC CI_BUFFJOIN
|
||||
INTO TABLE lt_manifest_implementation
|
||||
WHERE tadir~pgmid = 'R3TR' AND
|
||||
tadir~object = 'CLAS' AND
|
||||
seometarel~version = '1' AND (
|
||||
seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_cust OR
|
||||
seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_sap OR
|
||||
seometarel~refclsname LIKE zif_abapgit_apack_definitions=>c_apack_interface_nspc )
|
||||
seometarel~version = '1' AND
|
||||
seometarel~refclsname IN lt_refclsname
|
||||
ORDER BY clsname devclass.
|
||||
|
||||
LOOP AT lt_packages INTO lv_package.
|
||||
|
|
|
@ -36,5 +36,5 @@ INTERFACE zif_abapgit_apack_definitions PUBLIC .
|
|||
CONSTANTS c_repository_type_abapgit TYPE ty_repository_type VALUE 'abapGit' ##NO_TEXT.
|
||||
CONSTANTS c_apack_interface_sap TYPE seoclsname VALUE 'IF_APACK_MANIFEST' ##NO_TEXT.
|
||||
CONSTANTS c_apack_interface_cust TYPE seoclsname VALUE 'ZIF_APACK_MANIFEST' ##NO_TEXT.
|
||||
CONSTANTS c_apack_interface_nspc TYPE seoclsname VALUE '/%/IF_APACK_MANIFEST' ##NO_TEXT.
|
||||
CONSTANTS c_apack_interface_nspc TYPE seoclsname VALUE '/*/IF_APACK_MANIFEST' ##NO_TEXT.
|
||||
ENDINTERFACE.
|
||||
|
|
Loading…
Reference in New Issue
Block a user