2021.09.10 【ABAP随笔】-BTP-简单的iflow调用OP的OData服务
CPI简单调用OP本地OData服务
接着上次从SAP API Hub上参考创建的OData 服务:OData -SAP OP 中使用SAP API Hub的API
今天玩一下如何在BTP平台上来调用这个OData服务
首先我们进入到BTP平台-Integration suite
点击它,进去,我们选择第一个页签,进行集成设计和开发
点击右边设计按钮,如果没有包得话需要点击右上方按钮创建一个包
输入名称和技术名称
然后点击右上方保存按钮,然后点击部件页签,选择Integration Flow
然后填入iFlow的名称和标识,点击确认
如下图我们创建好了一个空白默认的iFlow,点击进入
如下图所示,我们可以看到有发送端,集成进程和接收端,由于简单演示,我们就不需要发送端了,同时我们采用计时器来驱动事件,点击右上角编辑按钮
删除Sender 和 Start
点击上方事件按钮,选择计时器,放置到Integration Process中
选择功能:运行一次 (既部署的时候运行一次),然后将Start Time 1 和end 连起来
接着选择外部调用->请求回复
然后选择连接器,连接Request Reply 1 到 Receiver
这时会弹出选择适配器类型,我们选择OData->OData V2
点击Connection 填上地址,这个地址就是OP 的OData外网暴露的地址,如果你的OP的OData服务无法进行外网暴露的话,请使用cloud connector 连接到OP
这里先保存下配置,对于Authentication,我们需要用OP 账号密码来登陆,所以需要先创建一个(Security Material) ,点击监控器
点击安全材料这个页签,
点击用户凭据:输入凭据名称(PO_OData_User),账号和密码(sap 登陆账号密码)
点击部署,用户账号就创建好了
我们返回刚才的IFlow 继续操作,选择Basic类型的权限,然后填入我们刚才创建的security material
切换到Processing页签,选择Get方法,然后选择Resource Path
选择远程数据源,然后点击步骤2,我们可以在选择实体中选择需要的数据集
同时选择所要的字段
点击完成即可
我们就可以看到再Query Option中自动生成了所需的字段
接下来我们选择消息转换器->脚本->Groovy脚本, 这个脚本的目的时获取返回的消息
我们可以点击创建按钮,直接生成一个系统默认的Groovy脚本进行修改
我们需要对其中的内容进行修改->
import com.sap.gateway.ip.core.customdev.util.Message; import java.util.HashMap; def Message processData(Message message) { //Body def body = message.getBody(java.lang.String) as String; def messageLog = messageLogFactory.getMessageLog(message); def properties = message.getProperties(); messageLog.setStringProperty("Logging","Printing Payload as Attachment"); messageLog.addAttachmentAsString("[2]Payload after mapping", body , "text/xml"); return message; }
到此我们就完成了BTP上的所有配置了,然后点击保存->部署
然后我们点击 监控器
可以看到刚才触发的IFlow 已经完成
点击附件中的文件,我们可以查看返回的消息
可以看到返回的PO信息