caoxuhuan 发表于 2013-1-26 15:55:05

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.
页: [1]
查看完整版本: abap从pc读取文件到内表