ABAP 上传 下载EXCEL模板 导入数据

上传:smw0在这里插入图片描述
下载:
DATA: lw_key LIKE wwwdatatab,
lv_dest LIKE rlgrap-filename,
lv_rc LIKE sy-subrc.

DATA: lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string,
lv_def_filename TYPE string.
DATA: u_tcode TYPE w3objid.

u_tcode = ‘ZSDP004’.
lv_def_filename = TEXT-003 && TEXT-006.

TRANSLATE lv_def_filename TO UPPER CASE.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_extension = ‘XLSX’
default_file_name = lv_def_filename

  • with_encoding             =
    file_filter               = 'Excel Files (*.XLSX)|*.XLSX|'
    initial_directory         = 'C:\'
    prompt_on_overwrite       = 'X'
    

    CHANGING
    filename = lv_filename
    path = lv_path
    fullpath = lv_fullpath

  • user_action               = l
    
  • file_encoding             =
    

    EXCEPTIONS
    cntl_error = 1
    error_no_gui = 2
    not_supported_by_gui = 3
    invalid_default_file_name = 4
    OTHERS = 5.
    IF sy-subrc = 0.
    lw_key-relid = ‘MI’.
    lw_key-objid = u_tcode .
    TRANSLATE lw_key-objid TO UPPER CASE.

    lv_dest = lv_fullpath.
    CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’
    EXPORTING
    key = lw_key
    destination = lv_dest
    IMPORTING
    rc = lv_rc.
    IF lv_rc <> 0.
    数据导入:
    DATA:lt_excel TYPE TABLE OF zalsmex_tabline,
    ls_excel TYPE zalsmex_tabline,
    lv_col TYPE kcd_ex_col_n,
    lv_type TYPE c,
    lv_date TYPE datum.
    FIELD-SYMBOLS:<fs_field> ,
    <fs_structure>.
    DATA:lv_lines TYPE sy-tabix,
    lv_tabix TYPE sy-tabix.

    ASSIGN gs_sd004 TO <fs_structure>.

    "call upload fm
    CALL FUNCTION ‘ZALSM_EXCEL_TO_INTERNAL_TABLE’
    EXPORTING
    filename = p_file
    i_begin_col = 1
    i_begin_row = 2
    i_end_col = 7
    i_end_row = 9999
    i_sheet_name = ‘’
    TABLES
    intern = lt_excel
    EXCEPTIONS
    inconsistent_parameters = 1
    upload_ole = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    MESSAGE ‘Upload Failed’ TYPE ‘E’.
    ENDIF.
    LOOP AT lt_excel INTO ls_excel.
    lv_col = ls_excel-col + 1.
    ASSIGN COMPONENT lv_col OF STRUCTURE <fs_structure> TO <fs_field>.
    "检查单据类型
    DESCRIBE FIELD <fs_field> TYPE lv_type.
    CASE lv_type.
    WHEN ‘C’.
    <fs_field> = ls_excel-value.
    CONDENSE <fs_field>.
    WHEN ‘I’ "数字串
    OR ‘s’
    OR ‘b’
    OR ‘N’
    OR ‘F’
    OR ‘P’.
    CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5
    conversion_errors = 6
    bcd_overflow = 7
    bcd_field_overflow = 8.

        <fs_field> = ls_excel-value.
      ENDCATCH.
      IF sy-subrc <> 0.
        MESSAGE e001(00) WITH ls_excel-row  '行' ls_excel-col  '列数据转换错误'.
      ENDIF.
    WHEN 'D'.
      "检查日期格式
      CLEAR lv_date.
      lv_date = ls_excel-value.
      CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
        EXPORTING
          date                      = lv_date
        EXCEPTIONS
          plausibility_check_failed = 1
          OTHERS                    = 2.
      IF sy-subrc <> 0.
        MESSAGE e001(00) WITH ls_excel-row  '行' ls_excel-col  '列日期格式错误'.
      ELSE.
        <fs_field> = ls_excel-value.
      ENDIF.
    WHEN OTHERS.
      <fs_field> = ls_excel-value.
    

    ENDCASE.
    AT END OF row.
    APPEND <fs_structure> TO gt_sd004.
    CLEAR:gs_sd004.
    ENDAT.
    ENDLOOP.

    "检查导入数据
    LOOP AT gt_sd004 INTO gs_sd004.
    lv_tabix = sy-tabix.
    ENDLOOP.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值