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

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

SM30->SAPFTP_SERVERS_V,默认端口21。

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

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

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

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

常用的命令就是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 .
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 =
OTHERS = .
IF sy-subrc NE .
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 =
OTHERS = .
IF sy-subrc <> .
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 =
command_error =
data_error =
OTHERS = .
IF sy-subrc <> .
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上传记录的需求,可以新建一个表:文件名,文件类型,日期,时间,用户名。。。这个表在展示和下载删除的时候能够精确的执行下载和删除文件。

函数使用十一:FTP的更多相关文章

  1. jQuery 核心函数 (十一)

    函数 描述 jQuery() 接受一个字符串,其中包含了用于匹配元素集合的 CSS 选择器. jQuery.noConflict() 运行这个函数将变量 $ 的控制权让渡给第一个实现它的那个库.

  2. max,min,Zip函数(十一)

    zip函数,拉链,传两个有序的参数,将他们一一对应为元祖形式 max,min比较默认比较一个元素,处理的是可迭代对象,相当于for循环取出每个元素进行比较,注意:不同类型之间不可比较 #!/usr/b ...

  3. 函数使用十一:BAPI_BANK_CREATE

    FI01创建银行主数据: BAPI:BAPI_BANK_CREATE *&----------------------------------------------------------- ...

  4. PHP FTP 函数

    PHP FTP 简介 FTP 函数通过文件传输协议 (FTP) 提供对文件服务器的客户端访问. FTP 函数用于打开.登录以及关闭连接,同时用于上传.下载.重命名.删除及获取文件服务器上的文件信息.不 ...

  5. PHP FTP函数

    PHP FTP 函数 PHP FTP 简介 FTP 函数通过文件传输协议 (FTP) 提供对文件服务器的客户端访问. FTP 函数用于打开.登录以及关闭连接,同时用于上传.下载.重命名.删除及获取文件 ...

  6. 使用python操作FTP上传和下载

    函数释义 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import F ...

  7. PHP常用函数大全

    usleep() 函数延迟代码执行若干微秒.unpack() 函数从二进制字符串对数据进行解包.uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.time_sleep_until() ...

  8. PHP常用函数备用

    刚学习php的时候,我也为记忆php函数苦恼不已.认为干嘛记忆这么枯燥无味的东西呢?用的时候查一下手册不就行了吗?但是当时因为身在辅导机构,还是记忆了一大堆自己并不感兴趣的函数. 由此就想起来,小的时 ...

  9. PHP常用函数大全。

    php usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_ ...

随机推荐

  1. Kubernetes相关概念

    This page explains how Kubernetes objects are represented in the Kubernetes API, and how you can exp ...

  2. 防止网站检测出Selenium的window.navigator.webdriver属性

    只需在Chromeoptions对象中添加一个属性即可解决 import time from selenium.webdriver import Chrome, ChromeOptions optio ...

  3. 1st,Python基础——01

    1 Python介绍 2 Python发展史 3 Python2 or 3? 4 Python安装 就不写了,各路大牛的博客都很详细. 5 Hello World程序 #!/usr/bin/env p ...

  4. JQGrid 在页面加载时展开SubGrid

    1.jqgrid在加载完成之后展开SubGrid,用得如下办法: gridComplete: function () { var rowIds = $("#list2").getD ...

  5. 【Mac】Finder显示或隐藏文件

    第一步:打开「终端」应用程序. 第二步:输入如下命令: defaults write com.apple.finder AppleShowAllFiles -boolean true ; killal ...

  6. sublime3 mac : Package Control There are no packages available for installation

    如下问题: 查看控制台:点击 ctrl+`打开控制台 发现是因为http://packagecontrol.io/channel_v3.json 获取失败,手动下载channel_v3.json文件, ...

  7. ORA-00604的解决方法

    分类: Oracle 从错误的角度可以推出:应该是表空间不足   根据查看表空间的使用情况: select b.file_name 物理文件名, b.tablespace_name 表空间, b.by ...

  8. LaTeX 交叉引用系统简介

    目录 摘要 1. 简介 2. 指定标签或标记符 3. 标签的位置 4. 引用的生成和更新 5. 引用相关的警告信息 6. 扩展引用功能的宏包 6.1 varioref宏包 6.2 cleveref宏包 ...

  9. MVC路由 路由的三种扩展 替换MVC内置的Handler

    Global.asax 是 程序入口文件 路由配置   为什么localhost:8088/Home/Index/1 能返问到我们写的 会去掉前缀跟端口号  变成Home/Index/1 用这个跟路由 ...

  10. vue init webpack nameXXX 报错问题:

    vue新建demo项目报错如下: M:\lhhVueTest>vue init webpack L21_VueProject vue-cli · Failed to download repo ...