一个蛮好用的导入文件


DATAlt_file_table TYPE STANDARD TABLE OF file_table,
        lw_file_table TYPE file_table.

  DATAl_rc TYPE i.

  DATAlv_pathname LIKE rlgrap-filename.

  DATAlt_intern TYPE STANDARD TABLE OF alsmex_tabline,
        lw_intern TYPE alsmex_tabline.

  DATAlt_save_data TYPE STANDARD TABLE OF spfli,
        lw_save_data TYPE spfli.

  DATAls_db_data TYPE spfli.

  DATAlv_col TYPE i.

  FIELD-SYMBOLS<fs>.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
      window_title            '选择文件'
*     default_extension       =
      default_filename        '*.xls'
*     file_filter             = '*.xls'
*     with_encoding           =
*     initial_directory       =
*     multiselection          =
    CHANGING
      file_table              lt_file_table
      rc                      l_rc
*     user_action             =
*     file_encoding           =
    EXCEPTIONS
      file_open_dialog_failed 1
      cntl_error              2
      error_no_gui            3
      not_supported_by_gui    4
      OTHERS                  5.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  CHECK l_rc 1.
  READ TABLE lt_file_table INTO lw_file_table INDEX 1.
  lv_pathname lw_file_table-filename.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                lv_pathname
      i_begin_col             1
      i_begin_row             2
      i_end_col               4
      i_end_row               9999
    TABLES
      intern                  lt_intern
    EXCEPTIONS
      inconsistent_parameters 1
      upload_ole              2
      OTHERS                  3.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  CHECK lt_intern IS NOT INITIAL.
  SORT lt_intern BY row col.
  LOOP AT lt_intern INTO lw_intern.
    lv_col lw_intern-col + 1.
    ASSIGN COMPONENT lv_col OF STRUCTURE lw_save_data TO <fs>.
    <fs> lw_intern-value.
    AT END OF row.
      APPEND lw_save_data TO lt_save_data.
      CLEAR lw_save_data.
    ENDAT.
    CLEARlw_intern.
    UNASSIGN <fs>.
  ENDLOOP.

*补零
*  LOOP AT lt_save_data INTO lw_save_data.
*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*      EXPORTING
*        input  = lw_save_data-nc_code
*      IMPORTING
*        output = lw_save_data-nc_code.
*    MODIFY lt_save_data FROM lw_save_data.
*    CLEAR: lw_save_data.
*  ENDLOOP.

  MODIFY spfli FROM TABLE lt_save_data.
  IF sy-subrc 0.
    MESSAGE s002(zmsg_fi_nc).
  ELSE.
    MESSAGE s003(zmsg_fi_ncDISPLAY LIKE 'E'.
  ENDIF.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值