mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 20:32:26 +08:00
Support of Baseinfo String for DDLS Object Handler (#2967)
* support of baseinfo string in ddls * fixes abaplint findings * fixes abaplint issues
This commit is contained in:
parent
714fe7202d
commit
dcb4d94275
|
@ -10,6 +10,9 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
METHODS is_baseinfo_supported
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_supported) TYPE abap_bool .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,6 +20,22 @@ ENDCLASS.
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_baseinfo_supported.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lr_data_baseinfo TYPE REF TO data,
|
||||||
|
lx_error TYPE REF TO cx_root.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE').
|
||||||
|
rv_supported = abap_true.
|
||||||
|
CATCH cx_root INTO lx_error.
|
||||||
|
rv_supported = abap_false.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD open_adt_stob.
|
METHOD open_adt_stob.
|
||||||
|
|
||||||
DATA: lr_data TYPE REF TO data,
|
DATA: lr_data TYPE REF TO data,
|
||||||
|
@ -143,34 +162,60 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~deserialize.
|
METHOD zif_abapgit_object~deserialize.
|
||||||
|
|
||||||
DATA: lo_ddl TYPE REF TO object,
|
DATA:
|
||||||
|
lo_ddl TYPE REF TO object,
|
||||||
lr_data TYPE REF TO data,
|
lr_data TYPE REF TO data,
|
||||||
|
lr_data_baseinfo TYPE REF TO data,
|
||||||
lx_error TYPE REF TO cx_root.
|
lx_error TYPE REF TO cx_root.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lg_data> TYPE any,
|
FIELD-SYMBOLS:
|
||||||
<lg_field> TYPE any.
|
<lg_data> TYPE any,
|
||||||
|
<lg_data_baseinfo> TYPE any,
|
||||||
|
<lg_source> TYPE any,
|
||||||
|
<lg_field_baseinfo> TYPE any,
|
||||||
|
<lg_baseinfo_string> TYPE any,
|
||||||
|
<lg_baseinfo_ddlname> TYPE any.
|
||||||
|
|
||||||
|
TRY.
|
||||||
CREATE DATA lr_data TYPE ('DDDDLSRCV').
|
CREATE DATA lr_data TYPE ('DDDDLSRCV').
|
||||||
ASSIGN lr_data->* TO <lg_data>.
|
ASSIGN lr_data->* TO <lg_data>.
|
||||||
|
|
||||||
io_xml->read( EXPORTING iv_name = 'DDLS'
|
io_xml->read( EXPORTING iv_name = 'DDLS'
|
||||||
CHANGING cg_data = <lg_data> ).
|
CHANGING cg_data = <lg_data> ).
|
||||||
|
|
||||||
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
|
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_source>.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
<lg_field> = mo_files->read_string( 'asddls' ) ##no_text.
|
<lg_source> = mo_files->read_string( 'asddls' ) ##no_text.
|
||||||
|
|
||||||
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
|
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
|
||||||
RECEIVING
|
RECEIVING
|
||||||
handler = lo_ddl.
|
handler = lo_ddl.
|
||||||
|
|
||||||
TRY.
|
IF is_baseinfo_supported( ) = abap_true.
|
||||||
|
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_S_BASEINFO_STRING_SAVE').
|
||||||
|
ASSIGN lr_data_baseinfo->* TO <lg_data_baseinfo>.
|
||||||
|
|
||||||
|
ASSIGN COMPONENT 'BASEINFO_STRING' OF STRUCTURE <lg_data_baseinfo> TO <lg_baseinfo_string>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
<lg_baseinfo_string> = mo_files->read_string( 'baseinfo' ) ##no_text.
|
||||||
|
|
||||||
|
ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE <lg_data_baseinfo> TO <lg_baseinfo_ddlname>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
<lg_baseinfo_ddlname> = ms_item-obj_name.
|
||||||
|
|
||||||
|
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
|
||||||
|
EXPORTING
|
||||||
|
name = ms_item-obj_name
|
||||||
|
put_state = 'N'
|
||||||
|
ddddlsrcv_wa = <lg_data>
|
||||||
|
baseinfo_string = <lg_data_baseinfo>.
|
||||||
|
ELSE.
|
||||||
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
|
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
|
||||||
EXPORTING
|
EXPORTING
|
||||||
name = ms_item-obj_name
|
name = ms_item-obj_name
|
||||||
put_state = 'N'
|
put_state = 'N'
|
||||||
ddddlsrcv_wa = <lg_data>.
|
ddddlsrcv_wa = <lg_data>.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR')
|
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR')
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
@ -277,14 +322,20 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
||||||
|
|
||||||
DATA: lo_ddl TYPE REF TO object,
|
DATA: lo_ddl TYPE REF TO object,
|
||||||
lr_data TYPE REF TO data,
|
lr_data TYPE REF TO data,
|
||||||
|
lr_data_baseinfo TYPE REF TO data,
|
||||||
lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY,
|
lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY,
|
||||||
lx_error TYPE REF TO cx_root.
|
lx_error TYPE REF TO cx_root.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lg_data> TYPE any,
|
FIELD-SYMBOLS: <lg_data> TYPE any,
|
||||||
<lg_field> TYPE any,
|
<lg_field> TYPE any,
|
||||||
<lv_comp> LIKE LINE OF lt_clr_comps.
|
<lv_comp> LIKE LINE OF lt_clr_comps,
|
||||||
|
<lg_data_baseinfo> TYPE ANY TABLE,
|
||||||
|
<ls_data_baseinfo> TYPE any,
|
||||||
|
<lg_ddlname> TYPE any,
|
||||||
|
<lg_as4local> TYPE any.
|
||||||
|
|
||||||
|
|
||||||
|
TRY.
|
||||||
CREATE DATA lr_data TYPE ('DDDDLSRCV').
|
CREATE DATA lr_data TYPE ('DDDDLSRCV').
|
||||||
ASSIGN lr_data->* TO <lg_data>.
|
ASSIGN lr_data->* TO <lg_data>.
|
||||||
|
|
||||||
|
@ -292,13 +343,43 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
||||||
RECEIVING
|
RECEIVING
|
||||||
handler = lo_ddl.
|
handler = lo_ddl.
|
||||||
|
|
||||||
TRY.
|
IF is_baseinfo_supported( ) = abap_true.
|
||||||
|
CREATE DATA lr_data_baseinfo TYPE ('IF_DD_DDL_TYPES=>TY_T_BASEINFO_STRING').
|
||||||
|
ASSIGN lr_data_baseinfo->* TO <lg_data_baseinfo>.
|
||||||
|
ASSIGN lr_data_baseinfo->* TO <ls_data_baseinfo>.
|
||||||
|
|
||||||
|
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
|
||||||
|
EXPORTING
|
||||||
|
name = ms_item-obj_name
|
||||||
|
get_state = 'A'
|
||||||
|
IMPORTING
|
||||||
|
ddddlsrcv_wa = <lg_data>
|
||||||
|
baseinfo_string = <lg_data_baseinfo>.
|
||||||
|
|
||||||
|
LOOP AT <lg_data_baseinfo> ASSIGNING <ls_data_baseinfo>.
|
||||||
|
ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE <ls_data_baseinfo> TO <lg_ddlname>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
ASSIGN COMPONENT 'AS4LOCAL' OF STRUCTURE <ls_data_baseinfo> TO <lg_as4local>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
IF <lg_ddlname> = ms_item-obj_name AND <lg_as4local> = 'A'.
|
||||||
|
ASSIGN COMPONENT 'BASEINFO_STRING' OF STRUCTURE <ls_data_baseinfo> TO <lg_field>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
mo_files->add_string( iv_ext = 'baseinfo'
|
||||||
|
iv_string = <lg_field> ) ##no_text.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
ELSE.
|
||||||
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
|
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
|
||||||
EXPORTING
|
EXPORTING
|
||||||
name = ms_item-obj_name
|
name = ms_item-obj_name
|
||||||
get_state = 'A'
|
get_state = 'A'
|
||||||
IMPORTING
|
IMPORTING
|
||||||
ddddlsrcv_wa = <lg_data>.
|
ddddlsrcv_wa = <lg_data>.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
CATCH cx_root INTO lx_error.
|
CATCH cx_root INTO lx_error.
|
||||||
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
|
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
|
||||||
ix_previous = lx_error ).
|
ix_previous = lx_error ).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user