FUGR serialization, performance (#3761)

Instead of calling function module FUNCTION_IMPORT_DOKU, replace with a SELECT SINGLE in buffered table

closes #3753
This commit is contained in:
Lars Hvam 2020-08-19 06:44:39 +02:00 committed by GitHub
parent 4ec4760a87
commit 8e7eea457a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -37,7 +37,7 @@ CLASS zcl_abapgit_object_fugr DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
TYPES: TYPES:
tt_tpool_i18n TYPE STANDARD TABLE OF ty_tpool_i18n . tt_tpool_i18n TYPE STANDARD TABLE OF ty_tpool_i18n .
DATA: mt_includes_cache TYPE ty_sobj_name_tt. DATA mt_includes_cache TYPE ty_sobj_name_tt .
METHODS check_rfc_parameters METHODS check_rfc_parameters
IMPORTING IMPORTING
@ -94,13 +94,6 @@ CLASS zcl_abapgit_object_fugr DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
!ii_log TYPE REF TO zif_abapgit_log !ii_log TYPE REF TO zif_abapgit_log
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS are_exceptions_class_based
IMPORTING
!iv_function_name TYPE rs38l_fnam
RETURNING
VALUE(rv_return) TYPE abap_bool
RAISING
zcx_abapgit_exception .
METHODS is_function_group_locked METHODS is_function_group_locked
RETURNING RETURNING
VALUE(rv_is_functions_group_locked) TYPE abap_bool VALUE(rv_is_functions_group_locked) TYPE abap_bool
@ -146,36 +139,6 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION. CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
METHOD are_exceptions_class_based.
DATA:
lt_dokumentation TYPE TABLE OF funct,
lt_exception_list TYPE TABLE OF rsexc,
lt_export_parameter TYPE TABLE OF rsexp,
lt_import_parameter TYPE TABLE OF rsimp,
lt_tables_parameter TYPE TABLE OF rstbl.
CALL FUNCTION 'FUNCTION_IMPORT_DOKU'
EXPORTING
funcname = iv_function_name
IMPORTING
exception_class = rv_return
TABLES
dokumentation = lt_dokumentation
exception_list = lt_exception_list
export_parameter = lt_export_parameter
import_parameter = lt_import_parameter
tables_parameter = lt_tables_parameter
EXCEPTIONS
error_message = 1
function_not_found = 2
invalid_name = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error from FUNCTION_IMPORT_DOKU' ).
ENDIF.
ENDMETHOD.
METHOD check_rfc_parameters. METHOD check_rfc_parameters.
* function module RS_FUNCTIONMODULE_INSERT does the same deep down, but the right error * function module RS_FUNCTIONMODULE_INSERT does the same deep down, but the right error
@ -845,7 +808,8 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
CLEAR <ls_documentation>-index. CLEAR <ls_documentation>-index.
ENDLOOP. ENDLOOP.
ls_function-exception_classes = are_exceptions_class_based( <ls_func>-funcname ). SELECT SINGLE exten3 INTO ls_function-exception_classes FROM enlfdir
WHERE funcname = <ls_func>-funcname. "#EC CI_SUBRC
APPEND ls_function TO rt_functions. APPEND ls_function TO rt_functions.