基于ABAP的FTP操作_第1页
基于ABAP的FTP操作_第2页
基于ABAP的FTP操作_第3页
基于ABAP的FTP操作_第4页
基于ABAP的FTP操作_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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*"     REFEREN

2、CE(FILENAME) TYPE  STRING*"     REFERENCE(FILETYPE) TYPE  STRING*"     REFERENCE(OUTFNAME) TYPE  STRING*"  EXCEPTIONS*"      NO_SUCH_FILE*"-

3、*-从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

4、) TYPE C.  DATA: G_LINK_HANDLE TYPE I,        G_KEY TYPE I VALUE 26101957,        G_SLEN TYPE I,        G_COMPRESS&

5、#160;TYPE C VALUE 'N'.  DATA: BEGIN OF RESULT OCCURS 0,        LINE(100) TYPE C,        END OF RESULT.  DATA: IT_FILETAB T

6、YPE FILETABLE,        WA_FILETAB LIKE LINE OF IT_FILETAB,        L_RC TYPE I.  DATA: G_LOCAL_PATH TYPE STRING,        G_

7、LOCAL_FILENAME TYPE STRING,        G_LOCAL_FULL_PATH TYPE STRING,        G_LOCAL_FULL_PATH_ZIP TYPE STRING.  DATA: G_FTP_PATH TYPE STRING,    

8、60;   G_FTP_FILENAME TYPE STRING,        G_FTP_FILETYPE TYPE STRING.  DATA: L_TCHAR1 TYPE STRING,        L_TCHAR2 TYPE STRING,    

9、    L_INDEX TYPE I.  "获取FTP相关参数  SELECT SINGLE *    INTO WA_OA_FTP    FROM ZFTP_OA   WHERE ZJHBZ = 'X'.  L_INDEX = STRLEN( 

10、;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 

11、;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

12、_PATH.    ELSE.      G_FTP_FILENAME = L_TCHAR1.      EXIT.    ENDIF.  ENDDO.  "获取FTP文件类型  CLEAR L_INDEX.  L_TCHAR2 = G_FTP_FILENAM

13、E.  DO 10 TIMES.    L_INDEX = L_INDEX + 1.    SPLIT L_TCHAR2 AT '.' INTO L_TCHAR1 L_TCHAR2.    IF L_TCHAR2 IS INITIAL     

14、 OR L_TCHAR2 = WA_OA_FTP-ZDLHZ+1.      IF L_INDEX <> 1.        CONCATENATE '.' L_TCHAR1 INTO G_FTP_FILETYPE.      ENDIF.  

15、;    EXIT.    ENDIF.  ENDDO.  "无后缀名,赋值FILETYPE  IF G_FTP_FILETYPE IS INITIAL.    G_FTP_FILETYPE = FILETYPE.  ENDIF.  TRANSLATE G_FTP_FILETYPE TO 

16、UPPER CASE.  "前台选择保存的本地路径和文件  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG    EXPORTING      WINDOW_TITLE      = '保存文件目录'     

17、60;INITIAL_DIRECTORY = 'D:/'      DEFAULT_FILE_NAME = OUTFNAME    CHANGING      FILENAME          = G_LOCAL_FILENAME   

18、60;  PATH              = G_LOCAL_PATH      FULLPATH          = G_LOCAL_FULL_PATH.  IF G_LOCAL_PATH IS INI

19、TIAL.    EXIT.  ENDIF.  "本地文件全称  CONCATENATE G_LOCAL_FILENAME G_FTP_FILETYPE INTO G_LOCAL_FILENAME.  CONCATENATE G_LOCAL_FULL_PATH G_FTP_FILETYPE INTO G_LOCAL_FULL_PATH.  G_LOCAL_FULL_P

20、ATH_ZIP = G_LOCAL_FULL_PATH.  SET EXTENDED CHECK OFF.  G_SLEN = STRLEN( WA_OA_FTP-ZUPWD ).  "处理密码  CALL FUNCTION 'HTTP_SCRAMBLE'    EXPORTING     &

21、#160;SOURCE      = WA_OA_FTP-ZUPWD      SOURCELEN   = G_SLEN      KEY         = G_KEY    IMPORTING   

22、;   DESTINATION = WA_OA_FTP-ZUPWD.  "连接FTP  CALL FUNCTION 'FTP_CONNECT'    EXPORTING      USER            = WA_OA_FTP

23、-UNAME      PASSWORD        = WA_OA_FTP-ZUPWD      HOST            = WA_OA_FTP-ZHOST      RFC_DESTIN

24、ATION = WA_OA_FTP-RFCDEST    IMPORTING      HANDLE          = G_LINK_HANDLE.  "打开FTP目录  CONCATENATE 'cd' G_FTP_PATH INTO G_CMD_FTP_O

