in src/zgoog_cl_data_cluster.clas.abap [0:0]
METHOD IMPORT_DATA.
DATA:
li_db_data TYPE REF TO data.
FIELD-SYMBOLS:
<lt_db_data> TYPE STANDARD TABLE.
CREATE DATA li_db_data TYPE STANDARD TABLE OF (iv_table) WITH DEFAULT KEY.
ASSIGN li_db_data->* TO <lt_db_data>.
DATA: lr_key_tab TYPE REF TO data,
lr_key_template TYPE REF TO data.
FIELD-SYMBOLS: <lt_key_tab> TYPE STANDARD TABLE,
<ls_key_template> TYPE clike.
lr_key_tab = construct_key_table( iv_table ).
ASSIGN lr_key_tab->* TO <lt_key_tab>.
APPEND INITIAL LINE TO <lt_key_tab> ASSIGNING <ls_key_template>.
GET REFERENCE OF <ls_key_template> INTO lr_key_template.
DATA: lv_offset TYPE i VALUE 2.
IF
set_fval(
ir_data = lr_key_template
iv_field = 'MANDT'
iv_val = sy-mandt ) > 0.
lv_offset = 5.
ENDIF.
set_fval(
ir_data = lr_key_template
iv_field = 'RELID'
iv_val = iv_area ).
DATA: lv_id_length TYPE i.
lv_id_length = strlen( iv_id ).
<ls_key_template>+lv_offset(lv_id_length) = iv_id.
select_records(
EXPORTING
iv_table = iv_table
it_key = <lt_key_tab>
IMPORTING
et_result = <lt_db_data> ).
DATA: lv_data_string TYPE string.
FIELD-SYMBOLS: <ls_db_row> TYPE any.
LOOP AT <lt_db_data> ASSIGNING <ls_db_row>.
get_clustd_from_wa(
EXPORTING
is_db_record = <ls_db_row>
CHANGING
cv_data_string = lv_data_string ).
ENDLOOP.
IF lv_data_string IS NOT INITIAL.
DATA: lv_data_xstring TYPE xstring.
lv_data_xstring = lv_data_string.
DATA: lo_reader TYPE REF TO cl_sxml_string_reader.
lo_reader ?= cl_sxml_string_reader=>create( lv_data_xstring ).
CALL TRANSFORMATION id SOURCE XML lo_reader
RESULT data = ev_data.
IF es_addtl_data IS SUPPLIED.
MOVE-CORRESPONDING <ls_db_row> TO es_addtl_data.
ENDIF.
ENDIF.