SAP upload data from PC

本文介绍了一个使用ABAP实现的文件操作程序,包括文件选择、数据读取、文件下载及删除等功能。通过调用ABAP的GUI前端服务,程序能够进行文件对话框交互,实现文件上传、下载和删除等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  *----------------------------------------------------------------------*
*   INCLUDE ZGENERALFILE                                               *
*----------------------------------------------------------------------*
*& Purpose: Include can be used for all file search helps and          *
*&          following file loads so long the variables / tables are    *
*&          passed and defined correct.                                *
*& Author:  Volker Lehari - 22.12.2005                                 *
*&-Change Log----------------------------------------------------------*
*& Date       | Name |  Description                                    *
*& 02.10.2007   VL      Replace WS function modules for unicode        *
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  ws_filename_get
*&---------------------------------------------------------------------*
*       Search Help for file
*----------------------------------------------------------------------*
*      <--P_P_FILE  path and file name
*----------------------------------------------------------------------*
FORM ws_filename_get CHANGING p_file.

  DATA: lt_file     TYPE filetable,
        lw_file     TYPE file_table,

        lv_title    TYPE string,
        lv_retcode  TYPE i.


  MOVE 'Select file'(x01) TO lv_title.

* Get the file name
  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
    window_title            =  lv_title
*    default_extension       =
*    default_filename        =
*    file_filter             =
*    with_encoding           =
*    initial_directory       =
      multiselection          = ''
    CHANGING
      file_table              = lt_file
      rc                      = lv_retcode
*    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 NE 0.
    MESSAGE w051.
  ELSEIF lv_retcode GT 0.
    READ TABLE lt_file INTO lw_file INDEX 1.
    MOVE lw_file TO p_file.
  ENDIF.


ENDFORM.                    " ws_filename_get


*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       Read data into defined structure with name of table gt_data
*----------------------------------------------------------------------*
*      -->P_P_FILE  path and file name
*----------------------------------------------------------------------*
FORM get_data USING    p_file.

* Before getting the path create global object

  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
    filename                = p_file
    filetype                = 'DAT'
*    has_field_separator     = SPACE
*    header_length           = 0
*    read_by_line            = 'X'
*    dat_mode                = SPACE
*    codepage                = SPACE
*    ignore_cerr             = ABAP_TRUE
    replacement             = ''
*    virus_scan_profile      =
*  IMPORTING
*    filelength              =
*    header                  =
    CHANGING
      data_tab                = gt_data
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      access_denied           = 13
      not_supported_by_gui    = 17
      error_no_gui            = 18
      OTHERS                  = 19 .
  IF sy-subrc <> 0.

    PERFORM flush.

    MESSAGE ID sy-msgid TYPE 'W' NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*     MESSAGE e053.
  ENDIF.


ENDFORM.                    " get_data

*&---------------------------------------------------------------------*
*&      Form  flush
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM flush .

* Flush
  CALL METHOD cl_gui_cfw=>flush
    EXCEPTIONS
      cntl_system_error = 1
      cntl_error        = 2
      OTHERS            = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.                    " flush


*&---------------------------------------------------------------------*
*&      Form  download_file
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LT_DATA_OUT  text
*      -->P_L_FILENAME  text
*----------------------------------------------------------------------*
FORM download_file  USING    p_file.


  CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
*    bin_filesize              =
      filename                  = p_file
      filetype                  = 'DAT'
*    append                    = SPACE
*    write_field_separator     = SPACE
*    header                    = '00'
*    trunc_trailing_blanks     = SPACE
*    write_lf                  = 'X'
*    col_select                = SPACE
*    col_select_mask           = SPACE
*    dat_mode                  = SPACE
*    confirm_overwrite         = SPACE
*    no_auth_check             = SPACE
*    codepage                  = SPACE
*    ignore_cerr               = ABAP_TRUE
      replacement               = ''
*    write_bom                 = SPACE
*    trunc_trailing_blanks_eol = 'X'
*    wk1_n_format              = SPACE
*    wk1_n_size                = SPACE
*    wk1_t_format              = SPACE
*    wk1_t_size                = SPACE
*  IMPORTING
*    filelength                =
    CHANGING
      data_tab                  = gt_data
    EXCEPTIONS
      file_write_error          = 1
      no_batch                  = 2
      gui_refuse_filetransfer   = 3
      invalid_type              = 4
      no_authority              = 5
      unknown_error             = 6
      header_not_allowed        = 7
      separator_not_allowed     = 8
      filesize_not_allowed      = 9
      header_too_long           = 10
      dp_error_create           = 11
      dp_error_send             = 12
      dp_error_write            = 13
      unknown_dp_error          = 14
      access_denied             = 15
      dp_out_of_memory          = 16
      disk_full                 = 17
      dp_timeout                = 18
      file_not_found            = 19
      dataprovider_exception    = 20
      control_flush_error       = 21
      not_supported_by_gui      = 22
      error_no_gui              = 23
      OTHERS                    = 24        .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.                    " download_file

*&---------------------------------------------------------------------*
*&      Form  delete_file
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_FILE  text
*----------------------------------------------------------------------*
FORM delete_file  USING    p_file.

  DATA: lv_retcode  TYPE i.

  CALL METHOD cl_gui_frontend_services=>file_delete
    EXPORTING
      filename             = p_file
    CHANGING
      rc                   = lv_retcode
    EXCEPTIONS
      file_delete_failed   = 1
      cntl_error           = 2
      error_no_gui         = 3
      file_not_found       = 4
      access_denied        = 5
      unknown_error        = 6
      not_supported_by_gui = 7
      wrong_parameter      = 8
      OTHERS               = 9.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.                    " delete_file
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值