函数使用十一: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_ ...
随机推荐
- (转载)http和socket之长连接和短连接区别
TCP/IPTCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.在传输层中有TCP协议与UDP协议.在应用层有: ...
- SpringBoot war包部署到Tomcat服务器
(1)pom.xml文件修改<packaging>war</packaging>,默认是jar包,<build>节点中增加<finalName>spri ...
- 原生js总结
数据类型 基本类型值包括: undefined,null,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,它们的值保存在栈空间,我们通过按值来访问的. 引用类型包括 ...
- Centos6.5 搭建LAMP环境
1.Centos6.5 处于对安全的考虑,严格控制网络的进去.所以安装 Apache 或 MySQL 的时候,需要开放 80 或 3306 端口 首先,执行如下命令查看当前防火墙开放了哪些端口: [ ...
- CSS深入
块元素:div.h1.p等等. 列表的样式: /*使用系统提供的一些样式:例如无序.有序都可以使用circle*/ ul{ list-style-type: circle; } ol{ list-st ...
- QT读文件夹内所有文件名
void monizhuzhan::filenameInDir() { //判断路径是否存在 QDir dir(path); if(!dir.exists()) return; //查看路径中后缀为. ...
- spring boot 配置双数据源mysql、sqlServer
背景:原来一直都是使用mysql数据库,在application.properties 中配置数据库信息 spring.datasource.url=jdbc:mysql://xxxx/test sp ...
- ajax 怎么重新加载页面
$.ajax({ type:"post", url:url, data:{xxx:xx}, dataType: "json", success : functi ...
- python 操作记事本
需事先打开记事本,再运行下面脚本 # encoding: utf- import win32api import win32gui import win32con print("Hello, ...
- 设计模式(五)Builder Pattern建造者模式
在我们日常生活中,如构建一个飞船,一个手机,一栋建筑,都会有非常复杂的组装,这时候应该用到建造者模式 以建造一个飞船为例 案例:造小页飞船 1.飞船各部分元件 package com.littlepa ...