*&---------------------------------------------------------------------*
*& Report z_sqldump
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_sqldump.
PARAMETERS p_table TYPE tablename.
START-OF-SELECTION.
DATA: lv_tabname TYPE tabname.
DATA: lo_tabtype TYPE REF TO cl_abap_tabledescr,
lo_struct_type TYPE REF TO cl_abap_structdescr,
lr_data TYPE REF TO data,
lt_comp_tab TYPE cl_abap_structdescr=>component_table,
ls_comp_fld TYPE cl_abap_structdescr=>component,
lv_sql_dump TYPE string,
lv_tmp_str TYPE string,
lv_tmp_value TYPE string.
FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE,
<fs_struct> TYPE any,
<fs_field> TYPE any.
lv_tabname = p_table.
lo_struct_type ?= cl_abap_typedescr=>describe_by_name( lv_tabname ).
"lt_comp_tab = lo_struct_type->get_components( ).
DATA(inc_comp_tab) = lo_struct_type->get_included_view( ).
lt_comp_tab = VALUE #( BASE lt_comp_tab FOR value IN inc_comp_tab ( name = value-name type = value-type ) ).
lo_struct_type = cl_abap_structdescr=>create( lt_comp_tab ).
lo_tabtype = cl_abap_tabledescr=>create( lo_struct_type ).
CREATE DATA lr_data TYPE HANDLE lo_tabtype.
ASSIGN lr_data->* TO <fs_tab>.
CREATE DATA lr_data TYPE HANDLE lo_struct_type.
ASSIGN lr_data->* TO <fs_struct>.
SELECT *
FROM (lv_tabname)
INTO CORRESPONDING FIELDS OF TABLE <fs_tab>.
WRITE / 'INSERT '.
WRITE lv_tabname.
WRITE ' FROM TABLE @( VALUE #( '.
LOOP AT <fs_tab> ASSIGNING <fs_struct>.
WRITE / '('.
LOOP AT lt_comp_tab INTO ls_comp_fld.
ASSIGN COMPONENT ls_comp_fld-name OF STRUCTURE <fs_struct> TO <fs_field>.
lv_tmp_str = <fs_field>.
CONCATENATE '''' lv_tmp_str '''' INTO lv_sql_dump.
CONCATENATE ls_comp_fld-name '=' lv_sql_dump INTO lv_sql_dump SEPARATED BY space.
WRITE / lv_sql_dump.
ENDLOOP.
WRITE / ')'.
ENDLOOP.
WRITE / ') ).'.
CONCATENATE ' SELECT * FROM ' lv_tabname 'INTO TABLE @DATA(lt_sql_entries). ' INTO lv_sql_dump SEPARATED BY space.
WRITE / lv_sql_dump.
WRITE / ' IF sy-subrc = 0. '.
WRITE / ' DATA(numberofrecords) = lines( lt_sql_entries ). '.
WRITE / ' out->write( numberofrecords && '' entries inserted successfully '' ). '.
WRITE / ' ENDIF. '.
@EndUserText.label : 'Inventory data group_094'
@AbapCatalog.enhancementCategory : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #LIMITED
define table zinventory_094 {
key client : abap.clnt not null;
key inventory_id : abap.numc(6) not null;
product_id : snwd_product_id;
@Semantics.quantity.unitOfMeasure : 'zinventory_094.quantity_unit'
quantity : snwd_quantity;
quantity_unit : snwd_quantity_unit;
remark : snwd_desc;
created_at : snwd_created_at;
status : snwd_so_item_atp_status_code;
}
@EndUserText.label : 'Demo data upload'
@AbapCatalog.enhancementCategory : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #LIMITED
define table zinventory_094 {
key client : abap.clnt not null;
key inventory_id : abap.numc(6) not null;
product_id : abap.char(10);
@Semantics.quantity.unitOfMeasure : 'zinventory_094.quantity_unit'
quantity : abap.quan(13,3);
quantity_unit : abap.unit(3);
remark : abap.char(255);
created_at : abap.tims;
status : abap.char(1);
}
CLASS z_insert_sqldump DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z_insert_sqldump IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
INSERT zinventory_094 FROM TABLE @( VALUE #(
(
client = '100'
inventory_id = '000001'
product_id = 'HT-1000'
quantity = '2.000 '
quantity_unit = 'EA'
remark = 'Convertible'
created_at = '20190917223103.4663930 '
status = 'N'
)
(
client = '100'
inventory_id = '000002'
product_id = 'HT-1007'
quantity = '5.000 '
quantity_unit = 'EA'
remark = 'Business notebook'
created_at = '20190917223103.4663930 '
status = 'A'
)
(
client = '100'
inventory_id = '000003'
product_id = 'HT-1010'
quantity = '3.000 '
quantity_unit = 'EA'
remark = 'Developer notebook'
created_at = '20190917223103.4663930 '
status = 'A'
)
(
client = '100'
inventory_id = '000005'
product_id = 'HT-1002'
quantity = '44.000 '
quantity_unit = ''
remark = 'nnn'
created_at = '20190926193737.2251350 '
status = 'N'
)
) ).
SELECT * FROM zinventory_094 INTO TABLE @DATA(lt_sql_entries).
IF sy-subrc = 0.
DATA(numberofrecords) = lines( lt_sql_entries ).
out->write( numberofrecords && ' entries inserted successfully ' ).
ENDIF.
ENDMETHOD.
ENDCLASS.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
40 | |
25 | |
17 | |
14 | |
8 | |
7 | |
7 | |
7 | |
6 | |
6 |