DDIC with reference to class/interface, Search Help with Exit Function (#3545)

* Update zcl_abapgit_objects.clas.abap

* DDIC with reference to class/interface

* DDIC with reference to class/interface

* Search help with exit function

* Table with reference to search help

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Marc Bernard 2020-06-28 10:47:39 +02:00 committed by GitHub
parent 70c96e701d
commit 5f7c7dc2bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 59 additions and 2 deletions

View File

@ -190,6 +190,13 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
io_xml->read( EXPORTING iv_name = 'DD04V'
CHANGING cg_data = ls_dd04v ).
" DDIC Step: Replace REF TO class/interface with generic reference to avoid cyclic dependency
IF iv_step = zif_abapgit_object=>gc_step_id-ddic AND ls_dd04v-datatype = 'REF'.
ls_dd04v-rollname = 'OBJECT'.
ELSEIF iv_step = zif_abapgit_object=>gc_step_id-late AND ls_dd04v-datatype <> 'REF'.
RETURN. " already active
ENDIF.
corr_insert( iv_package = iv_package
ig_object_class = 'DICT' ).
@ -241,6 +248,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
APPEND zif_abapgit_object=>gc_step_id-late TO rt_steps.
ENDMETHOD.

View File

@ -60,6 +60,13 @@ CLASS ZCL_ABAPGIT_OBJECT_SHLP IMPLEMENTATION.
io_xml->read( EXPORTING iv_name = 'DD30V'
CHANGING cg_data = ls_dd30v ).
IF iv_step = zif_abapgit_object=>gc_step_id-ddic AND NOT ls_dd30v-selmexit IS INITIAL.
ls_dd30v-selmexit = 'RS_DD_SELMEXIT'.
ELSEIF iv_step = zif_abapgit_object=>gc_step_id-late AND ls_dd30v-selmexit IS INITIAL.
RETURN. " already active
ENDIF.
io_xml->read( EXPORTING iv_name = 'DD31V_TABLE'
CHANGING cg_data = lt_dd31v ).
io_xml->read( EXPORTING iv_name = 'DD32P_TABLE'
@ -116,6 +123,7 @@ CLASS ZCL_ABAPGIT_OBJECT_SHLP IMPLEMENTATION.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
APPEND zif_abapgit_object=>gc_step_id-late TO rt_steps.
ENDMETHOD.

View File

@ -471,7 +471,10 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
lt_secondary LIKE lt_dd17v,
lt_dd35v TYPE TABLE OF dd35v,
lt_dd36m TYPE dd36mttyp,
ls_dd12v LIKE LINE OF lt_dd12v.
ls_dd12v LIKE LINE OF lt_dd12v,
lv_refs TYPE abap_bool.
FIELD-SYMBOLS: <ls_dd03p> TYPE dd03p.
IF deserialize_idoc_segment( io_xml = io_xml
iv_package = iv_package ) = abap_false.
@ -482,6 +485,16 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
CHANGING cg_data = ls_dd09l ).
io_xml->read( EXPORTING iv_name = 'DD03P_TABLE'
CHANGING cg_data = lt_dd03p ).
" DDIC Step: Replace REF TO class/interface with generic reference to avoid cyclic dependency
LOOP AT lt_dd03p ASSIGNING <ls_dd03p> WHERE datatype = 'REF'.
IF iv_step = zif_abapgit_object=>gc_step_id-ddic.
<ls_dd03p>-rollname = 'OBJECT'.
ELSE.
lv_refs = abap_true.
ENDIF.
ENDLOOP.
io_xml->read( EXPORTING iv_name = 'DD05M_TABLE'
CHANGING cg_data = lt_dd05m ).
io_xml->read( EXPORTING iv_name = 'DD08V_TABLE'
@ -495,6 +508,15 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
io_xml->read( EXPORTING iv_name = 'DD36M'
CHANGING cg_data = lt_dd36m ).
" DDIC Step: Remove referenced to search helps
IF iv_step = zif_abapgit_object=>gc_step_id-ddic.
CLEAR: lt_dd35v, lt_dd36m.
ENDIF.
IF iv_step = zif_abapgit_object=>gc_step_id-late AND lv_refs = abap_false AND lines( lt_dd35v ) = 0.
RETURN. " already active
ENDIF.
corr_insert( iv_package = iv_package
ig_object_class = 'DICT' ).
@ -608,6 +630,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
APPEND zif_abapgit_object=>gc_step_id-late TO rt_steps.
ENDMETHOD.

View File

@ -62,6 +62,14 @@ CLASS ZCL_ABAPGIT_OBJECT_TTYP IMPLEMENTATION.
io_xml->read( EXPORTING iv_name = 'DD40V'
CHANGING cg_data = ls_dd40v ).
" DDIC Step: Replace REF TO class/interface with generic reference to avoid cyclic dependency
IF iv_step = zif_abapgit_object=>gc_step_id-ddic AND ls_dd40v-datatype = 'REF'.
ls_dd40v-rowtype = 'OBJECT'.
ELSEIF iv_step = zif_abapgit_object=>gc_step_id-late AND ls_dd40v-datatype <> 'REF'.
RETURN. " already active
ENDIF.
io_xml->read( EXPORTING iv_name = 'DD42V'
CHANGING cg_data = lt_dd42v ).
io_xml->read( EXPORTING iv_name = 'DD43V'
@ -132,6 +140,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TTYP IMPLEMENTATION.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
APPEND zif_abapgit_object=>gc_step_id-late TO rt_steps.
ENDMETHOD.

View File

@ -771,7 +771,16 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
ENDLOOP.
CASE is_step-step_id.
WHEN zif_abapgit_object=>gc_step_id-ddic.
zcl_abapgit_objects_activation=>activate( is_step-is_ddic ).
WHEN zif_abapgit_object=>gc_step_id-abap.
zcl_abapgit_objects_activation=>activate( is_step-is_ddic ).
WHEN zif_abapgit_object=>gc_step_id-late.
" late can have both DDIC (like TABL with REF TO) and non-DDIC objects
zcl_abapgit_objects_activation=>activate( abap_true ).
zcl_abapgit_objects_activation=>activate( abap_false ).
ENDCASE.
* Call postprocessing
li_exit = zcl_abapgit_exit=>get_instance( ).