in src/zgoog_cl_data_cluster.clas.abap [0:0]
METHOD IMPORT_DATA_MULTIPLE.
DATA:
lr_db_data TYPE REF TO data.
FIELD-SYMBOLS:
<lt_db_data> TYPE STANDARD TABLE.
CREATE DATA lr_db_data TYPE STANDARD TABLE OF (iv_table) WITH DEFAULT KEY.
ASSIGN lr_db_data->* TO <lt_db_data>.
select_records(
EXPORTING
iv_table = iv_table
it_key = it_key
IMPORTING
et_result = <lt_db_data> ).
DATA: lr_result_data TYPE REF TO data.
CREATE DATA lr_result_data LIKE LINE OF et_result.
FIELD-SYMBOLS: <ls_result_wa> TYPE any.
ASSIGN lr_result_data->* TO <ls_result_wa>.
DATA:
lr_current_key TYPE REF TO data,
lr_previous_key TYPE REF TO data.
CREATE DATA lr_current_key LIKE LINE OF it_key.
CREATE DATA lr_previous_key LIKE LINE OF it_key.
FIELD-SYMBOLS: <ls_current_key> TYPE any.
FIELD-SYMBOLS: <ls_previous_key> TYPE any.
ASSIGN lr_current_key->* TO <ls_current_key>.
ASSIGN lr_previous_key->* TO <ls_previous_key>.
DATA: lv_data_string TYPE string.
FIELD-SYMBOLS: <ls_db_data_wa> TYPE any.
LOOP AT <lt_db_data>
ASSIGNING <ls_db_data_wa>.
DATA: lv_insert_flag TYPE flag.
CLEAR: <ls_current_key>.
MOVE-CORRESPONDING <ls_db_data_wa> TO <ls_current_key>.
IF <ls_previous_key> IS NOT INITIAL.
IF <ls_previous_key> <> <ls_current_key>.
lv_insert_flag = abap_true.
ENDIF.
ENDIF.
IF lv_insert_flag IS NOT INITIAL.
collect_result(
EXPORTING
iv_data_field = iv_data_field
CHANGING
cv_string = lv_data_string
cs_result = <ls_result_wa>
ct_result = et_result ).
ENDIF.
CLEAR: <ls_result_wa>.
MOVE-CORRESPONDING <ls_db_data_wa> TO <ls_result_wa>.
get_clustd_from_wa(
EXPORTING
is_db_record = <ls_db_data_wa>
CHANGING
cv_data_string = lv_data_string ).
<ls_previous_key> = <ls_current_key>.
ENDLOOP.
IF lv_data_string IS NOT INITIAL.
collect_result(
EXPORTING
iv_data_field = iv_data_field
CHANGING
cv_string = lv_data_string
cs_result = <ls_result_wa>
ct_result = et_result ).
ENDIF.