sap abap import from excell to table (transparent table)
*&---------------------------------------------------------------------*
*& Report ZTOEXCELL*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztoexcell.
DATA: tab_lines TYPE i.
tab_lines = 0.
DATA: it_files TYPE filetable.
DATA: lv_rc TYPE i.
DATA: lv_action TYPE i.
TYPES: BEGIN OF ty_data,
a TYPE string,
b TYPE string,
c TYPE string,
d TYPE string,
e TYPE string,
f TYPE string,
g TYPE string,
h TYPE string,
i TYPE string,
k TYPE string,
l TYPE string,
m TYPE string,
n TYPE string,
o TYPE string,
p TYPE string,
END OF ty_data.
*tabletype
TYPES: ty_it_itab TYPE STANDARD TABLE OF ty_data WITH DEFAULT KEY.
*internal table
DATA: it_itab TYPE ty_it_itab.
DATA: wa LIKE LINE OF it_itab.
DATA: ls_scarr TYPE scarr.
*file open dialog
cl_gui_frontend_services=>file_open_dialog( EXPORTING
file_filter = |xlsx (*.xlsx)\|*.xlsx\| { cl_gui_frontend_services=>filetype_all } |
CHANGING
file_table = it_files
rc = lv_rc
user_action = lv_action ).
IF lv_action = cl_gui_frontend_services=>action_ok.
IF lines( it_files ) > 0.
* read file und gui upload
DATA: lv_filesize TYPE w3param-cont_len,
lv_filetype TYPE w3param-cont_type,
it_bin_data TYPE w3mimetabtype.
cl_gui_frontend_services=>gui_upload( EXPORTING
filename = |{ it_files[ 1 ]-filename }|
filetype = 'BIN'
IMPORTING
filelength = lv_filesize
CHANGING
data_tab = it_bin_data ).
*solix - > xstring
DATA(lv_bin_data) = cl_bcs_convert=>solix_to_xstring( it_solix = it_bin_data ).
*create spreadsheet ref object
DATA(o_excel) = NEW cl_fdt_xl_spreadsheet( document_name = CONV #( it_files[ 1 ]-filename )
xdocument = lv_bin_data ).
*get first worksheet name
DATA: it_worksheet_names TYPE if_fdt_doc_spreadsheet=>t_worksheet_names.
o_excel->if_fdt_doc_spreadsheet~get_worksheet_names( IMPORTING worksheet_names = it_worksheet_names ).
IF lines( it_worksheet_names ) > 0.
*first worksheet ref to itab
DATA(o_worksheet_itab) = o_excel->if_fdt_doc_spreadsheet~get_itab_from_worksheet( it_worksheet_names[ 1 ] ).
* ref to generic field symbol (excel data)
ASSIGN o_worksheet_itab->* TO FIELD-SYMBOL(<worksheet>).
*move to table
MOVE-CORRESPONDING <worksheet> TO it_itab.
LOOP AT it_itab INTO wa.
tab_lines = tab_lines + 1.
TRY.
ls_scarr-carrid = wa-a.
ls_scarr-carrname = wa-b.
ls_scarr-currcode = wa-c.
INSERT INTO scarr VALUES @ls_scarr.
IF sy-subrc = 0.
WRITE: / 'Line number '&& tab_lines && ' added '.
ELSE.
WRITE: / 'Error in line ' && tab_lines.
ENDIF.
CATCH cx_sy_arithmetic_error INTO DATA(exc).
write: / 'Error in line ' && tab_lines.
ENDTRY.
ENDLOOP.
*** output data GUI
* cl_demo_output=>write_data( <worksheet> ).
* DATA(lv_html) = cl_demo_output=>get( ).
* cl_abap_browser=>show_html( EXPORTING
* title = 'Excell worksheet'
* html_string = lv_html
* container = cl_gui_container=>default_screen ).
*
* WRITE: Space.
ENDIF.
ENDIF.
ENDIF.
Comments
Post a Comment