sap abap import from excell to table (transparent table)

*&---------------------------------------------------------------------*

*& Report ZTOEXCELL
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztoexcell.
DATAtab_lines TYPE i.
tab_lines 0.
DATAit_files TYPE filetable.
DATA:  lv_rc TYPE i.
DATAlv_action TYPE i.


TYPESBEGIN OF ty_data,
         a TYPE string,
         b TYPE string,
         TYPE string,
         d TYPE string,
         e TYPE string,
         f TYPE string,
         g TYPE string,
         h TYPE string,
         TYPE string,
         k TYPE string,
         l TYPE string,
         TYPE string,
         n TYPE string,
         TYPE string,
         p TYPE string,
       END OF ty_data.

*tabletype
TYPESty_it_itab TYPE STANDARD TABLE OF ty_data WITH DEFAULT KEY.

*internal table
DATAit_itab TYPE ty_it_itab.

DATAwa LIKE LINE OF it_itab.

DATAls_scarr TYPE  scarr.





*file open dialog
cl_gui_frontend_services=>file_open_dialogEXPORTING
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 linesit_files 0.
* read file und gui upload
    DATAlv_filesize TYPE w3param-cont_len,
          lv_filetype TYPE w3param-cont_type,
          it_bin_data TYPE w3mimetabtype.
    cl_gui_frontend_services=>gui_uploadEXPORTING
        filename |{ it_files[ ]-filename   }|
        filetype 'BIN'
        IMPORTING
            filelength lv_filesize
          CHANGING
            data_tab it_bin_data ).
*solix - > xstring
    DATA(lv_bin_datacl_bcs_convert=>solix_to_xstringit_solix it_bin_data ).
*create spreadsheet ref object
    DATA(o_excelNEW cl_fdt_xl_spreadsheetdocument_name CONV #it_files[ ]-filename )
                  xdocument lv_bin_data ).
*get first worksheet name
    DATAit_worksheet_names TYPE if_fdt_doc_spreadsheet=>t_worksheet_names.
    o_excel->if_fdt_doc_spreadsheet~get_worksheet_namesIMPORTING worksheet_names it_worksheet_names ).
    IF linesit_worksheet_names 0.
*first worksheet ref to itab
      DATA(o_worksheet_itabo_excel->if_fdt_doc_spreadsheet~get_itab_from_worksheetit_worksheet_names[ ).
* 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

Popular posts from this blog

sap abap Import from excell to internal table that works 100%