FTP批量下載文件到SAP服務器


REPORT  ZZZZ.

DATAUSER(30TYPE VALUE 'sap' ,
        PWD(30TYPE VALUE 'sapftp1234a',
        HOST(64TYPE VALUE '10.12.38.45',
        FTP_PWD(30TYPE C,
        DEST LIKE RFCDES-RFCDEST VALUE 'SAPFTPA',
        KEY TYPE VALUE 26101957,
        SLEN TYPE I,
        HDL TYPE I,
        LINE TYPE I,
        CC_ASCII(5VALUE 'ascii',
        SAP_DIR TYPE STRING,
        FTP_DIR TYPE STRING,
        FTPCOMMAND(100TYPE C.  "

DATABEGIN OF RESULT OCCURS 0,
      LINE(100TYPE C,
END OF RESULT.
DATA:BEGIN OF FILE OCCURS 0,
     NAME(30TYPE C,
END OF FILE.

SLEN STRLENPWD ).

CALL FUNCTION 'HTTP_SCRAMBLE'
  EXPORTING
    SOURCE      PWD
    SOURCELEN   SLEN
    KEY         KEY
  IMPORTING
    DESTINATION FTP_PWD.

CALL FUNCTION 'FTP_CONNECT'
  EXPORTING
    USER            USER
    PASSWORD        FTP_PWD
    HOST            HOST
    RFC_DESTINATION DEST
  IMPORTING
    HANDLE          HDL.

IF SY-SUBRC NE 0.
  STOP .
ENDIF.

******get ftp file list
CONCATENATE 'dir' 'plm' INTO FTPCOMMAND SEPARATED BY SPACE.
CALL FUNCTION 'FTP_COMMAND'
  EXPORTING
    HANDLE        HDL
    COMMAND       FTPCOMMAND
  TABLES
    DATA          RESULT
  EXCEPTIONS
    COMMAND_ERROR 1
    TCPIP_ERROR   2.

IF SY-SUBRC 0.
  DO TIMES.
    DELETE RESULT INDEX 1.
  ENDDO.
  DESCRIBE TABLE RESULT LINES LINE.
  DELETE RESULT INDEX LINE.
  REFRESH FILE.
  CLEAR FILE.
  LOOP AT RESULT.
    FILE-NAME RESULT-LINE+39.
    APPEND FILE.
    CLEAR FILE.
  ENDLOOP.
ELSE.
  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      HANDLE HDL.
  STOP.
ENDIF.

IF FILE[] IS NOT INITIAL.
  DATAST_COMM(250),
        TB_COMM LIKE TABLE OF ST_COMM.

  REFRESHTB_COMM.
  CLEAR:   ST_COMM.

  ST_COMM CC_ASCII.
  APPEND ST_COMM TO TB_COMM.
  CLEAR ST_COMM.

  LOOP AT FILE.
    CONCATENATE 'plm/' FILE-NAME INTO FTP_DIR.
    CONCATENATE 'e:\ftp\plm\' FILE-NAME INTO SAP_DIR.
    CONCATENATE 'get' FTP_DIR SAP_DIR INTO ST_COMM SEPARATED BY SPACE.
    APPEND ST_COMM TO TB_COMM.
    CLEARST_COMM.

  ENDLOOP.
*-------get ftp file to sap server
  DATA:ST_RSLT(100TYPE C,
       TB_RSLT LIKE TABLE OF ST_RSLT.
  CALL FUNCTION 'FTP_COMMAND_LIST'
    EXPORTING
      HANDLE        HDL
    TABLES
      DATA          TB_RSLT
      COMMANDS      TB_COMM
    EXCEPTIONS
      COMMAND_ERROR 1
      TCPIP_ERROR   2.

  CASE SY-SUBRC.
    WHEN '1'.
      RESULT 'N'.
      WRITE :/(10SY-SUBRC,
              (10'Command Error'.
    WHEN '2'.
      RESULT 'N'.
      WRITE :/(10SY-SUBRC,
              (10'Tcpip Error'.
    WHEN OTHERS.
      RESULT 'Y'.
  ENDCASE.
  WRITE :/(20'TB Result'.
  LOOP AT TB_RSLT INTO ST_RSLT.
    WRITE :/(100ST_RSLT.
  ENDLOOP.
  WRITE :/(20'TB Command'.
  LOOP AT TB_COMM INTO ST_COMM.
    WRITE :/(100ST_COMM.
  ENDLOOP.

  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      HANDLE HDL.

  CALL FUNCTION 'RFC_CONNECTION_CLOSE'
    EXPORTING
      DESTINATION DEST
    EXCEPTIONS
      OTHERS      1.
ELSE.
  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      HANDLE HDL.
  STOP.
ENDIF.

 

FTP的相關操作:http://www.cnblogs.com/eric0701/archive/2012/01/06/2314218.html

在使用標準 functions前,確保已經安裝SAPFTP.EXE。請先使用程序:RSFTP005 進行SAPFTP 檢查。
RSFTP001 - SAPFTP 版本檢查
RSFTP002 - 執行 FTP 命令
RSFTP003 - 測試
RSFTP004 - FTP 複製
RSFTP005 - SAPFTP 檢查
RSFTP006 - FTP 命令清單
RSFTP007 - Test FB:FTP_SERVER_TO_R3 / FTP_R3_TO_SERVER    讀取FTP數據到R3 / R3數據寫入FTP。
RSFTP008 - Test FB:FTP_CLIENT_TO_R3 / FTP_R3_TO_CLIENT       讀取FTP數據到客戶端 / 客戶端數據寫入FTP。
相關的 SAP function module: FTP*。

HTTP_SCRAMBLE 密碼加密

FTP_CONNECT   連接到FTP。

FTP_COMMAND   執行 FTP 命令。
FTP_DISCONNECT 斷開FTP連接

FTP_R3_TO_SERVER 將內表數據寫入FTP文件中。

FTP_SERVER_TO_R3 從FTP將文件讀取到內表。
FTP程序大致流程爲:HTTP_SCRAMBLE , FTP_CONNECT ,FTP_COMMAND ,FTP_DISCONNECT。

FTP_COMMAND 中輸入標準的FTP命令。如:更改 FTP 目錄 "cd dir", 更改本地目錄 "lcd localdir",上傳文件"put file"。

 

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