FTP

...忘了写FTP,今天看到个FTP操作才想起来。。。玛德制杖

RSFTP002 执行 FTP 命令
RSFTP003 FTP 放置/获取测试
RSFTP004 FTP 复制
RSFTP006 FTP 命令列表
RSFTP007 测试 FB:FTP_SERVER_TO_R3 / FTP_R3_TO_SERVER
RSFTP009 通过验证测试 FTP 放置

02执行command,03put/get

一般常用的就是上传文件到FTP和下载。

FUNCTION ZCRM_SEND_PDF_TO_FTP.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(OBJECT_ID) TYPE  CRMT_OBJECT_ID OPTIONAL
*"     VALUE(GUID) TYPE  CRMT_OBJECT_GUID OPTIONAL
*"----------------------------------------------------------------------
  DATA:LV_XSTRING TYPE XSTRING.
  DATA:LV_LEN TYPE I.
  DATA LV_HANDLE TYPE I.
  DATA LV_FNAME TYPE CHAR100.
  DATA:LV_SF TYPE TDSFNAME VALUE 'ZCRM_SERVICE_04'.
  DATA: LV_USER TYPE ZE_FTP_USER VALUE 'crm'.
  DATA LV_PASSWORD TYPE ZE_FTP_PW VALUE 'crm'.
  DATA:LV_HOST TYPE ZE_FTP_HOST VALUE '172.16.53.48'.
  DATA:GT_TAB TYPE TABLE OF BLOB,
       GW_TAB LIKE LINE OF GT_TAB.

  IF OBJECT_ID IS INITIAL.
    WAIT UP TO 5 SECONDS.
    SELECT SINGLE A~OBJECT_ID B~ZZCON_FAX INTO (OBJECT_ID,LV_FNAME)
       FROM CRMD_ORDERADM_H AS A
      LEFT JOIN CRMD_SERVICE_H AS B
      ON A~GUID = B~GUID
      WHERE A~GUID = GUID.
  ELSE.
    SELECT SINGLE A~OBJECT_ID B~ZZCON_FAX INTO (OBJECT_ID,LV_FNAME)
   FROM CRMD_ORDERADM_H AS A
  LEFT JOIN CRMD_SERVICE_H AS B
  ON A~GUID = B~GUID
  WHERE A~OBJECT_ID = OBJECT_ID.
  ENDIF.

  CALL FUNCTION 'ZSRV_PRINT_TO_PDF'
    EXPORTING
      IV_SAMRTFORM = LV_SF
      IV_GUID      = GUID
      IV_OBJECT_ID = OBJECT_ID
    IMPORTING
      FILE         = LV_XSTRING.

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      BUFFER        = LV_XSTRING
    IMPORTING
      OUTPUT_LENGTH = LV_LEN
    TABLES
      BINARY_TAB    = GT_TAB.

  CALL FUNCTION 'ZCRM_FTP_CONNECT'
    EXPORTING
      IV_FTP_USER   = LV_USER
      IV_HOST       = LV_HOST
    IMPORTING
      EV_HANDLE     = LV_HANDLE
    CHANGING
      IV_PASSWORD   = LV_PASSWORD
    EXCEPTIONS
      NOT_CONNECTED = 1
      OTHERS        = 2.
  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.


  CONCATENATE LV_FNAME 'XXXX.pdf' INTO LV_FNAME.

  CALL FUNCTION 'FTP_R3_TO_SERVER'
    EXPORTING
      HANDLE        = LV_HANDLE
      FNAME         = LV_FNAME
      BLOB_LENGTH   = LV_LEN
    TABLES
      BLOB          = GT_TAB[]
    EXCEPTIONS
      TCPIP_ERROR   = 1
      COMMAND_ERROR = 2
      DATA_ERROR    = 3
      OTHERS        = 4.
  IF SY-SUBRC <> 0.
  ENDIF.

  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      HANDLE = LV_HANDLE.



ENDFUNCTION.
ZSRV_PRINT_TO_PDF是获取SMARTFORMS打印的FDP流
FUNCTION zcrm_ftp_connect.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(IV_FTP_USER) TYPE  ZE_FTP_USER
*"     REFERENCE(IV_HOST) TYPE  ZE_FTP_HOST
*"  EXPORTING
*"     REFERENCE(EV_HANDLE) TYPE  I
*"  CHANGING
*"     REFERENCE(IV_PASSWORD) TYPE  ZE_FTP_PW
*"  EXCEPTIONS
*"      NOT_CONNECTED
*"----------------------------------------------------------------------
  CONSTANTS cons_key TYPE i VALUE 26101957.
  DATA:lv_slenth TYPE i.
* 连接FTP服务器
  lv_slenth = STRLEN( iv_password ).

  CALL FUNCTION 'HTTP_SCRAMBLE'
    EXPORTING
      SOURCE      = iv_password
      sourcelen   = lv_slenth
      key         = cons_key
    IMPORTING
      destination = iv_password.

* Open the ftp server.
  CALL FUNCTION 'FTP_CONNECT'
    EXPORTING
      user            = iv_ftp_user
      password        = iv_password
      host            = iv_host
      rfc_destination = 'SAPFTPA'
    IMPORTING
      handle          = ev_handle
    EXCEPTIONS
      not_connected   = 1
      OTHERS          = 2.
  IF sy-subrc NE 0.
    MESSAGE e007(zhntcrm01) RAISING not_connected.
  ENDIF.




ENDFUNCTION.
原文地址:https://www.cnblogs.com/sapSB/p/6722015.html