【SAP ABAP系列】SAP ABAP 从FTP服务器读取文件到本地

2020-11-16 09:59:40 浏览数 (1)

正文部分

代码语言:javascript复制
​
DATA: hdl TYPE i,
      key TYPE i VALUE 26101957,
      dstlen TYPE i,
      blob_length TYPE i.
DATA filepath TYPE string .

DATA: BEGIN OF blob OCCURS 0,
      line(100) TYPE x,
      END OF blob.

PARAMETERS: user(64) TYPE c ,
            pwd(64) TYPE c ,
            host(64) TYPE c ,
            filename(80) TYPE c ,
            name2(80) TYPE c,
            dest LIKE rfcdes-rfcdest DEFAULT 'SAPFTP'.
PARAMETERS: p_file LIKE rlgrap-filename
   DEFAULT 'c:test.xls'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM get_p_file USING p_file text-006.

START-OF-SELECTION.
TRANSLATE  user TO lowER CASE.

  CALL 'AB_RFC_X_SCRAMBLE_STRING'
    ID 'SOURCE'      FIELD pwd    ID 'KEY'         FIELD key
    ID 'SCR'         FIELD 'X'    ID 'DESTINATION' FIELD pwd
    ID 'DSTLEN'      FIELD dstlen.


  CALL FUNCTION 'FTP_CONNECT'
    EXPORTING
      user            = user
      password        = pwd
      host            = host
      rfc_destination = dest
    IMPORTING
      handle          = hdl.


  CALL FUNCTION 'FTP_SERVER_TO_R3'
    EXPORTING
      handle      = hdl
      fname       = filename
    IMPORTING
      blob_length = blob_length
    TABLES
      blob        = blob.


  filepath = p_file .
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename = filepath
      filetype = 'BIN'
    TABLES
      data_tab = blob.



  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      handle = hdl.
*&---------------------------------------------------------------------*
*&      Form  get_p_file
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_P_FILE  text
*      -->P_TEXT_006  text
*----------------------------------------------------------------------*
FORM get_p_file  USING    l_filename
                          l_text.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_filename     = space
      def_path         = l_filename
      mask             = ',*.xls ,*.xls.'
      mode             = 'O'
      title            = l_text
    IMPORTING
      filename         = l_filename
    EXCEPTIONS
      inv_winsys       = 04
      no_batch         = 08
      selection_cancel = 12
      selection_error  = 16.


ENDFORM.                    " get_p_file

​

0 人点赞