EXCEL上传DEMO

DATA: filetab TYPE filetable WITH HEADER LINE .

DATA: rc TYPE i.

DATA: outtab TYPE TABLE OF mara WITH HEADER LINE  .

DATA: itab TYPE TABLE OF alsmex_tabline WITH HEADER LINE.

 

 

DATA:g_file TYPE rlgrap-filename.

 

FIELD-SYMBOLS: <fs>.

 

PARAMETERS: p_file TYPE string.

 

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog

    EXPORTING

      default_filename = p_file

    CHANGING

      rc               = rc

      file_table       = filetab[].

 

  READ TABLE  filetab INDEX  1.

 

  IF sy-subrc EQ 0.

    p_file = filetab-filename.

  ENDIF.

 

 

START-OF-SELECTION.

  g_file = p_file.  "注意两个文件用于不同的函数,所以类型不同

 

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

    EXPORTING

      filename    = g_file

      i_begin_col = 1

      i_begin_row = 1

      i_end_col   = 255

      i_end_row   = 65536

    TABLES

      intern      = itab[].

 

  DELETE itab WHERE row = 1.  "删除字段名行

  

  LOOP AT itab.

    

    ON CHANGE OF itab-row.

      IF sy-tabix NE 1.

        APPEND outtab.

        CLEAR outtab.

      ENDIF.

    ENDON.

 

    ASSIGN COMPONENT itab-col OF STRUCTURE outtab TO <fs>.         "动态方法将值传到相应的内表

    <fs> = itab-value.

 

  ENDLOOP.

 

  APPEND outtab.   "这句不要忘记,要把最后一条APPEND到内表中

posted @ 2015-01-05 14:12  Eric.su  阅读(159)  评论(0编辑  收藏  举报