设为首页 收藏本站
查看: 1409|回复: 0

[经验分享] SAP FTP

[复制链接]

尚未签到

发表于 2015-11-6 09:27:41 | 显示全部楼层 |阅读模式
  做FTP的需求还是快4年前的事情了。很基本的一些还是记下来,以后参考。
  项目中有以下接口场景:



通过后台作业,SAP ECC系统每天晚上从外部FTP服务器Get文本文件到SAP服务器目录/usr/sap/<SID>/SYS/global/data,然后处理这些文件中的数据,在SAP系统创建对应的业务单据。



本文只介绍一下SAP编程实现从远程FTP服务器读取文件的方法。



SAP中有大量的标准程序实现FTP的功能,主要是函数组SFTP,



最简单的处理流程如下:



首先,使用function FTP_CONNECT 创建与远程FTP服务器的ftp连接,



然后,使用function FTP_COMMAND 执行ftp命令,



最后,调用FTP_DISCONNECT断开与远程FTP服务器的连接。



一、在调用FTP_CONNECT 需要传入RFC Destination参数,FTP常用的有两个,SAPFTP和SAPFTPA,事务码SM59显示,并测试一下连接,确认连接正常。



需要注意的是:



1、SAPFTP用于SAP客户端前端执行,比如我们前台登录SAPGUI操作,要把ftp服务器上的文件get到本地电脑路径,或者上传本地文件等,需要使用这个。



2、SAPFTPA 用于SAP服务器端执行,如本次需求,要把FTP服务器的文件get到sap服务器路径。(for running in Application server)(This is used for file transfer in background. )



二、在调用FTP_COMMAND时,需要熟悉FTP基本的命令&#26684;式,如LS、LCD、GET、PUT等命令



三、SAP有实例程序RSFTP002,可以测试上述功能。



另外,函数FTP_R3_TO_SERVER和FTP_SERVER_TO_R3可以实现FTP文件和ABAP内表的转换,要注意中文乱码问题,本次没有用到,有空测试补充一下。
  


  SAPFTP starts ftp program on the frontend work station, SAPFTPA starts ftp program on application server.
  这一句说的明白了,SAPFTP是在客户端执行,客户端在安装的时候是会有个一相应的文件来支持FTP的执行的。
  相应的SAPFTPA是指在AS上面执行,当然,在AS上面也是要有一个相应的文件来支持FTP的执行。
  有时候会出现SAPFTPA不能执行的情况,那就是AS上缺少相应的配置了。
  


  以上是转载的,有关于SAPFTP和SAPFTPA的区别。
  


  继续转载一些系统的程序,可以看看。


  
  SAP FTP相关
  以下是SAP 标准FTP程序。
  在使用标准 functions前,确保已经安装SAPFTP.EXE。请先使用程序:RSFTP005 进行SAPFTP 检查。
  
  RSFTP001 - SAPFTP 版本检查
  RSFTP002 - 执行 FTP 命令
  RSFTP003 - 测试
  RSFTP004 - FTP 复制
  RSFTP005 - SAPFTP 检查
  RSFTP006 - FTP 命令清单
  RSFTP007 - TEST FB: FTP_SERVER_TO_R3 /FTP_R3_TO_SERVER 读取FTP数据到R3 / R3数据写入FTP。
  RSFTP008 - TEST FB: FTP_CLIENT_TO_R3 /FTP_R3_TO_CLIENT 读取FTP数据到客户端 / 客户端数据写入FTP。
  


  
  FTP程序大致流程为: FTP_CONNECT ,FTP_COMMAND ,FTP_DISCONNECT。
  FTP_COMMAND 中输入标准的FTP命令。如:更改 FTP 目录 &quot;cd dir&quot;,更改本地目录 &quot;lcd localdir&quot;,上传文件&quot;put file&quot;。
  


  对于LCD的命令有点糊涂,可惜没有server测试一下。
  
  lcd [directory]         指定要更改的本地计算机上的目录。如果没有指定Directory,将显示本地计算机中当前的工作目录。为什么有本地PC的概念?
  


  来看看具体,FTP的操作,
  

