[SAP ABAP开发技术总结]FTP到文件服务器,服务器上文件读写

20.3. FTP
以下是两个FTP服务配置表:


下面是函数参数列表:



FUNCTION zmm_data_to_ftp.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IM_FUNID) LIKE ZMWHIIBTFTP01-FUNID
*" REFERENCE(IM_FILENAME) LIKE RLGRAP-FILENAME
*" REFERENCE(IM_RFCDEST) LIKE RFCDES-RFCDEST DEFAULT 'SAPFTPA'
*" REFERENCE(IM_FLG_ADD) TYPE XFLAG OPTIONAL
*" TABLES
*" TEXT OPTIONAL
*" EXCEPTIONS
*" NO_FUNCTION_ID
*" NOT_CONNECTED
*" FTP_PATH_ERROR
*" NOT_FTP_DATA
*"----------------------------------------------------------------------
CONSTANTS: c_key TYPE i VALUE 26101957."密钥
"SAPFTPA:表示以SAP服务器为目的地,上传与下载都会放在SAP服务器上;SAPFTP:以Client端为目的地
CONSTANTS: c_rfcdest LIKE rfcdes-rfcdest VALUE 'SAPFTPA'.
DATA: flg_noftp TYPE c.
DATA:g_pwd TYPE xuncode .
DATA:g_error,
g_str(99),
g_slen TYPE i,
g_hdl TYPE i,
g_cmd(120).
DATA:i_result TYPE TABLE OF text WITH HEADER LINE.
DATA:l_file TYPE char128.
CLEAR flg_noftp.
* temp file name 用户名 日期 时间 传入的文件名
CONCATENATE sy-uname sy-datum sy-uzeit im_filename INTO l_file.
* 从自定义表中读取(IP,user,pssword)
CLEAR: zmwhiibtftp01,zmwhiibtftp02.
SELECT SINGLE
zmwhiibtftp02~ftpip
zmwhiibtftp02~usrnm
zmwhiibtftp02~passwd
zmwhiibtftp02~filepathf
zmwhiibtftp02~filepaths
INTO
(zmwhiibtftp02-ftpip,
zmwhiibtftp02-usrnm,
zmwhiibtftp02-passwd,
zmwhiibtftp02-filepathf,"FTP服务器目录
zmwhiibtftp02-filepaths"SAP服务器或Client端目录
)
FROM zmwhiibtftp01 INNER JOIN zmwhiibtftp02
ON zmwhiibtftp02~funid = zmwhiibtftp01~funid
WHERE zmwhiibtftp01~funid = im_funid."根据 funcid 联合查询
IF sy-subrc <> 0.
RAISE no_function_id.
ENDIF.
* 将密码转化为SAP的格式
g_slen = STRLEN( zmwhiibtftp02-passwd ).
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
SOURCE = zmwhiibtftp02-passwd
sourcelen = g_slen
key = c_key
IMPORTING
destination = g_pwd."加密密码
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
user = zmwhiibtftp02-usrnm
password = g_pwd
host = zmwhiibtftp02-ftpip
rfc_destination = c_rfcdest
IMPORTING
handle = g_hdl
EXCEPTIONS
not_connected = 1.
IF sy-subrc <> 0.
RAISE not_connected.
ENDIF.
* 进入指定的FTP服务器目录
CLEAR g_str.
CONCATENATE 'cd' zmwhiibtftp02-filepathf INTO g_str SEPARATED BY space.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = g_hdl
command = g_str
TABLES
data = i_result
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3.
IF sy-subrc <> 0 .
RAISE ftp_path_error.
ENDIF.
* 进入到指定的SAP服务器上的目录
IF zmwhiibtftp02-filepaths IS NOT INITIAL.
CLEAR g_str.
CONCATENATE 'lcd' zmwhiibtftp02-filepaths INTO g_str SEPARATED BY space.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = g_hdl
command = g_str
TABLES
data = i_result
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3.
IF sy-subrc <> 0 .
RAISE ftp_path_error.
ENDIF.
ENDIF.
* get ftp file to sap server as temp file if file exist and in append mode
* 如果FTP服务器上有存在 im_filename 文件,则取到SAP服务器上并以l_file为临时文件名
IF im_flg_add = 'X'.
CLEAR g_str.
CONCATENATE 'get' im_filename l_file INTO g_str SEPARATED BY space.
CONDENSE g_str.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = g_hdl
command = g_str
TABLES
data = i_result
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3.
ENDIF.
* internal table data to sap server by dataset
* 将内表中的数据 APPEND 到SAP服务器上的临时文件上
OPEN DATASET l_file FOR APPENDING IN LEGACY TEXT MODE CODE PAGE '8400' WITH WINDOWS LINEFEED
IGNORING CONVERSION ERRORS. "S20090224085328
IF sy-subrc = 0.
LOOP AT text.
TRANSFER text TO l_file.
ENDLOOP.
CLOSE DATASET l_file .
ENDIF.
**********
* 实际上可以使用 FTP_R3_TO_SERVER: 直接将SAP的内表数据传输到其他系统,而不用先在
* SAP服务器或Client上生成临时文件
**********
* put sap server file to ftp server by ftp command
* 将SAP服务器止的临时文件l_file通过FTP上传到FTP服务器上并以im_filename文件名存储
CLEAR g_str.
**{modi by zhengjun S20120217100617
* CONCATENATE 'put' l_file im_filename INTO g_str SEPARATED BY space.
concatenate 'put "' l_file '" "' im_filename '"' into g_str .
**}
CONDENSE g_str.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = g_hdl
command = g_str
TABLES
data = i_result
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3.
IF sy-subrc <> 0 .
flg_noftp = 'X'.
ENDIF.
* delete sap server temp file.
* 删除SAP服务器上生成的临时文件
DELETE DATASET l_file.
IF flg_noftp = 'X'.
RAISE not_ftp_data.
ENDIF.
* quit ftp
* 退出FTP 服务
CLEAR g_str.
g_str = 'quit'.
CONDENSE g_str.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = g_hdl
command = g_str
TABLES
data = i_result
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3.
* disconnect
* 关闭SAP与其他系统的连接
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
handle = g_hdl.
*关闭SAP与其他系统的RFC连接.
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
destination = c_rfcdest
EXCEPTIONS
OTHERS = 1.
ENDFUNCTION.
使用zmm_data_to_ftp:
types: line(1800) .
data: txt type standard table of line with header line.
data: l_funid like zmwhiibtftp01-funid .
data: l_filename like rlgrap-filename.
l_filename = p_file.
select single funid into l_funid from zmwhiibtftp01
where funsk = p_funsk.
call function 'ZMM_DATA_TO_FTP'
exporting
im_funid = l_funid
im_filename = l_filename
im_rfcdest = 'SAPFTPA'
tables
text = txt
exceptions
no_function_id = 1
not_connected = 2
ftp_path_error = 3
not_ftp_data = 4
others = 5.
20.4. 文件读写
.
WRITE: / wa-carrid,
wa-connid,
wa-countryfr,
wa-cityfrom,
wa-cityto,
wa-fltime,
wa-distance.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET file.
[SAP ABAP开发技术总结]FTP到文件服务器,服务器上文件读写的更多相关文章
- ABAP开发顾问必备:SAP ABAP开发技术总结
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]OPEN SQL
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]内表操作
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP开发顾问必备:SAP ABAP开发技术总结[转载]
转载自SAP师太技术博客,原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 在原文上增加了链接,此文及此文的链接版权都归SAP师太所有. ...
- [SAP ABAP开发技术总结]ABAP程序之间数据共享与传递
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]IDoc
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]字符串处理函数、正则表达式
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]ALV
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]面向对象OO
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
随机推荐
- scala模式匹配
package com.ming.test /** * 模式匹配 */ object MatchTest { def main(args: Array[String]): Unit = { //mat ...
- java中的单例设计模式
单例模式有一下特点: 1.单例类只能有一个实例. 2.单例类必须自己自己创建自己的唯一实例. 3.单例类必须给所有其他对象提供这一实例. 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供 ...
- [转]Windows配置Git
原文地址:http://blog.csdn.net/exlsunshine/article/details/18939329 1.从git官网下载windows版本的git:http://git-sc ...
- Mysql备份与还原实例
一.备份数据库 ----清空一下日志 mysql> reset master; Query OK, rows affected (0.02 sec) ----查看一下echo表的存储引擎 mys ...
- Android 仿美团网,大众点评购买框悬浮效果之修改版
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...
- easyui常现错误
1.easyui-tabs:当data-options的属性设置为true时,其tab内部的内容显示不出来. 2.设置easyui-panel的title格式及字体大小无效 解决方法:在设置title ...
- char*,wchar_t*,CString和BSTR之间的转换
前言 本文并不尝试列举出所有的转换方法,只列举作者认为方便易用的方法. 1.char*和wchar_t*的相互转换 可以利用中间类_bstr_t(头文件comdef.h)方便的进行相互转换 const ...
- c#中委托和事件(续)(转)
本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器.异常处理.超时处理和异步方法调用等内容. 为什么要使用事件而不是委托变量? 在 C#中的委托和事件 中,我提出了两个为 ...
- Linux高级变量
http://blog.chinaunix.net/uid-27040051-id-3450991.html 高级变量 基本形式 [1].变量扩展 格式 ${变量名称} [2].命令扩展 格式 $(命 ...
- 从hadoop框架与MapReduce模式中谈海量数据处理
http://blog.csdn.net/wind19/article/details/7716326 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显 ...