25、PEN_PATH SEPARATED BY SPACE.  IF G_CMD_FTP_OPEN_PATH IS NOT INITIAL.    CALL FUNCTION 'FTP_COMMAND'      EXPORTING        HANDLE   &

26、#160;    = G_LINK_HANDLE        COMMAND       = G_CMD_FTP_OPEN_PATH        COMPRESS      = G_COMPRESS   &

27、#160;  TABLES        DATA          = RESULT      EXCEPTIONS        COMMAND_ERROR = 1     &

28、#160;  TCPIP_ERROR   = 2.  ENDIF.  "打开本地目录  CONCATENATE 'lcd' G_LOCAL_PATH INTO G_CMD_FTP_OPEN_LOACL_PATH SEPARATED BY SPACE.  IF G_CMD_FTP_OPEN_LOACL_PATH IS NOT 

29、;INITIAL.    CALL FUNCTION 'FTP_COMMAND'      EXPORTING        HANDLE        = G_LINK_HANDLE        COMMAND

30、       = G_CMD_FTP_OPEN_LOACL_PATH        COMPRESS      = G_COMPRESS      TABLES        DATA    

31、;      = RESULT      EXCEPTIONS        COMMAND_ERROR = 1        TCPIP_ERROR   = 2.  ENDIF.  "保存FTP文件

32、到本地  CONCATENATE 'get' G_FTP_FILENAME G_LOCAL_FILENAME INTO G_CMD_FTP_DOWN_FILE SEPARATED BY SPACE.  IF G_CMD_FTP_DOWN_FILE IS NOT INITIAL.    CALL FUNCTION 'FTP_COMMAND'

33、0;     EXPORTING        HANDLE        = G_LINK_HANDLE        COMMAND       = G_CMD_FTP_DOWN_FILE  &#

34、160;     COMPRESS      = G_COMPRESS      TABLES        DATA          = RESULT      EX

35、CEPTIONS        COMMAND_ERROR = 1        TCPIP_ERROR   = 2.  ENDIF.  "关闭FTP连接  CALL FUNCTION 'FTP_DISCONNECT'    EXPO

36、RTING      HANDLE = G_LINK_HANDLE.  "关闭连接方式  CALL FUNCTION 'RFC_CONNECTION_CLOSE'    EXPORTING      DESTINATION = WA_OA_FTP-RFCDEST    EX

37、CEPTIONS      OTHERS      = 1.*-解压附件-*  TYPES: BEGIN OF T_FILE,           NAME TYPE STRING,         

38、  DATE TYPE D,           TIME TYPE T,           SIZE TYPE I,         END OF T_FILE . 

39、 TYPES: T_FILES TYPE TABLE OF T_FILE .  DATA: CL_ZIP TYPE REF TO CL_ABAP_ZIP,        XSTR   TYPE XSTRING,        BINARY_TAB T

40、YPE STANDARD TABLE OF X255 ,        BIN_LEN TYPE I ,        LS_FILE TYPE T_FILE ,        IT_FILES TYPE T_FILES 

41、;.  DATA: ITAB TYPE STANDARD TABLE OF SDOKCNTASC.  IF WA_OA_FTP-ZJYBZ IS NOT INITIAL    AND ( G_FTP_FILETYPE = '.ZIP'        OR G_FTP_FIL

42、ETYPE = '.RAR' ).    "加载压缩包    CALL FUNCTION 'GUI_UPLOAD'      EXPORTING        FILENAME   = G_LOCAL_FULL_PATH  &#

43、160;     FILETYPE   = 'BIN'      IMPORTING        FILELENGTH = BIN_LEN      TABLES        DATA_TA

44、B   = BINARY_TAB.    "转换为字符流    CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'      EXPORTING        INPUT_LENGTH = BIN_LEN   

45、0;  IMPORTING        BUFFER       = XSTR      TABLES        BINARY_TAB   = BINARY_TAB      

46、;EXCEPTIONS        FAILED       = 1        OTHERS       = 2.    "创建ZIP对象    CREATE OBJECT&

47、#160;CL_ZIP.    "加载到ZIP对象    CALL METHOD CL_ZIP->LOAD      EXPORTING        ZIP = XSTR.    "遍历压缩包    LOOP AT

48、0;CL_ZIP->FILES INTO LS_FILE .      "获取压缩包文件      CALL METHOD CL_ZIP->GET        EXPORTING          NAME 

49、0;  = LS_FILE-NAME        IMPORTING          CONTENT = XSTR.      "将字符转换为二进制数据      CALL FUNCTION 'SCMS_XS

50、TRING_TO_BINARY'        EXPORTING          BUFFER        = XSTR        IMPORTING          OUTPUT_LENGTH = BIN_LEN        TABLES    

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论