因为练习系统是IDES,没数据。
所以从其他系统导出部分数据到excel,然后上传到IDES。
如果是spfli等航班表不需要这样,直接参考下面的就行
http://blog.sina.com.cn/s/blog_c0978c9b0102vvtr.html
下面是工具程序
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
具体代码:
*&---------------------------------------------------------------------*
*& Report ZLM_003
*&---------------------------------------------------------------------*
*& http://blog.sina.com.cn/sapliumeng
*&---------------------------------------------------------------------*
REPORT zlm_dynamic_upload_db_data.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETER: p_file TYPE ibipparms-path DEFAULT 'C:\Users\Thinkpad\Desktop\so.xlsx'.
PARAMETERS p_name TYPE tabname DEFAULT 'SNWD_SO_I'.
SELECTION-SCREEN END OF BLOCK b1.
*&---------------------------------------------------------------------*
*& Data Define
*&---------------------------------------------------------------------*
DATA: lv_filename LIKE rlgrap-filename.
DATA: lt_excel LIKE TABLE OF alsmex_tabline.
DATA: ls_excel LIKE LINE OF lt_excel.
DATA: dyn_table TYPE REF TO data.
DATA: dyn_wa TYPE REF TO data.
DATA: lv_index TYPE int4.
DATA: exception TYPE REF TO cx_root.
FIELD-SYMBOLS: TYPE table,
TYPE any,
.
*&---------------------------------------------------------------------*
*& SELECTION-SCREEN ON VALUE-REQUEST
*&---------------------------------------------------------------------*
"file F4
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
"file name
lv_filename = p_file.
"upload excel data
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = lv_filename
i_begin_col = 1
i_begin_row = 2
i_end_col = 40
i_end_row = 999
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE 'ALSM_EXCEL_TO_INTERNAL_TABLE Error' TYPE 'E'.
ENDIF.
*创建动态表结构
CREATE DATA dyn_table TYPE TABLE OF (p_name).
*创建动态内表
ASSIGN dyn_table->* TO .
*创建动态工作区结构
CREATE DATA dyn_wa LIKE LINE OF .
*创建动态工作区
ASSIGN dyn_wa->* TO .
SORT lt_excel BY row col.
TRY.
CLEAR lv_index.
LOOP AT lt_excel INTO ls_excel.
MOVE ls_excel-col TO lv_index.
ASSIGN COMPONENT lv_index OF STRUCTURE TO .
CONDENSE ls_excel-value NO-GAPS.
MOVE ls_excel-value TO .
AT END OF row.
APPEND TO . "user defined internal table to store excel data
CLEAR .
ENDAT.
CLEAR ls_excel.
ENDLOOP.
CATCH cx_root INTO exception.
MESSAGE 'Excel data format is wrong,please check' TYPE 'E'.
ENDTRY.
INSERT (p_name) FROM TABLE ACCEPTING DUPLICATE KEYS.
IF sy-subrc <> 0.
MESSAGE 'Please check DB data' TYPE 'E'.
else.
MESSAGE 'OK' TYPE 'S' DISPLAY LIKE 'I'.
ENDIF.
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
这里注意一点
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![动态上传excel数据到DB表](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
金额,数量,时间,日期等,excel里的格式需要调整。