1.先决条件
- 按照博客中的解决方法匹配置先决环境:SAP message no. 04202 用户 xxxx 没有访问计算机 xxx.xxx.xxx.xxx 的权限

2.实现代码
PARAMETERS: P_FILE TYPE STRING OBLIGATORY,
P_HOST TYPE CHAR30 DEFAULT '10.3.123.140' LOWER CASE,
P_FOLDER TYPE CHAR100 DEFAULT '/sap/' LOWER CASE, "ftp服务器路径;必须/结尾
P_USER TYPE CHAR30 DEFAULT 'user' LOWER CASE,
P_PASSWD TYPE CHAR30 DEFAULT 'a123456' LOWER CASE,
DEST LIKE RFCDES-RFCDEST DEFAULT 'SAPFTP',
COMPRESS TYPE C DEFAULT 'N'. "是否压缩
DATA: PATH TYPE STRING, "用于接收上传文件的路径和名称
FILENAME TYPE STRING.
DATA: HDL TYPE I,
KEY TYPE I VALUE 26101957,
SLEN TYPE I,
CMD(80) TYPE C.
DATA: BEGIN OF RESULT OCCURS 0,
LINE(100) TYPE C,
END OF RESULT.
DATA: ABAP_ENCODING TYPE ABAP_ENCODING VALUE 'UTF-8'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'GUI_FILE_LOAD_DIALOG'
EXPORTING
WINDOW_TITLE = '打开文件'
* DEFAULT_EXTENSION =
* DEFAULT_FILE_NAME =
WITH_ENCODING = ABAP_TRUE
* FILE_FILTER =
* INITIAL_DIRECTORY =
IMPORTING
PATH = PATH
FILENAME = FILENAME
FULLPATH = P_FILE
FILE_ENCODING = ABAP_ENCODING.
START-OF-SELECTION.
SLEN = STRLEN( P_PASSWD ).
* "获取加密密码 保存到P_PASSWD
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
SOURCE = P_PASSWD
SOURCELEN = SLEN
KEY = KEY
IMPORTING
DESTINATION = P_PASSWD.
* 连接ftp服务器
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
USER = P_USER
PASSWORD = P_PASSWD
HOST = P_HOST
RFC_DESTINATION = DEST
IMPORTING
HANDLE = HDL. "连接的句柄
"执行FTP命令 CD 打开目标ftp的文件夹
"now open the target ftp folder
CONCATENATE 'cd' P_FOLDER INTO CMD SEPARATED BY SPACE.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
HANDLE = HDL
COMMAND = CMD
COMPRESS = COMPRESS
TABLES
DATA = RESULT
EXCEPTIONS
COMMAND_ERROR = 1
TCPIP_ERROR = 2.
LOOP AT RESULT.
WRITE AT / RESULT-LINE.
ENDLOOP.
REFRESH RESULT.
* 打开本地需上传文件的路径
CONCATENATE 'lcd' PATH INTO CMD SEPARATED BY SPACE.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
HANDLE = HDL
COMMAND = CMD
COMPRESS = COMPRESS
TABLES
DATA = RESULT
EXCEPTIONS
COMMAND_ERROR = 1
TCPIP_ERROR = 2.
LOOP AT RESULT.
WRITE AT / RESULT-LINE.
ENDLOOP.
REFRESH RESULT.
* 将本地文件放到目标ftp文件夹中
CONCATENATE 'put ' FILENAME INTO CMD SEPARATED BY SPACE.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
HANDLE = HDL
COMMAND = CMD
COMPRESS = COMPRESS
TABLES
DATA = RESULT
EXCEPTIONS
COMMAND_ERROR = 1
TCPIP_ERROR = 2.
LOOP AT RESULT.
WRITE AT / RESULT-LINE.
ENDLOOP.
REFRESH RESULT.
* 断开FTP连接
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
HANDLE = HDL.
* 断开RFC链接
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
DESTINATION = DEST
EXCEPTIONS
OTHERS = 1.
3.运行效果



版权声明:本文为qq_30797051原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。