no standard page heading.
DATA : USER ( 30 ) TYPE C VALUE 'sap' ,
PWD ( 30 ) TYPE C VALUE 'sapftp1234a' ,
HOST ( 64 ) TYPE C VALUE '10.12.38.45' ,
FTP_PWD ( 30 ) TYPE C ,
DEST LIKE RFCDES -RFCDEST VALUE 'SAPFTPA' ,
KEY TYPE I 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 3 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"。