基于ABAP的FTP操作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.

相关文档
最新文档