DATA: lt_excel_data TYPE TABLE OF ty_excel_data,
ls_excel_data TYPE ty_excel_data.
DATA: lt_intern TYPE TABLE OF alsmex_tabline,
ls_intern TYPE alsmex_tabline,
lv_row TYPE i,
lv_col TYPE i.
DATA: lv_filename TYPE string,
lv_filetype TYPE char10.
IF p_file IS INITIAL.
MESSAGE '请填写上载模板地址' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
PERFORM upload_excel.
FORM upload_excel.
DATA: lt_rawdata TYPE truxs_t_text_data,
lv_index TYPE i,
lv_tabix TYPE sy-tabix.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 3 " 跳过表头
i_end_col = 38
i_end_row = 9999
TABLES
intern = lt_intern
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc = 0.
CLEAR: lt_excel_data.
SORT lt_intern BY row col.
LOOP AT lt_intern INTO DATA(ls_intern).
AT NEW row.
lv_row = ls_intern-row.
CLEAR ls_excel_data.
ENDAT.
ASSIGN COMPONENT ls_intern-col
OF STRUCTURE ls_excel_data
TO FIELD-SYMBOL(<lv_field>).
IF sy-subrc = 0.
<lv_field> = ls_intern-value.
ENDIF.
AT END OF row.
APPEND ls_excel_data TO lt_excel_data.
ENDAT.
ENDLOOP.
ELSE.
MESSAGE 'Excel文件读取失败' TYPE 'E'.
ENDIF.
"ENDIF.
PERFORM display_data.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM display_data.
DATA: lt_alv TYPE REF TO cl_salv_table,
lx_msg TYPE REF TO cx_salv_msg.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = lt_alv
CHANGING
t_table = lt_excel_data ).
lt_alv->get_columns( )->set_optimize( 'X' ).
lt_alv->display( ).
CATCH cx_salv_msg INTO lx_msg.
MESSAGE lx_msg TYPE 'E'.
ENDTRY.
ENDFORM.