ABAP链接FTP把txt文件数据获取到内表
2024-10-20 04:02:25
啥都不说,直接上代码
******* 如果无法链接FTP,可能需要往表SAPFTP_SERVERS加入IP地址和端口(21)即可 DATA:p_host TYPE char64 VALUE 'IP', "IP
p_uname TYPE char30 VALUE 'username' , "用户名称
p_pwd TYPE char30 VALUE 'password' . "用户密码 DATA:dest LIKE rfcdes-rfcdest VALUE 'SAPFTP',
compress TYPE c VALUE 'N'. DATA:hdl TYPE i,
key TYPE i VALUE 26101957,
slen TYPE i,
cmd(80) TYPE c VALUE 'cd /文件夹/', "ftp的操作 具体可以百度
blen TYPE i. DATA:lv_file(40). "存放文件名 DATA:BEGIN OF result OCCURS 0,
line(100) TYPE c,
END OF result. DATA:BEGIN OF ls_line,
line(2000),
END OF ls_line,
lt_line LIKE TABLE OF ls_line. DATA:i_bintab TYPE w3mimetabtype . slen = strlen( p_pwd ). * "获取加密密码 保存到P_PWD
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
source = p_pwd
sourcelen = slen
key = key
IMPORTING
destination = p_pwd. * 连接ftp服务器
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
user = p_uname
password = p_pwd
host = p_host
rfc_destination = dest
IMPORTING
handle = hdl. "连接的句柄 CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = hdl
command = cmd "进入指定ftp目录
compress = compress
TABLES
data = result
EXCEPTIONS
command_error = 1
tcpip_error = 2.
******* LOOP AT result.
******* WRITE AT / result-line.
******* ENDLOOP. lv_file = '*******.txt'. "ftp目录下的文件名(只支持*.txt OR *.dat)
* 解析*.txt 文件
"1.在代码中由于有中文,所以需先得到BIN的内表
"2.使用SCMS_BINARY_TO_TEXT把BIN的二进制值转换为GB2312
CALL FUNCTION 'FTP_SERVER_TO_R3'
EXPORTING
handle = hdl
fname = lv_file
* character_mode = 'X'
IMPORTING
blob_length = blen
TABLES
blob = i_bintab
* text = lt_line
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3
OTHERS = 4.
"转换BIN内表数据
CALL FUNCTION 'SCMS_BINARY_TO_TEXT'
EXPORTING
input_length = blen
encoding = '8400' "4110:UTF8,8400:GB2312
IMPORTING
output_length = blen
TABLES
binary_tab = i_bintab
text_tab = lt_line
EXCEPTIONS
failed = 1
OTHERS = 2. CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
handle = hdl. CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
destination = dest
EXCEPTIONS
OTHERS = 1.
最新文章
- 剖析JavaScript函数作用域与闭包
- 如何分割一个utf8字符串(保证单个汉字的完整性)
- JAVA通过C3P0连接数据库
- Html5最简单的游戏Demo——Canvas绘图的弹弹球
- Qt for Android 程序禁止屏幕旋转
- Android开发环境搭建(2015年8月更新)
- [Angular 2] Passing data to components with 'properties'
- 常用cl命令参数解释
- HTML5根据浏览器获取经度和纬度(百度API)
- C -小晴天老师系列——竖式乘法
- 最近做了一个通达OA的大料:20170905最新版本破解可改单位名称,无限制安装
- Android01-布局篇
- Android 初了解
- 【树状数组】区间出现偶数次数的异或和(区间不同数的异或和)@ codeforce 703 D
- storcli 简易使用介绍
- HashMap jdk1.8 jdk1.7 put改动
- slice()和subString()
- 大数据的乘法实现——C语言
- MP实战系列(六)之代码生成器讲解
- Socket网络编程--聊天程序(7)
热门文章
- 安装torch_scatter,torch-sparse,torch-cluster,torch-spline-conv,torch-geometric
- Redis入门级简单安装使用
- 记一次SpringBoot整合WebSocket 找不到ServerEndpointExporter类的问题
- Linux docker 安装nginx 配置ssl证书
- 基于HttpWebRequest,HttpWebResponse发起请求
- vue2和vue3配置全局自定义参数及vue3动态绑定ref
- socket的客户端和服务端(Windows控制台程序)
- OS-lab4
- Python的入门学习Day 19~21——form”夜曲编程“
- boost.python编辑,以及c++api的python封装