EXPORT_DATA

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.