ftp> ftp 128.1.99.200 这个是连接地址
ftp> 这里提示输入用户名
ftp>密码
ftp>ascii 以什么样的文件&#26684;式传送 这个是2进制文件形式
ftp>cd doc  首先在ftp上cd到指定的doc文件夹,ftp>lcd c:/aaa  这里就是定义你要get的文件放在本地的哪个地方 这里是放在c盘 aaa文件下
ftp>get 001.txt  将doc文件夹下的001.txt文件放到本地的c:/aaa下。
ftp>put 001.txt  将本地c:/aaa下的001.txt文件放到FTP的doc文件夹下。
ftp>get 路径名 你要get的文件路径  
  ==============================================================
  下面关于ascii和bin,
  
  1、FTP在传送文件时分为ASC和Bin两种&#26684;式,只有文字文件(例如 html 文件)使用ASC,其他的通通使用Bin&#26684;式(例如图像文件、压缩文件、可执行文件等等)。
  

2、当我们使用ftp时,可简单地把文件分为两种基本类型:文本文件和二进制文件;文本文件也称为 ASCII文件,其文件内容遵循ASCII的定义,其主要特征是文件内容由若干行组成,可以使用操作系统的显示、编辑命令来显示和编辑ASCII文件的内容,它使用的传输模式是asc;二进制文件(Binary File)是指除ASCII文件以外的所有文件&#26684;式,它使用的传输模式是bin;需要注意的是,可以将ASCII文件按二进制模式传输,但决不能将二进制文件按ASCII模式传输,否则二进制文件的内容会遭到破坏而无法使用。
  

3、ASCII 切换传输模式为文字模式(只能用来传送文字文件);

BINARY 切换传输模式为二进制模式(除文字文件外皆用此模式);

  


  除此之外,ASCII还有一个用途是,会自动转换行结束符。
  
  在计算机系统中,不同的系统判断一行是否结束的标志是不一样的。

文件中的一行可以有三种结束的方式:

1.cr

2.nl    ---->Unix调用一个new line的动作

3.cr lf (or lf cr)

ftp上传的时候,有bin和ascii两种区别

  使用bin命令传输时,什么也不会改变,按照源文件传输,

而用ascii方式传输时会将行结束符从来源的机器所用的行结束符转换成接收机器所用的行结束符。

例如:ascii可能将一个 cr 转换成 一个 nl (这通常表示成一个 lf)。

而且ascii指示ftp注意文件的结束符,在pc中表现为: control-z (因此,文件结束符可以结束文件的内容,但不一定表示文件的物理结束)

所以,如果文件本身是二进制的,应该完全不变的传输,这时需要使用bin模式

而对文本文件而言,就需要转换。否则有可能得到这样的结果:

this line ends ^M

and another line ends ^M

and we should have ended^M but did not^M which does^M

not look great.^M^Z

这种情况发生在当来源机器使用lf cr作为行结束符而 lf 是接收机器的行结束符,并且使用bin模式传输文件时。当不确定使用什么模式时,使用bin模式。使用bin更快些,并且不会对文件产生什么伤害(因为 bin模式没有检查文件和转换行结束符)。有很多软件可以将文本(ascii)文件在不同的行结束符之间进行转换,可以用bin下载后再转换。

  


  =======================================
  Put 和Get命令
  put local-file  [remote-file]:将本地文件local-file传送至远程主机。
  get remote-file [local-file]:将远程主机的文件remote-file传至本地 硬盘的local-file。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-135714-1-1.html 上篇帖子: 网络通信:SOCKET, TCP/UDP, HTTP, FTP(温故知新!) 下篇帖子: ORACLE中的FTP例子代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表