基于ABAP的FTP操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FTP操作技术
作者:***
日期:2015-02-10
版本:1.0
1、创建TCP/IP连接:使用程序RSFTP005创建SM59的FTP连接
二、注册需要连接的IP:表SAPFTP_SERVERS存储可用于连接的IP
三、程序RSFTP002是FTP的命令测试程序,可参考之
四、实例:封装函数实现将FTP文件下载到本地,解压缩,并打开文件
代码如下
FUNCTION ZOA_SD_FTP_OPEN.
*"----------------------------------------------------------------------*"*"本地接口:
*" IMPORTING
*" REFERENCE(FILENAME) TYPE STRING
*" REFERENCE(FILETYPE) TYPE STRING
*" REFERENCE(OUTFNAME) TYPE STRING
*" EXCEPTIONS
*" NO_SUCH_FILE
*"----------------------------------------------------------------------*---------从FTP下载附件-----------------------------*
DATA: WA_OA_FTP LIKE ZFTP_OA.
DATA: G_CMD_FTP_OPEN_PATH(100) TYPE C,
G_CMD_FTP_OPEN_LOACL_PATH(100) TYPE C,
G_CMD_FTP_DOWN_FILE(100) TYPE C.
DATA: G_LINK_HANDLE TYPE I,
G_KEY TYPE I VALUE 26101957,
G_SLEN TYPE I,
G_COMPRESS TYPE C VALUE 'N'.
DATA: BEGIN OF RESULT OCCURS 0,
LINE(100) TYPE C,
END OF RESULT.
DATA: IT_FILETAB TYPE FILETABLE,
WA_FILETAB LIKE LINE OF IT_FILETAB,
L_RC TYPE I.
DATA: G_LOCAL_PATH TYPE STRING,
G_LOCAL_FILENAME TYPE STRING,
G_LOCAL_FULL_PATH TYPE STRING,
G_LOCAL_FULL_PATH_ZIP TYPE STRING.
DATA: G_FTP_PATH TYPE STRING,
G_FTP_FILENAME TYPE STRING,
G_FTP_FILETYPE TYPE STRING.
DATA: L_TCHAR1 TYPE STRING,
L_TCHAR2 TYPE STRING,
L_INDEX TYPE I.
"获取FTP相关参数
SELECT SINGLE *
INTO WA_OA_FTP
FROM ZFTP_OA
WHERE ZJHBZ = 'X'.
L_INDEX = STRLEN( WA_OA_FTP-ZDIRT ).
IF STRLEN( WA_OA_FTP-ZDIRT ) >= STRLEN( FILENAME ).
RAISE NO_SUCH_FILE.
ENDIF.
"拆分FTP的文件路径与文件名
L_TCHAR2 = FILENAME+L_INDEX.
DO 20 TIMES.
SPLIT L_TCHAR2 AT '/' INTO L_TCHAR1 L_TCHAR2.
IF L_TCHAR2 IS NOT INITIAL.
CONCATENATE G_FTP_PATH '/' L_TCHAR1 INTO G_FTP_PATH.
ELSE.
G_FTP_FILENAME = L_TCHAR1.
EXIT.
ENDIF.
ENDDO.
"获取FTP文件类型
CLEAR L_INDEX.
L_TCHAR2 = G_FTP_FILENAME.
DO 10 TIMES.
L_INDEX = L_INDEX + 1.
SPLIT L_TCHAR2 AT '.' INTO L_TCHAR1 L_TCHAR2.
IF L_TCHAR2 IS INITIAL
OR L_TCHAR2 = WA_OA_FTP-ZDLHZ+1.
IF L_INDEX <> 1.
CONCATENATE '.' L_TCHAR1 INTO G_FTP_FILETYPE.
ENDIF.
EXIT.
ENDIF.
ENDDO.
"无后缀名,赋值FILETYPE
IF G_FTP_FILETYPE IS INITIAL.
G_FTP_FILETYPE = FILETYPE.
ENDIF.
TRANSLATE G_FTP_FILETYPE TO UPPER CASE.
"前台选择保存的本地路径和文件
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING
WINDOW_TITLE = '保存文件目录'
INITIAL_DIRECTORY = 'D:/'
DEFAULT_FILE_NAME = OUTFNAME
CHANGING
FILENAME = G_LOCAL_FILENAME
PATH = G_LOCAL_PATH
FULLPATH = G_LOCAL_FULL_PATH.