声明:本文仅代表原作者观点,仅用于SAP软件的应用与学习,不代表SAP公司。注:文中所示截图来源SAP软件,相应著作权归SAP所有。
前言
CPI是SAP公司提供的云服务,功能类似于PI/PO,用于集成多个系统之间的调用
本文主要介绍一个通用接口设计 该接口用于实现ECC/S4把数据发到指定FTP服务器的目录中,文件格式csv.
二
FTP服务器连接配置
cloud connect 中配置连接内网的FTP服务器.如果FTP服务器有公网地址, 则无需该配置.
CLOUD CONNECT 是SAP的反向代理服务,用于CPI访问内网服务器.
需要配置连接FTP的账号(安全材料),如果是FTPS 或SFTP,还需要导入证书(密钥库)
三
IFlow 配置
这个IFlow配置是一个通用配置, 配置一次后, 所有此类的接口都可以调用这个IFlow,传递json文件到IFlow, IFlow负责把JSON最终转换成CSV 文件, 写入目标FTP服务器
概览
HTTPS SEND
JSON到XML的转换器
XML到CSV的转换器
其中/data节点需要留意, 该节点的定义需要和ABAP中数据结构的定义一致.
通过脚本修改文件名,添加时间戳后缀, 该节点不是必须的 可以在ABAP传递的http 抬头参数(Filename)中整合相关信息.
序列执行的两个步骤
步骤一,用于把csv文件写入ftp服务器,
步骤二,用于返回一个成功消息
步骤一, 写入ftp文件
步骤二.返回一个成功消息
异常处理, 返回一个失败消息
四
配置ECC/S4连接CPI
ECC/S4主要通过类 cl_http_client 调用外部系统(包括CPI系统)的rest服务. 需要先定义和CPI服务器的连接信息
获取CPI REST 服务的调用地址
在浏览器中获取CPI的证书
证书导入ECC/S4系统(TCODE STRUST).
配置SM59和CPI 的连接
创建一个G(HTTP connect to extenal server )类型的连接
输入连接的关键信息
五
ABAP调用
ABAP 调用CPI的服务可以封装成一个函数, 多个接口调用这个函数,通过参数指定目录/文件名,传入不同的数据或JSON串,实现把特定的数据写入FTP文件.
创建函数Z_IF_CALL_CPI_FTP.
函数允许传入JSON串或者数据对象. 如果是数据对象, 使用通用类转换成JSON串
基于RFC目标定义http client 对象
设置密码不弹框及其它抬头参数
发送报文,并获取返回的报文
获取并解析返回的报文,
函数测试验证通过
查看FTP服务器文件
数据定义
该数据定义与IFlow中XML->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服务的调用即可.