【转】

本文示例如何使用SAP FTP Function将文件从应用服务器传输到另外一个FTP服务器上。

DATA: BEGIN OF ig_ftp_result OCCURS 0,
        line(100),
      END OF ig_ftp_result.

DATA: l_path(128)       TYPE c.  "文件路径,必须以/结尾
DATA: l_filename(128)   TYPE c.  "文件名
DATA: l_ftpcommand(100) TYPE c.  "FTP命令
DATA: l_handle          TYPE i.                 "HAND
"源路径,必须以/结尾
DATA: cons_source(128) TYPE c . " VALUE '/usr/sap/SY-SYSID/SYS/src/'.
DATA:  cons_dens LIKE zftpt-zpath.                      "目标路径

CONSTANTS cons_key TYPE i  VALUE 26101957.

*// INITIALIZATION
INITIALIZATION.
*服务器上下载文件的路径
  CONCATENATE '/usr/sap/' sy-sysid '/SYS/src/' INTO cons_source.

*// START OF SELECTION
START-OF-SELECTION.
  PERFORM frm_ftp_file.

FORM frm_ftp_file .
  DATA:
    l_dstlen          TYPE i,                 "DESTINATION LEN
    l_pw(64)          TYPE c.                 "密码

* 连接FTP服务器
  l_pw = 'password'.

*-- FTP_CONNECT requires an encrypted password to work 
*   CREATE THE NEW PW BASE ON LOGIN FTP PASS WORD.
  CALL 'AB_RFC_X_SCRAMBLE_STRING'         "PASS WORD BUILD FUNCTION
    ID 'SOURCE'      FIELD l_pw           "PASS WORD
    ID 'KEY'         FIELD cons_key      "THE KEY TO CREATE NEW PW
    ID 'SCR'         FIELD 'X'
    ID 'DESTINATION' FIELD l_pw           "PASS WORD
    ID 'DSTLEN'      FIELD l_dstlen.      "NEW PASS WORD LEN

DO 3 TIMES.
*   OPEN THE FTP SERVER.
    CALL FUNCTION 'FTP_CONNECT'
      EXPORTING
        user            = 'username'   "USER
        password        = l_pw             "PASS WORD
        host            = '192.168.1.10'   
        rfc_destination = 'SAPFTPA'        "DEFAULT
      IMPORTING
        handle          = l_handle
      EXCEPTIONS
        not_connected   = 1
        OTHERS          = 2.

IF sy-subrc = 0.
      EXIT.
    ENDIF.

ENDDO.

IF sy-subrc <> 0.
    WRITE :/ sy-datum, sy-uzeit, sy-uname,  'CONNECT FTP FAILED!'.            "MESSAGEG
    STOP.
  ENDIF.

* Change local directory
  CLEAR l_ftpcommand.
  CONCATENATE 'lcd' cons_source INTO l_ftpcommand SEPARATED BY space.
  PERFORM frm_ftp_command USING l_ftpcommand pr_return.
  IF pr_return = '1'.
    WRITE:/ sy-datum, sy-uzeit, sy-uname,  'FTP改变本地路径错误!'.
    STOP.
  ENDIF.

* Change ftp directory
  IF cons_dens <> ''.
    CLEAR l_ftpcommand.
    CONCATENATE 'cd' cons_dens INTO l_ftpcommand SEPARATED BY space.
    PERFORM frm_ftp_command USING l_ftpcommand pr_return.
    IF pr_return = '1'.
      WRITE:/ sy-datum, sy-uzeit, sy-uname,  '改变FTP路径出现错误!'.
      STOP.
    ENDIF.
  ENDIF.

* Change TRANSFER MODE
  CLEAR l_ftpcommand.
*  l_ftpcommand = 'binary'.
  l_ftpcommand = 'ascii'.
  PERFORM frm_ftp_command USING l_ftpcommand pr_return.
  IF pr_return = '1'.
    WRITE:/ sy-datum, sy-uzeit, sy-uname,  '改变FTP传输模式出现错误!'.
    STOP.
  ENDIF.

* Put File into FTP SERVER
  CLEAR l_ftpcommand.
  CONCATENATE 'put'  l_filename INTO l_ftpcommand SEPARATED BY space.
  PERFORM frm_ftp_command USING l_ftpcommand pr_return.
  IF pr_return = '1'.
    WRITE:/ sy-datum, sy-uzeit, sy-uname,  '文件传输中出现错误!'.
    STOP.
  ENDIF.

