FTP
FTP(File transfer protocol)是一种标准的网络协议,用于在互联网上传递文件。SAP标准函数组是SFTP
SAP提供的FTP demo程序
RSFTP001 SAPFTP 版本
RSFTP002 执行 FTP 命令
RSFTP003 FTP 放置/获取测试
RSFTP004 FTP 复制
RSFTP005 SAPFTP 检查
RSFTP006 FTP 命令列表
RSFTP007 测试函数模块:FTP_SERVER_TO_R3/FTP_R3_TO_SE
RSFTP008 测试函数模块:FTP_CLIENT_TO_R3/FTP_R3_TO_CL
RSFTP009 通过验证测试 FTP 放置
RSFTP011 FTP 复制
RSFTP012 拆分 SAPFTP_SERVERS 中的主机名和端口号
相关函数
‘HTTP_SCRAMBLE’ "获取加密密码
‘FTP_CONNECT’ "连接ftp服务器
‘FTP_COMMAND’ "执行FTP命令
‘FTP_SERVER_TO_R3’ "拷贝ftp服务器文件到r3
‘FTP_COPY’ "拷贝文件到指定位置
‘FTP_DISCONNECT’ "断开FTP连接
‘RFC_CONNECTION_CLOSE’ "断开RFC链接
连接设置SM59创建,选择TCP/IP连接,也可以通过执行SAP的标准程序RSFTP005,自动创建两个名为SAPFTP何SAPFTPA的TCP/IP的RFC连接。
****FTP服务器上传文件
REPORT zftp3.
DATA: hdl TYPE i,
key TYPE i VALUE 26101957,
slen TYPE i,
cmd(100) TYPE c.
DATA: BEGIN OF result OCCURS 0,
line(100) TYPE c,
END OF result.
DATA lv_message TYPE char200.
PARAMETERS: p_host TYPE char64 DEFAULT 'ftpserver',
p_uname TYPE char30 DEFAULT 'usname' LOWER CASE,
p_pwd(60) TYPE c DEFAULT 'password' LOWER CASE, "密码长度一定要够否则出错
p_file TYPE char255 DEFAULT 'test.txt',
p_folder TYPE char255 DEFAULT '/testjobs/' LOWER CASE. "文件路径,必须以/结尾
PARAMETERS: rfcdest LIKE rfcdes-rfcdest DEFAULT 'SAPFTP',
compress TYPE c DEFAULT 'N'.
SET EXTENDED CHECK OFF.
*统计长度
slen = strlen( p_pwd ).
*权限检查
AUTHORITY-CHECK OBJECT 'S_ADMI_FCD'
ID 'S_ADMI_FCD'
FIELD 'SFTP'.
IF sy-subrc <> 0.
MESSAGE 'no ftp authorization' TYPE 'I'.
EXIT.
ENDIF.
*获取密码
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
source = p_pwd
sourcelen = slen
key = key
IMPORTING
destination = p_pwd.
*该函数可以定义有网关时账户密码,一般公司内部访问时无此设置
DO 6 TIMES. "多连接几次 一次可能不成功
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
user = p_uname
password = p_pwd
host = p_host
rfc_destination = rfcdest
IMPORTING
handle = hdl.
ENDDO.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
INTO lv_message
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 .
CONCATENATE 'CONNECT FTP FAILED!;' lv_message INTO lv_message.
MESSAGE lv_message TYPE 'E'.
ENDIF.
*执行FTP命令 打开目标ftp的文件夹
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.
IF sy-subrc <> 0." 调用中出错立即断开连接
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
handle = hdl.
EXIT.
ENDIF.
LOOP AT result.
WRITE AT / result-line.
ENDLOOP.
REFRESH result.
* 打开本地ftp文件夹
CONCATENATE 'lcd' 'C:\TEMP\' 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.
IF sy-subrc <> 0." 调用中出错立即断开连接
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
handle = hdl.
EXIT.
ENDIF.
LOOP AT result.
WRITE AT / result-line.
ENDLOOP.
REFRESH result.
* 将本地文件放到目标ftp文件夹中
CONCATENATE 'put ' p_file 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.
IF sy-subrc <> 0." 调用中出错立即断开连接
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
handle = hdl.
EXIT.
ENDIF.
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 = rfcdest
EXCEPTIONS
OTHERS = 1.
CONCATENATE sy-datum sy-uzeit sy-uname '文件传输成功!' INTO lv_message.
MESSAGE lv_message TYPE 'S'.
post SAP-Garson
原文链接:https://blog.csdn.net/ABAP_NY/article/details/113693226文章来自于网络,如果侵犯了您的权益,请联系站长删除!