设为首页 收藏本站
查看: 1371|回复: 0

SAP FTP Function

[复制链接]

尚未签到

发表于 2015-5-27 06:22:40 | 显示全部楼层 |阅读模式
本文示例如何使用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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-70967-1-1.html 上篇帖子: Linux下的XAMPP基本配置技巧(设置虚拟主机、添加FTP账户等) 下篇帖子: ESFramework扩展之EsfFTP -- 基于ESFramework的FTP服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表