*.............................................................. * Insert Excel data to a table * First Excel data row is skipped (heading) *:............................................................: REPORT zp_upload_excel_to_table . TYPE-POOLS: truxs. SELECTION-SCREEN BEGIN OF BLOCK tabs WITH FRAME. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(25) text-t04. PARAMETERS: p_file TYPE rlgrap-filename. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK tabs. SELECTION-SCREEN BEGIN OF BLOCK params WITH FRAME. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(25) text-t03. PARAMETERS: tabparam(10) TYPE c. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(25) text-t02. PARAMETERS: simu AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(25) text-t01. PARAMETERS: del AS CHECKBOX DEFAULT ' '. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK params. DATA: text1 TYPE string, text2 TYPE string, text3 TYPE string, rows TYPE i, cc TYPE i, perc TYPE i. *----- Referencer for Itab and Itab Workarea DATA ref_itab TYPE REF TO data. DATA ref_itwa TYPE REF TO data. *----- Dereferencer for Itab Body FIELD-SYMBOLS: <fs_itab> TYPE STANDARD TABLE. *----- Dereferencer for Itab Workarea FIELD-SYMBOLS: <fs_itwa> TYPE ANY. *----- Dereferencer for Itab Workarea Components FIELD-SYMBOLS: <fs_comp> TYPE ANY. DATA: it_raw TYPE truxs_t_text_data. * At selection screen AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'F4_FILENAME' EXPORTING field_name = 'P_FILE' IMPORTING file_name = p_file. INITIALIZATION. p_file = 'D:\Temp\zums.xls'. tabparam = 'YYZUMS'. *********************************************************************** *START-OF-SELECTION. START-OF-SELECTION. IF sy-uname NE 'EBELM'. MESSAGE 'You are not authorized.' TYPE 'I'. RETURN. ENDIF. TRY. *----- Define Itab for all DB-Records CREATE DATA ref_itab TYPE STANDARD TABLE OF (tabparam). *----- Make Content of Itab accessible * Dereference (->*) Pointer ref_itab into a <fs> ASSIGN ref_itab->* TO <fs_itab>. CATCH cx_root. "DB-Table does not exist MESSAGE 'Error' TYPE 'I'. ENDTRY. " Alternatives: 'KCD_EXCEL_OLE_TO_INT_CONVERT' and 'ALSM_EXCEL_TO_INTERNAL_TABLE' CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' EXPORTING * I_FIELD_SEPERATOR = i_line_header = 'X' i_tab_raw_data = it_raw " WORK TABLE i_filename = p_file TABLES i_tab_converted_data = <fs_itab> EXCEPTIONS conversion_failed = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. DESCRIBE TABLE <fs_itab> LINES rows. *----- Define Workarea for Itab CREATE DATA ref_itwa TYPE (tabparam). *----- Make content of Itab Workarea accessible ASSIGN ref_itwa->* TO <fs_itwa>. " delete destination table before IF del IS NOT INITIAL. DELETE FROM (tabparam). ENDIF. cc = 1. LOOP AT <fs_itab> INTO <fs_itwa>. CLEAR text1. DO. *----- Assign via do-loop every component of itab workarea * to a component fieldsymbol and access content for write ASSIGN COMPONENT sy-index OF STRUCTURE <fs_itwa> TO <fs_comp>. *----- Abort endless loop after assign of last component IF sy-subrc NE 0. EXIT. ENDIF. text2 = <fs_comp>. CONCATENATE text1 text2 ';' INTO text1. ENDDO. WRITE: / text1. " insert, if simulation is clear IF simu IS INITIAL. INSERT INTO (tabparam) VALUES <fs_itwa>. ENDIF. perc = cc MOD 10. IF perc EQ 0. text1 = cc. text2 = rows. CONCATENATE 'Reading row' text1 '/' text2 INTO text3 SEPARATED BY ' '. CALL FUNCTION 'PROGRESS_INDICATOR' EXPORTING i_text = text1 i_processed = cc i_total = rows i_output_immediately = 'X'. COMMIT WORK. ENDIF. ENDLOOP.