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.

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18607.html

(0)
上一篇 2021年7月19日 21:15
下一篇 2021年7月19日 21:19

相关推荐

发表回复

登录后才能评论