Last active
July 26, 2017 11:19
-
-
Save larshp/205f3be705167451113ae06f97f52c14 to your computer and use it in GitHub Desktop.
Suppress initial fields in CALL TRANSFORMATION
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
REPORT zdynamic. | |
START-OF-SELECTION. | |
PERFORM easy. | |
FORM difficult. | |
DATA: ls_usr02 TYPE usr02, | |
lv_xml TYPE string, | |
lv_index TYPE i, | |
lo_stru TYPE REF TO cl_abap_structdescr, | |
lt_components TYPE cl_abap_structdescr=>component_table, | |
lr_dynamic TYPE REF TO data. | |
FIELD-SYMBOLS: <lv_any> TYPE any, | |
<ls_target> TYPE any, | |
<ls_component> LIKE LINE OF lt_components. | |
ls_usr02-bname = 'FOOBAR'. | |
* build lt_components containing fields that are not initial | |
lo_stru ?= cl_abap_structdescr=>describe_by_data( ls_usr02 ). | |
lt_components = lo_stru->get_components( ). | |
LOOP AT lt_components ASSIGNING <ls_component>. | |
lv_index = sy-tabix. | |
ASSIGN COMPONENT <ls_component>-name OF STRUCTURE ls_usr02 TO <lv_any>. | |
ASSERT sy-subrc = 0. | |
IF <lv_any> IS INITIAL. | |
DELETE lt_components INDEX lv_index. | |
ENDIF. | |
ENDLOOP. | |
lo_stru ?= cl_abap_structdescr=>create( lt_components ). | |
CREATE DATA lr_dynamic TYPE HANDLE lo_stru. | |
ASSIGN lr_dynamic->* TO <ls_target>. | |
MOVE-CORRESPONDING ls_usr02 TO <ls_target>. | |
CALL TRANSFORMATION id | |
SOURCE data = <ls_target> | |
RESULT XML lv_xml. | |
ENDFORM. | |
FORM easy. | |
DATA: ls_usr02 TYPE usr02, | |
lv_xml TYPE string. | |
ls_usr02-bname = 'FOOBAR'. | |
CALL TRANSFORMATION id | |
OPTIONS initial_components = 'suppress' | |
SOURCE data = ls_usr02 | |
RESULT XML lv_xml. | |
BREAK-POINT. | |
ENDFORM. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment