使用函数 ALSM_EXCEL_TO_INTERNAL_TABLE 将Excel数据导入到内表 lt_excel 后,可以将数据转换并赋值到目标内表 lt_tab。以下是一个示例代码,展示如何实现这一过程:
- 首先,定义内表和结构:
|
1 2 3 4 5 6 7 8 9 10 |
TYPES: BEGIN OF ty_excel, row TYPE i, column TYPE i, value TYPE char255, END OF ty_excel. DATA: lt_excel TYPE TABLE OF ty_excel, lt_tab TYPE TABLE OF your_table_type, ls_tab TYPE your_table_type, lv_filename TYPE string. |
- 使用
ALSM_EXCEL_TO_INTERNAL_TABLE函数读取Excel文件:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
PARAMETERS: p_file TYPE rlgrap-filename. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'F4_FILENAME' EXPORTING field_name = 'p_file' IMPORTING file_name = p_file. START-OF-SELECTION. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_file i_begin_col = 1 i_begin_row = 1 i_end_col = 256 i_end_row = 65536 TABLES intern = lt_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. EXIT. ENDIF. |
- 使用指针动态赋值:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
DATA: lv_row TYPE i, lv_col TYPE i, lv_value TYPE char255, lr_field TYPE REF TO data. FIELD-SYMBOLS: <fs_tab> TYPE any, <fs_value> TYPE any. CLEAR: lv_row, lv_col, lv_value. LOOP AT lt_excel INTO DATA(ls_excel). IF lv_row <> ls_excel-row. IF lv_row IS NOT INITIAL. " 将已填充的行插入到目标内表 APPEND ls_tab TO lt_tab. CLEAR ls_tab. ENDIF. lv_row = ls_excel-row. ENDIF. " 动态获取字段名 ASSIGN COMPONENT ls_excel-column OF STRUCTURE ls_tab TO <fs_value>. IF sy-subrc = 0. <fs_value> = ls_excel-value. ENDIF. ENDLOOP. " 插入最后一行 IF lv_row IS NOT INITIAL. APPEND ls_tab TO lt_tab. ENDIF. |


