zoukankan      html  css  js  c++  java
  • sap ftp 处理

    【转】

    本文示例如何使用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
  • 相关阅读:
    Mybatis-plugin插件的使用
    SpringBoot整合mybatis-pagehelper实现分页
    springboot打war包
    keepalived1.4.0安装启动卸载
    六、nginx 搭建高可用集群
    五、nginx的动静分离
    四、nginx的负载均衡
    linux中mysql忘记root密码如何登陆
    十分钟到你了解OpenStack--nova组件
    docker 中 add 和 copy 的区别
  • 原文地址:https://www.cnblogs.com/rainysblog/p/3841974.html
Copyright © 2011-2022 走看看