动态上传excel数据到DB表

因为练习系统是IDES,没数据。

所以从其他系统导出部分数据到excel,然后上传到IDES。

 如果是spfli等航班表不需要这样,直接参考下面的就行

http://blog.sina.com.cn/s/blog_c0978c9b0102vvtr.html

下面是工具程序

 

具体代码:

*&---------------------------------------------------------------------*
*& 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.
PARAMETERp_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
*&---------------------------------------------------------------------*
DATAlv_filename LIKE          rlgrap-filename.
DATAlt_excel    LIKE TABLE OF alsmex_tabline.
DATAls_excel    LIKE LINE  OF lt_excel.
DATAdyn_table   TYPE REF   TO data.
DATAdyn_wa      TYPE REF   TO data.
DATAlv_index    TYPE          int4.
DATAexception   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_nameFROM 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里的格式需要调整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值