【转】

本文示例如何使用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. ionic准备之angular基础——$watch,$apply,$timeout方法(5)

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

  2. Android 四大组件学习之Server一

    上次学习了Android四大组件Activity之后,我们深刻理解了Activity.这次我们学习四大组件Service. Service与Activity的级别是一样的,都是Android系统不可缺 ...

  3. rk3288 LED上加入heartbeat功能

    平台:瑞芯的rk3288 作者:fulinux *****本文同意转载.只是请注明出处:http://blog.csdn.net/fulinus**** 1.硬件环境 随意选取一个GPIO引脚作为he ...

  4. HTML5+CSS3学习笔记(一) 概述

    HTML5+CSS3概述      HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已经可以预见,那就 ...

  5. PHP设置会话(Session)超时过期时间实现登录时间限制

    最近某个PHP项目用到了限制登录时间的功能,比如用户登录系统60分钟后如果没有操作就自动退出,我搜索了网络收集了有以下方法可供参考. 第一种方法即设置php.ini配置文件,设置session.gc_ ...

  6. 近期建了一个.net源代码共享群,群共享有大量网友分享的.net(C#)商业源代码

    本群创建于2013/6/21: 群里都是.net(C#)程序开发者,群共享有大量网友分享的.net(C#)商业源代码.比方:DTCMS旗舰版,hishop微分销,shopnum微分销.多用户微信公众平 ...

  7. iOS scrollView中嵌套多个tableView处理方案

    项目中经常会有这样的需求,scrollView有个头部,当scrollView滚动的时候头部也跟着滚动,同时头部还有一个tab会锁定在某个位置,scrollView中可以放很多不同的view,这些vi ...

  8. ifconfig 命令

    许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...

  9. 使用strace,lstrace,truss来跟踪程序的运行过程

    使用truss.strace或ltrace诊断软件问题 2008-07-05 16:25 使用truss.strace或ltrace诊断软件问题          进程无法启动,软件运行速度突然变慢, ...

  10. Android开发 adb命令提示:Permission denied (转)

    如题:模拟器版本->android 7.1.1 遇到这样的情况把模拟器root一下就好了:su root =============2017年4月3日20:57:33============== ...