一個蠻好用的導入文件


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.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章