SICF: Decouple from core, #1941

Change calls to static SICF methods to dynamic, in order to be able to support systems which do not have SICF objects.
This commit is contained in:
larshp 2018-09-26 07:28:04 +02:00 committed by Lars Hvam
parent eb34b7eeec
commit ba787d373e
2 changed files with 26 additions and 7 deletions

View File

@ -293,6 +293,8 @@ CLASS ZCL_ABAPGIT_OBJECT_SICF IMPLEMENTATION.
METHOD read_sicf_url. METHOD read_sicf_url.
* note: this method is called dynamically from some places
DATA: lv_name TYPE icfname, DATA: lv_name TYPE icfname,
lv_url TYPE string, lv_url TYPE string,
lv_parguid TYPE icfparguid. lv_parguid TYPE icfparguid.
@ -322,6 +324,8 @@ CLASS ZCL_ABAPGIT_OBJECT_SICF IMPLEMENTATION.
METHOD read_tadir_sicf. METHOD read_tadir_sicf.
* note: this method is called dynamically from some places
DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt, DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
lv_hash TYPE text25, lv_hash TYPE text25,
lv_obj_name TYPE tadir-obj_name. lv_obj_name TYPE tadir-obj_name.

View File

@ -139,7 +139,15 @@ CLASS ZCL_ABAPGIT_TADIR IMPLEMENTATION.
CASE <ls_tadir>-object. CASE <ls_tadir>-object.
WHEN 'SICF'. WHEN 'SICF'.
* replace the internal GUID with a hash of the path * replace the internal GUID with a hash of the path
<ls_tadir>-obj_name+15 = zcl_abapgit_object_sicf=>read_sicf_url( <ls_tadir>-obj_name ). TRY.
CALL METHOD ('ZCL_ABAPGIT_OBJECT_SICF')=>read_sicf_url
EXPORTING
iv_obj_name = <ls_tadir>-obj_name
RECEIVING
rv_hash = <ls_tadir>-obj_name+15.
CATCH cx_sy_dyn_call_illegal_method.
* SICF might not be supported in some systems, assume this code is not called
ENDTRY.
ENDCASE. ENDCASE.
ENDLOOP. ENDLOOP.
@ -251,9 +259,16 @@ CLASS ZCL_ABAPGIT_TADIR IMPLEMENTATION.
METHOD zif_abapgit_tadir~read_single. METHOD zif_abapgit_tadir~read_single.
IF iv_object = 'SICF'. IF iv_object = 'SICF'.
rs_tadir = zcl_abapgit_object_sicf=>read_tadir_sicf( TRY.
CALL METHOD ('ZCL_ABAPGIT_OBJECT_SICF')=>read_tadir
EXPORTING
iv_pgmid = iv_pgmid iv_pgmid = iv_pgmid
iv_obj_name = iv_obj_name ). iv_obj_name = iv_obj_name
RECEIVING
rs_tadir = rs_tadir.
CATCH cx_sy_dyn_call_illegal_method.
* SICF might not be supported in some systems, assume this code is not called
ENDTRY.
ELSE. ELSE.
SELECT SINGLE * FROM tadir INTO CORRESPONDING FIELDS OF rs_tadir SELECT SINGLE * FROM tadir INTO CORRESPONDING FIELDS OF rs_tadir
WHERE pgmid = iv_pgmid WHERE pgmid = iv_pgmid