函数使用十一:FTP
网上很多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的更多相关文章
- jQuery 核心函数 (十一)
函数 描述 jQuery() 接受一个字符串,其中包含了用于匹配元素集合的 CSS 选择器. jQuery.noConflict() 运行这个函数将变量 $ 的控制权让渡给第一个实现它的那个库.
- max,min,Zip函数(十一)
zip函数,拉链,传两个有序的参数,将他们一一对应为元祖形式 max,min比较默认比较一个元素,处理的是可迭代对象,相当于for循环取出每个元素进行比较,注意:不同类型之间不可比较 #!/usr/b ...
- 函数使用十一:BAPI_BANK_CREATE
FI01创建银行主数据: BAPI:BAPI_BANK_CREATE *&----------------------------------------------------------- ...
- PHP FTP 函数
PHP FTP 简介 FTP 函数通过文件传输协议 (FTP) 提供对文件服务器的客户端访问. FTP 函数用于打开.登录以及关闭连接,同时用于上传.下载.重命名.删除及获取文件服务器上的文件信息.不 ...
- PHP FTP函数
PHP FTP 函数 PHP FTP 简介 FTP 函数通过文件传输协议 (FTP) 提供对文件服务器的客户端访问. FTP 函数用于打开.登录以及关闭连接,同时用于上传.下载.重命名.删除及获取文件 ...
- 使用python操作FTP上传和下载
函数释义 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import F ...
- PHP常用函数大全
usleep() 函数延迟代码执行若干微秒.unpack() 函数从二进制字符串对数据进行解包.uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.time_sleep_until() ...
- PHP常用函数备用
刚学习php的时候,我也为记忆php函数苦恼不已.认为干嘛记忆这么枯燥无味的东西呢?用的时候查一下手册不就行了吗?但是当时因为身在辅导机构,还是记忆了一大堆自己并不感兴趣的函数. 由此就想起来,小的时 ...
- PHP常用函数大全。
php usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_ ...
随机推荐
- Kubernetes相关概念
This page explains how Kubernetes objects are represented in the Kubernetes API, and how you can exp ...
- 防止网站检测出Selenium的window.navigator.webdriver属性
只需在Chromeoptions对象中添加一个属性即可解决 import time from selenium.webdriver import Chrome, ChromeOptions optio ...
- 1st,Python基础——01
1 Python介绍 2 Python发展史 3 Python2 or 3? 4 Python安装 就不写了,各路大牛的博客都很详细. 5 Hello World程序 #!/usr/bin/env p ...
- JQGrid 在页面加载时展开SubGrid
1.jqgrid在加载完成之后展开SubGrid,用得如下办法: gridComplete: function () { var rowIds = $("#list2").getD ...
- 【Mac】Finder显示或隐藏文件
第一步:打开「终端」应用程序. 第二步:输入如下命令: defaults write com.apple.finder AppleShowAllFiles -boolean true ; killal ...
- sublime3 mac : Package Control There are no packages available for installation
如下问题: 查看控制台:点击 ctrl+`打开控制台 发现是因为http://packagecontrol.io/channel_v3.json 获取失败,手动下载channel_v3.json文件, ...
- ORA-00604的解决方法
分类: Oracle 从错误的角度可以推出:应该是表空间不足 根据查看表空间的使用情况: select b.file_name 物理文件名, b.tablespace_name 表空间, b.by ...
- LaTeX 交叉引用系统简介
目录 摘要 1. 简介 2. 指定标签或标记符 3. 标签的位置 4. 引用的生成和更新 5. 引用相关的警告信息 6. 扩展引用功能的宏包 6.1 varioref宏包 6.2 cleveref宏包 ...
- MVC路由 路由的三种扩展 替换MVC内置的Handler
Global.asax 是 程序入口文件 路由配置 为什么localhost:8088/Home/Index/1 能返问到我们写的 会去掉前缀跟端口号 变成Home/Index/1 用这个跟路由 ...
- vue init webpack nameXXX 报错问题:
vue新建demo项目报错如下: M:\lhhVueTest>vue init webpack L21_VueProject vue-cli · Failed to download repo ...