*  断开FTP服务器
  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      handle = l_handle.

WRITE:/ sy-datum, sy-uzeit, sy-uname,  '文件传输成功!'.

ENDFORM.                    " FRM_FTP_FILE

************************************************************************
*& FORM FRM_FTP_COMMAND                                                *
************************************************************************
*& FTP Command                                                         *
************************************************************************
FORM frm_ftp_command USING pr_command pr_ret.
  CALL FUNCTION 'FTP_COMMAND'
    EXPORTING
      handle                = l_handle
      command               = pr_command
*     COMPRESS              =
*     RFC_DESTINATION       =
*     VERIFY                =
*   IMPORTING
*     FILESIZE              =
*     FILEDATE              =
*     FILETIME              =
    TABLES
      data                  = ig_ftp_result
   EXCEPTIONS
     tcpip_error           = 1
     command_error         = 2
     data_error            = 3
     OTHERS                = 4
            .

* Disconnect
  IF sy-subrc <> 0.
    pr_ret = '1'.
    CALL FUNCTION 'FTP_DISCONNECT'
      EXPORTING
        handle = l_handle.
    EXIT.
  ENDIF.

ENDFORM.                    "FRM_FTP_COMMAND

sap ftp 处理的更多相关文章

  1. SAP FTP FOR ABAP programing

    近来忙的不可开交,忙的一塌糊涂,呵呵,今天怀揣愧疚之心,上来分享博文一篇,算是对自己的一点安慰.   首先在SAP系统中提供了很多的FTP示例程序,如下: RSFTP001         SAPFT ...

  2. [SAP ABAP开发技术总结]FTP到文件服务器,服务器上文件读写

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. 【ABAP系列】SAP ABAP 实现FTP的文件上传与下载

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 实现FTP的文 ...

  4. 【ABAP系列】SAP ABAP 从FTP服务器读取文件到本地

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 从FTP服务器 ...

  5. SAP ABAP: 把内表数据以excel或csv格式,通过前台或者后台的方式上传至FTP服务器

    今天接到一个FTP的需求,就是每天晚上把当天某个报表的数据自动保存excel上传到FTP服务器. SAP已经有现成的FTP函数使用,可以通过函数的方式来实现,实现前先准备一些数据: User:登录FT ...

  6. SAP中使用FTP服务

    SAP中简单的FTP技术实现基本上如下几个步骤: 1.SM59建立FTP的RFC destination. 可以通过执行SAP的标准程序RSFTP005,自动创建两个名为SAPFTP何SAPFTPA的 ...

  7. ABAP开发顾问必备:SAP ABAP开发技术总结

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. Sap 常用Function 说明

    函数名 描述 SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织VI ...

  9. SAP常用命令及BASIS操作

    Pfcg         角色,权限参数文件配置Su53        查看权限对象  st01  跟踪St22         看dump,以分析错误  eg.找到ABAP程序出错的地方,找出fou ...

随机推荐

  1. Laravel创建项目和安装PHPStorm IDE插件

    一.win10下安装composer1.下载composer.phar,放入php的安装目录https://getcomposer.org/download/1.4.2/composer.phar 2 ...

  2. python——内置对象

    python的内置对象 对象类型 常量示例/用法 Number(数字) 3.14159, 1234, 999L 3+4j String(字符串) 'spam', "guido's" ...

  3. selenium从入门到应用 - 2,简单线性脚本的编写

    本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下 ...

  4. 浅析Java语言中两种异常的差别

    Java提供了两类主要的异常:runtime exception和checked exception.所有的checked exception是从java.lang.Exception类衍生出来的,而 ...

  5. Selenium3.14.1+Python安装和第一个Demo

    言简意赅的说下Selenium是什么 Selenium是前台测试框架,支持IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome等浏览器,我只 ...

  6. C#利用SharpZipLib解压或压缩文件(支持多层目录递归压缩)

    需要下载ICSharpCode.SharpZipLib.dll using System; using System.Collections.Generic; using System.Linq; u ...

  7. docker 查看容器挂载的目录

    $ docker inspect container_name | grep Mounts -A 20

  8. hbase和mapreduce开发 WordCount

    代码: /** * hello world by world 测试数据 * @author a * */ public class DefinedMapper extends Mapper<Lo ...

  9. html 绘图阴影和透明度

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. linux flush memcache缓存

    telnet localhost 11211 flush_all  memcached Telnet Interface Command Description Example get Reads a ...