CPI 系列通用接口数据写入 FTP 服务器 csv 文件

作者:ABAP技巧与实战 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

前言

CPI是SAP公司提供的云服务,功能类似于PI/PO,用于集成多个系统之间的调用

**本文主要介绍一个通用接口设计 该接口用于实现ECC/S4把数据发到指定FTP服务器的目录中,文件格式csv.**

FTP服务器连接配置

cloud connect 中配置连接内网的FTP服务器.如果FTP服务器有公网地址, 则无需该配置.

CLOUD CONNECT 是SAP的反向代理服务,用于CPI访问内网服务器.

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

需要配置连接FTP的账号(安全材料),如果是FTPS 或SFTP,还需要导入证书(密钥库)

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

IFlow 配置

这个IFlow配置是一个通用配置, 配置一次后, 所有此类的接口都可以调用这个IFlow,传递json文件到IFlow,

IFlow负责把JSON最终转换成CSV 文件, 写入目标FTP服务器

概览

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

HTTPS SEND

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

JSON到XML的转换器

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

XML到CSV的转换器

其中/data节点需要留意, 该节点的定义需要和ABAP中数据结构的定义一致.

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

通过脚本修改文件名,添加时间戳后缀, 该节点不是必须的 可以在ABAP传递的http 抬头参数(Filename)中整合相关信息.

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

序列执行的两个步骤

步骤一,用于把csv文件写入ftp服务器,

步骤二,用于返回一个成功消息

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

步骤一, 写入ftp文件

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

步骤二.返回一个成功消息

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

异常处理, 返回一个失败消息

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

配置ECC/S4连接CPI

ECC/S4主要通过类 cl_http_client 调用外部系统(包括CPI系统)的rest服务. 需要先定义和CPI服务器的连接信息

获取CPI REST 服务的调用地址

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

在浏览器中获取CPI的证书

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

证书导入ECC/S4系统(TCODE STRUST).

1. 进入修改模式

2. 导入之前下载的证书文件

3. Add to certificate list(添加到证书列表)

4. 保存

5. 确保再次进入后能看到证书信息

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

配置SM59和CPI 的连接

创建一个G(HTTP connect to extenal server )类型的连接

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

输入连接的关键信息

1. 主机域名

2. 端口

3. 服务地址

4. 代理服务器地址(因为ECC/S4在内网系统, 无法直接访问外网的CPI服务器, 需要通过代理服务器方式)

5. 登录信息

6. 指定https连接(如果不指定, 系统会使用http连接,不符合CPI发布的服务要求).

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

ABAP调用

ABAP 调用CPI的服务可以封装成一个函数, 多个接口调用这个函数,通过参数指定目录/文件名,传入不同的数据或JSON串,实现把特定的数据写入FTP文件.

创建函数Z_IF_CALL_CPI_FTP.

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

函数允许传入JSON串或者数据对象. 如果是数据对象, 使用通用类转换成JSON串

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

基于RFC目标定义http client 对象

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

设置密码不弹框及其它抬头参数

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

发送报文,并获取返回的报文

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

获取并解析返回的报文,

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

函数测试验证通过

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

查看FTP服务器文件

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

数据定义

该数据定义与IFlow中XML->CSV的节点定义相关

CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图
CPI 系列通用接口数据写入 FTP 服务器 csv 文 - 封面图

关于传递的JSON数据格式如下

{"data": [{"f1": "M001", "f2": "W001", "f3": "10"}, {"f1": "M002", "f2"

"W002", "f3": "20"}]}

总结

ABAP数据通过CPI写入外部FTP服务器的指定目录,该接口场景比较简单.尤其应用了CPI中的XML->CSV通用转换后,

所有这一类的接口可以共用这个CPI的配置. 只需要把每个接口特性部分的内容设计成http 抬头参数传递到CPI即可. 比如文件目录,文件名等信息.

基于这类接口的共性,

可以考虑整合到数据同步平台中,作为一种特殊的目标系统(在数据平台原有逻辑写入目标数据库的部分替换成调用一个指定的函数,函数中完成对HTTP服务的调用即可.

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「CPI系列通用接口数据写入FTP服务器csv文件.md」整理生成,仅用于内部技术分享与学习交流。