*定义内表
DATA: BEGIN OF ITAB1 OCCURS 0,
。。。。。。。
END OF ITAB1.
DATA: itab LIKE ITAB1 OCCURS 0 WITH HEADER LINE.
**************************定义控件***********************************
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2.
PARAMETERS:cc AS CHECKBOX DEFAULT 'X'.
PARAMETERS: pc_file(80).
SELECTION-SCREEN END OF BLOCK b2.
*********************************************************************************
INITIALIZATION.
* t1 = '查询条件'.
t2 = '文件上传'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pc_file.
PERFORM sub_find USING pc_file.
*********************************************************************************
FORM sub_find USING pc_file. "---------------------选择EXCEL文件------------------
* Data for open dialogDATA: l_filetab TYPE filetable,
l_rc TYPE i.
CLEAR l_filetab.
REFRESH l_filetab.
* Open dialog
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
* WINDOW_TITLE = 'SAP Custom - Open File'
* DEFAULT_EXTENSION =
default_filename = '*.xls'
* FILE_FILTER = '*.xls'
initial_directory = 'd:\'
multiselection = ''
CHANGING
file_table = l_filetab
rc = l_rc
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
* Get file path
CHECK l_rc EQ 1.
READ TABLE l_filetab INDEX 1 INTO pc_file.
ENDFORM. "Sub_find
FORM uploaddata. "-------------------------上传EXCEL --------------------
DATA: BEGIN OF i_excel OCCURS 0.INCLUDE STRUCTURE alsmex_tabline.
DATA: END OF i_excel.
DATA: l_answer(1) TYPE c.
DATA: l_column TYPE i.
FIELD-SYMBOLS: <fs>.
DATA: l_pathname LIKE rlgrap-filename.
MOVE pc_file TO l_pathname.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = l_pathname
i_begin_col = c_begin_col
i_begin_row = c_begin_row
i_end_col = c_end_col
i_end_row = c_end_row
TABLES
intern = i_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF i_excel[] IS INITIAL.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
* DEFAULTOPTION = 'Y'
diagnosetext1 = 'No data in excel'
* DIAGNOSETEXT2 = ' '
* DIAGNOSETEXT3 = ' '
textline1 = 'No data in excel'
* TEXTLINE2 = ' '
titel = 'Confirm'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
answer = l_answer.
ELSE.
DELETE i_excel WHERE row = '0001'.
SORT i_excel BY row col.
LOOP AT i_excel.
MOVE i_excel-col TO l_column.
ASSIGN COMPONENT l_column OF STRUCTURE itab TO <fs>.
MOVE i_excel-value TO <fs>.
AT END OF row.
APPEND itab.
CLEAR itab.
ENDAT.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. "UPLOADDATA