FTP批量下载文件到SAP服务器

report  ztest131  message-id zmsg  line-size  136  line-count  33
no  standard  page heading.
DATA USER ( 30 TYPE  VALUE  'sap'  ,
        PWD ( 30 TYPE  VALUE  'sapftp1234a' ,
        HOST ( 64 TYPE  VALUE  '10.12.38.45' ,
        FTP_PWD ( 30 TYPE  C ,
        DEST  LIKE RFCDES -RFCDEST  VALUE  'SAPFTPA' ,
         KEY  TYPE  VALUE  26101957 ,
        SLEN  TYPE  I ,
        HDL  TYPE  I ,
         LINE  TYPE  I ,
        CC_ASCII ( 5 VALUE  'ascii' ,
        SAP_DIR  TYPE STRING ,
        FTP_DIR  TYPE STRING ,
        FTPCOMMAND ( 100 TYPE  C .   "

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

SLEN  STRLEN PWD  ) .

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 .
   DATA ST_COMM ( 250 ) ,
        TB_COMM  LIKE  TABLE  OF ST_COMM .

   REFRESH TB_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 .
     CLEAR ST_COMM .

   ENDLOOP .
*-------get ftp file to sap server
   DATA :ST_RSLT ( 100 TYPE  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  :/ ( 10 SY -SUBRC ,
               ( 10 'Command Error' .
     WHEN  '2' .
      RESULT  'N' .
       WRITE  :/ ( 10 SY -SUBRC ,
               ( 10 'Tcpip Error' .
     WHEN  OTHERS .
      RESULT  'Y' .
   ENDCASE .
   WRITE  :/ ( 20 'TB Result' .
   LOOP  AT TB_RSLT  INTO ST_RSLT .
     WRITE  :/ ( 100 ST_RSLT .
   ENDLOOP .
   WRITE  :/ ( 20 'TB Command' .
   LOOP  AT TB_COMM  INTO ST_COMM .
     WRITE  :/ ( 100 ST_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"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值