mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
IOBJ support enhancement (#3147)
* IOBJ fix #3105 * Variable fix * BW function modules check * Enhancement of iobj support Enhancement of iobj support which enable handling of: -attributes, -compoundings, -hierarchies Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
f9dfa6c22a
commit
c9e8ca2c93
|
@ -111,17 +111,52 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
|
|||
ls_return TYPE bapiret2,
|
||||
lt_return TYPE STANDARD TABLE OF bapiret2,
|
||||
lo_struct_descr TYPE REF TO cl_abap_structdescr,
|
||||
lo_table_descr TYPE REF TO cl_abap_tabledescr.
|
||||
lo_table_descr TYPE REF TO cl_abap_tabledescr,
|
||||
lr_compounds TYPE REF TO data,
|
||||
lr_attributes TYPE REF TO data,
|
||||
lr_navigationattributes TYPE REF TO data,
|
||||
lr_atrnavinfoprovider TYPE REF TO data,
|
||||
lr_hierarchycharacteristics TYPE REF TO data,
|
||||
lr_elimination TYPE REF TO data,
|
||||
lr_hanafieldsmapping TYPE REF TO data,
|
||||
lr_xxlattributes TYPE REF TO data.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<ls_details> TYPE any,
|
||||
<lt_compounds> TYPE STANDARD TABLE,
|
||||
<lt_attributes> TYPE STANDARD TABLE,
|
||||
<lt_navigationattributes> TYPE STANDARD TABLE,
|
||||
<lt_atrnavinfoprovider> TYPE STANDARD TABLE,
|
||||
<lt_hierarchycharacteristics> TYPE STANDARD TABLE,
|
||||
<lt_elimination> TYPE STANDARD TABLE,
|
||||
<lt_hanafieldsmapping> TYPE STANDARD TABLE,
|
||||
<lt_xxlattributes> TYPE STANDARD TABLE,
|
||||
<ls_infoobject> TYPE data,
|
||||
<lt_infoobjects> TYPE STANDARD TABLE.
|
||||
|
||||
|
||||
TRY.
|
||||
CREATE DATA lr_details TYPE ('BAPI6108').
|
||||
CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM').
|
||||
CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT').
|
||||
CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN').
|
||||
CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP').
|
||||
CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC').
|
||||
CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE').
|
||||
CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP').
|
||||
CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL').
|
||||
CATCH cx_sy_create_data_error.
|
||||
zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ).
|
||||
ENDTRY.
|
||||
|
||||
ASSIGN lr_details->* TO <ls_details>.
|
||||
ASSERT sy-subrc = 0.
|
||||
ASSIGN lr_compounds->* TO <lt_compounds>.
|
||||
ASSIGN lr_attributes->* TO <lt_attributes>.
|
||||
ASSIGN lr_navigationattributes->* TO <lt_navigationattributes>.
|
||||
ASSIGN lr_atrnavinfoprovider->* TO <lt_atrnavinfoprovider>.
|
||||
ASSIGN lr_hierarchycharacteristics->* TO <lt_hierarchycharacteristics>.
|
||||
ASSIGN lr_elimination->* TO <lt_elimination>.
|
||||
ASSIGN lr_hanafieldsmapping->* TO <lt_hanafieldsmapping>.
|
||||
ASSIGN lr_xxlattributes->* TO <lt_xxlattributes>.
|
||||
|
||||
lo_struct_descr ?= cl_abap_structdescr=>describe_by_data( <ls_details> ).
|
||||
lo_table_descr = cl_abap_tabledescr=>create( lo_struct_descr ).
|
||||
|
@ -132,12 +167,47 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
|
|||
|
||||
io_xml->read( EXPORTING iv_name = 'IOBJ'
|
||||
CHANGING cg_data = <ls_details> ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'COMPOUNDS'
|
||||
CHANGING cg_data = <lt_compounds> ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ATTRIBUTES'
|
||||
CHANGING cg_data = <lt_attributes> ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'NAVIGATION_ATTRIBUTES'
|
||||
CHANGING cg_data = <lt_navigationattributes> ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ATTR_NAVIGATION'
|
||||
CHANGING cg_data = <lt_atrnavinfoprovider> ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'HIERARCHY'
|
||||
CHANGING cg_data = <lt_hierarchycharacteristics> ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ELIMINATION'
|
||||
CHANGING cg_data = <lt_elimination> ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'HANA_FIELDS_MAPPING'
|
||||
CHANGING cg_data = <lt_hanafieldsmapping> ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'XXL_ATTRIBUTES'
|
||||
CHANGING cg_data = <lt_xxlattributes> ).
|
||||
|
||||
TRY.
|
||||
|
||||
CALL FUNCTION 'BAPI_IOBJ_CREATE'
|
||||
EXPORTING
|
||||
details = <ls_details>
|
||||
IMPORTING
|
||||
return = ls_return.
|
||||
return = ls_return
|
||||
TABLES
|
||||
compounds = <lt_compounds>
|
||||
attributes = <lt_attributes>
|
||||
navigationattributes = <lt_navigationattributes>
|
||||
atrnavinfoprovider = <lt_atrnavinfoprovider>
|
||||
hierarchycharacteristics = <lt_hierarchycharacteristics>
|
||||
elimination = <lt_elimination>
|
||||
hanafieldsmapping = <lt_hanafieldsmapping>
|
||||
xxlattributes = <lt_xxlattributes>.
|
||||
|
||||
IF ls_return-type = 'E'.
|
||||
zcx_abapgit_exception=>raise( |Error when creating iobj: { ls_return-message }| ).
|
||||
|
@ -177,7 +247,7 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
|
|||
DATA: lv_iobjnm TYPE char30.
|
||||
|
||||
SELECT SINGLE iobjnm
|
||||
FROM rsdiobj
|
||||
FROM ('RSDIOBJ')
|
||||
INTO lv_iobjnm
|
||||
WHERE iobjnm = ms_item-obj_name.
|
||||
|
||||
|
@ -258,15 +328,54 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~serialize.
|
||||
|
||||
DATA: lv_iobjnam TYPE rsiobjnm,
|
||||
DATA:
|
||||
lv_iobjnam TYPE rsiobjnm,
|
||||
ls_return TYPE bapiret2,
|
||||
lr_details TYPE REF TO data.
|
||||
lr_details TYPE REF TO data,
|
||||
lr_details2 TYPE REF TO data,
|
||||
lr_compounds TYPE REF TO data,
|
||||
lr_attributes TYPE REF TO data,
|
||||
lr_navigationattributes TYPE REF TO data,
|
||||
lr_atrnavinfoprovider TYPE REF TO data,
|
||||
lr_hierarchycharacteristics TYPE REF TO data,
|
||||
lr_elimination TYPE REF TO data,
|
||||
lr_hanafieldsmapping TYPE REF TO data,
|
||||
lr_xxlattributes TYPE REF TO data.
|
||||
|
||||
FIELD-SYMBOLS: <ls_details> TYPE any.
|
||||
FIELD-SYMBOLS:
|
||||
<ls_details> TYPE any,
|
||||
<lt_compounds> TYPE STANDARD TABLE,
|
||||
<lt_attributes> TYPE STANDARD TABLE,
|
||||
<lt_navigationattributes> TYPE STANDARD TABLE,
|
||||
<lt_atrnavinfoprovider> TYPE STANDARD TABLE,
|
||||
<lt_hierarchycharacteristics> TYPE STANDARD TABLE,
|
||||
<lt_elimination> TYPE STANDARD TABLE,
|
||||
<lt_hanafieldsmapping> TYPE STANDARD TABLE,
|
||||
<lt_xxlattributes> TYPE STANDARD TABLE.
|
||||
|
||||
TRY.
|
||||
CREATE DATA lr_details TYPE ('BAPI6108').
|
||||
CREATE DATA lr_compounds TYPE STANDARD TABLE OF ('BAPI6108CM').
|
||||
CREATE DATA lr_attributes TYPE STANDARD TABLE OF ('BAPI6108AT').
|
||||
CREATE DATA lr_navigationattributes TYPE STANDARD TABLE OF ('BAPI6108AN').
|
||||
CREATE DATA lr_atrnavinfoprovider TYPE STANDARD TABLE OF ('BAPI6108NP').
|
||||
CREATE DATA lr_hierarchycharacteristics TYPE STANDARD TABLE OF ('BAPI6108HC').
|
||||
CREATE DATA lr_elimination TYPE STANDARD TABLE OF ('BAPI6108IE').
|
||||
CREATE DATA lr_hanafieldsmapping TYPE STANDARD TABLE OF ('BAPI6108HANA_MAP').
|
||||
CREATE DATA lr_xxlattributes TYPE STANDARD TABLE OF ('BAPI6108ATXXL').
|
||||
CATCH cx_sy_create_data_error.
|
||||
zcx_abapgit_exception=>raise( |IOBJ is not supported on this system| ).
|
||||
ENDTRY.
|
||||
|
||||
ASSIGN lr_details->* TO <ls_details>.
|
||||
ASSERT sy-subrc = 0.
|
||||
ASSIGN lr_compounds->* TO <lt_compounds>.
|
||||
ASSIGN lr_attributes->* TO <lt_attributes>.
|
||||
ASSIGN lr_navigationattributes->* TO <lt_navigationattributes>.
|
||||
ASSIGN lr_atrnavinfoprovider->* TO <lt_atrnavinfoprovider>.
|
||||
ASSIGN lr_hierarchycharacteristics->* TO <lt_hierarchycharacteristics>.
|
||||
ASSIGN lr_elimination->* TO <lt_elimination>.
|
||||
ASSIGN lr_hanafieldsmapping->* TO <lt_hanafieldsmapping>.
|
||||
ASSIGN lr_xxlattributes->* TO <lt_xxlattributes>.
|
||||
|
||||
lv_iobjnam = ms_item-obj_name.
|
||||
|
||||
|
@ -275,7 +384,16 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
|
|||
infoobject = lv_iobjnam
|
||||
IMPORTING
|
||||
details = <ls_details>
|
||||
return = ls_return.
|
||||
return = ls_return
|
||||
TABLES
|
||||
compounds = <lt_compounds>
|
||||
attributes = <lt_attributes>
|
||||
navigationattributes = <lt_navigationattributes>
|
||||
atrnavinfoprovider = <lt_atrnavinfoprovider>
|
||||
hierarchycharacteristics = <lt_hierarchycharacteristics>
|
||||
elimination = <lt_elimination>
|
||||
hanafieldsmapping = <lt_hanafieldsmapping>
|
||||
xxlattributes = <lt_xxlattributes>.
|
||||
|
||||
IF ls_return-type = 'E'.
|
||||
zcx_abapgit_exception=>raise( |Error when geting getails of iobj: { ls_return-message }| ).
|
||||
|
@ -293,6 +411,30 @@ CLASS zcl_abapgit_object_iobj IMPLEMENTATION.
|
|||
io_xml->add( iv_name = 'IOBJ'
|
||||
ig_data = <ls_details> ).
|
||||
|
||||
io_xml->add( iv_name = 'COMPOUNDS'
|
||||
ig_data = <lt_compounds> ).
|
||||
|
||||
io_xml->add( iv_name = 'ATTRIBUTES'
|
||||
ig_data = <lt_attributes> ).
|
||||
|
||||
io_xml->add( iv_name = 'NAVIGATION_ATTRIBUTES'
|
||||
ig_data = <lt_navigationattributes> ).
|
||||
|
||||
io_xml->add( iv_name = 'ATTR_NAVIGATION'
|
||||
ig_data = <lt_atrnavinfoprovider> ).
|
||||
|
||||
io_xml->add( iv_name = 'HIERARCHY'
|
||||
ig_data = <lt_hierarchycharacteristics> ).
|
||||
|
||||
io_xml->add( iv_name = 'ELIMINATION'
|
||||
ig_data = <lt_elimination> ).
|
||||
|
||||
io_xml->add( iv_name = 'HANA_FIELDS_MAPPING'
|
||||
ig_data = <lt_hanafieldsmapping> ).
|
||||
|
||||
io_xml->add( iv_name = 'XXL_ATTRIBUTES'
|
||||
ig_data = <lt_xxlattributes> ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user