abap从pc读取文件到内表

1:通过Cl_Gui_Frontend_Services提供的file_open_dialog方法生成选择文件对话框
REPORT z_choosing_pc_file_use_class.

TYPES: BEGIN OF rectype,
        kunnr LIKE kna1-kunnr,
        land1 LIKE kna1-land1,
        name1 LIKE kna1-name1,
        stras LIKE kna1-stras,
        ort01 LIKE kna1-ort01,
        pstlz LIKE kna1-pstlz,
END OF rectype.

DATA itab TYPE STANDARD TABLE OF rectype WITH HEADER LINE.
DATA: filetable      TYPE filetable  ,
      rc             TYPE i          ,
      wa             TYPE file_table .

PARAMETERS: pc_file(80) OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pc_file.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
      window_title      = 'UPLOAD'
      multiselection    = 'X'
      default_extension = 'TXT'
      default_filename  = '*.txt'
      initial_directory = 'C:\SAP\'
    CHANGING
      file_table        = filetable
      rc                = rc.

  CALL METHOD cl_gui_cfw=>flush.

  LOOP AT filetable INTO wa.
  ENDLOOP.
  IF wa-filename <> ''.
    MOVE wa-filename TO pc_file.
  ENDIF.

START-OF-SELECTION.

  DATA: filename TYPE string.
  filename = pc_file.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = filename
    TABLES
      data_tab                = itab
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.

  IF sy-subrc = 0.
    MESSAGE s001(00) WITH 'File Successfully Uploaded'.
  ELSE.
    MESSAGE e001(00) WITH 'Error during File Uploading'.
  ENDIF.

END-OF-SELECTION.

  LOOP AT itab.
    WRITE: / itab-kunnr, itab-land1, itab-name1(30),
             itab-stras(30), itab-pstlz, itab-ort01(30).
  ENDLOOP.


2:通过function module WS_FILENAME_GET实现用户PC文件的选择。
REPORT z_choosing_pc_file_use_fm.

TYPES: BEGIN OF rectype,
        kunnr LIKE kna1-kunnr,
        land1 LIKE kna1-land1,
        name1 LIKE kna1-name1,
        stras LIKE kna1-stras,
        ort01 LIKE kna1-ort01,
        pstlz LIKE kna1-pstlz,
END OF rectype.

DATA itab TYPE STANDARD TABLE OF rectype WITH HEADER LINE.

PARAMETERS: pc_file(80) OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pc_file.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_filename      =      '*.txt'
      def_path             =      'C:\SAP\'
      title          =      'UPLOAD'
    IMPORTING
      filename             =      pc_file
    EXCEPTIONS
      inv_winsys      =      1
      no_batch             =      2
      selection_cancel =      3
      selection_error      =      4
      OTHERS             =      5.
  IF sy-subrc <> 0.
    WRITE sy-subrc.
    EXIT.
  ENDIF.

START-OF-SELECTION.

  DATA: filename TYPE string.
  filename = pc_file.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = filename
    TABLES
      data_tab                = itab
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.

  IF sy-subrc = 0.
    MESSAGE s001(00) WITH 'File Successfully Uploaded'.
  ELSE.
    MESSAGE e001(00) WITH 'Error during File Uploading'.
  ENDIF.

END-OF-SELECTION.

  LOOP AT itab.
    WRITE: / itab-kunnr, itab-land1, itab-name1(30),
             itab-stras(30), itab-pstlz, itab-ort01(30).
  ENDLOOP.

猜你喜欢

转载自caoxuhuan.iteye.com/blog/938885