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外网暴露的地址,如果你的OPOData服务无法进行外网暴露的话,请使用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信息

 

 

 

 

 

 

posted @ 2021-09-11 00:02  TAB_Zhu  阅读(412)  评论(0编辑  收藏  举报