EXPORT_DATA_MULTIPLE

in src/zgoog_cl_data_cluster.clas.abap [0:0]


  METHOD EXPORT_DATA_MULTIPLE.

    FIELD-SYMBOLS:
      <lt_source_data> TYPE ANY TABLE,
      <lt_insert>      TYPE STANDARD TABLE.

    ASSIGN it_data TO <lt_source_data>.

    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: lr_key_tab TYPE REF TO data.

    FIELD-SYMBOLS: <ls_source_wa>  TYPE any,
                   <lt_select_key> TYPE STANDARD TABLE.

    lr_key_tab = construct_key_table( iv_table ).

    ASSIGN lr_key_tab->* TO <lt_select_key>.

    LOOP AT <lt_source_data> ASSIGNING <ls_source_wa>.
      CLEAR: <ls_insert_row>.

      MOVE-CORRESPONDING <ls_source_wa> TO
        <ls_insert_row>.

      FIELD-SYMBOLS: <lv_data_value> TYPE any.

      ASSIGN COMPONENT iv_data_field OF STRUCTURE <ls_source_wa>
             TO <lv_data_value>.

      build_export_key_itab(
       EXPORTING
         is_export_wa     = <ls_insert_row>
         iv_data          = <lv_data_value>
         iv_format        = iv_format
       CHANGING
         ct_export       = <lt_insert>
         ct_key          = <lt_select_key> ).

    ENDLOOP.

    delete_data_multile(
       iv_table    = iv_table
       it_key      = <lt_select_key> ).

    IF <lt_insert> IS NOT INITIAL.
      INSERT (iv_table) FROM TABLE <lt_insert>.
      ev_db_count = sy-dbcnt.
    ENDIF.