函数使用十一:FTP详解编程语言

网上很多FTP说明的文档,也很详细,写这玩意是备份一下:

注:有的系统需要配置FTP地址和端口,有的好像没有。。。

       SM30->SAPFTP_SERVERS_V,默认端口21。

在做之前可以做个小测试:程序:RSFTP002

函数使用十一:FTP详解编程语言

输入用户名,密码,地址,命令,RFC选择SAPFTPA

这个程序很简单的,可以点进去看看,就是开,运行,关。。。

对于那些目录较深的FTP,可以COPY出来,多加几个COMMAND

函数使用十一:FTP详解编程语言

 常用的命令就是cd xxx目录切换

                          nlist  显示列表

                          delete xxxxx删除文件

创建/删除文件夹的权限一般不做。

因为是N手了,所以函数有点乱:

1.FTP 连接:

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.

2.文件上传:

FUNCTION zcrm_zsv3_to_ftp. 
*"---------------------------------------------------------------------- 
*"*"Local Interface: 
*"  IMPORTING 
*"     VALUE(PROCESS_TYPE) TYPE  CRMT_PROCESS_TYPE 
*"     VALUE(XSTRING) TYPE  XSTRING 
*"     VALUE(FILETYPE) TYPE  STRING 
*"     VALUE(DATE) TYPE  DATUM 
*"  EXPORTING 
*"     VALUE(MESSAGE) TYPE  STRING 
*"---------------------------------------------------------------------- 
DATA:lv_xstring TYPE xstring. 
DATA:lv_len TYPE i. 
DATA lv_handle TYPE i. 
DATA lv_fname TYPE char100. 
DATA: lv_user TYPE ze_ftp_user VALUE 'CRM'. 
DATA lv_password TYPE ze_ftp_pw VALUE 'xxxxxxxxxxx'. 
DATA:lv_host TYPE ze_ftp_host VALUE 'xx.xx.x.xx'. 
DATA:gt_tab TYPE TABLE OF blob, 
gw_tab LIKE LINE OF gt_tab. 
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' 
EXPORTING 
buffer        = 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. 
message = 'Connect error'. 
EXIT. 
ENDIF. 
CONCATENATE '/CRM/Dealer Refund/Get Refund Order/' 
'C506810' 
date '.' filetype 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. 
message = 'File Upload Fail'. 
ENDIF. 
CALL FUNCTION 'FTP_DISCONNECT' 
EXPORTING 
handle = lv_handle. 
ENDFUNCTION.

其中目录+文件名+FTP_R3_TO_SERVER  上传文件到FTP目录

其中目录+文件名+FTP_SERVER_TO_R3  下载FTP目录文件

对于那种使用命令的,需要可以直接参考标准程序002代码

对于一些需要看到FTP上传记录的需求,可以新建一个表:文件名,文件类型,日期,时间,用户名。。。这个表在展示和下载删除的时候能够精确的执行下载和删除文件。

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

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

相关推荐

发表回复

登录后才能评论