in src/zgoog_cl_data_cluster.clas.abap [0:0]
METHOD EXPORT_DATA.
FIELD-SYMBOLS:
<lt_insert> TYPE STANDARD TABLE.
DATA: lr_insert_row TYPE REF TO data.
DATA: lr_insert_table TYPE REF TO data.
FIELD-SYMBOLS:
<ls_insert_row> TYPE any.
CREATE DATA lr_insert_row TYPE (iv_table).
ASSIGN lr_insert_row->* TO <ls_insert_row>.
CREATE DATA lr_insert_table TYPE STANDARD TABLE OF (iv_table).
ASSIGN lr_insert_table->* TO <lt_insert>.
DATA: lv_offset TYPE i VALUE 2.
IF
set_fval(
ir_data = lr_insert_row
iv_field = 'MANDT'
iv_val = sy-mandt ) > 0.
lv_offset = 5.
ENDIF.
set_fval(
ir_data = lr_insert_row
iv_field = 'RELID'
iv_val = iv_area ).
DATA: lv_id_length TYPE i.
lv_id_length = strlen( iv_id ).
<ls_insert_row>+lv_offset(lv_id_length) = iv_id.
IF is_addtl_data IS SUPPLIED.
MOVE-CORRESPONDING is_addtl_data TO <ls_insert_row>.
ENDIF.
DATA: lr_key_tab TYPE REF TO data.
FIELD-SYMBOLS: <lt_key_sel> TYPE ANY TABLE.
lr_key_tab = construct_key_table( iv_table ).
ASSIGN lr_key_tab->* TO <lt_key_sel>.
build_export_key_itab(
EXPORTING
is_export_wa = <ls_insert_row>
iv_data = iv_data
iv_format = iv_format
CHANGING
ct_export = <lt_insert>
ct_key = <lt_key_sel> ).
delete_data_multile(
iv_table = iv_table
it_key = <lt_key_sel> ).
IF <lt_insert> IS NOT INITIAL.
INSERT (iv_table) FROM TABLE <lt_insert>.
ev_db_count = sy-dbcnt.
ENDIF.