用于数据过滤的SAP CPI Groovy脚本

2020-08-31 21:02发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我需要过滤从成功因素获得...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我需要过滤从成功因素获得的有效负载中的记录。

在某些情况下,我必须删除一条记录并将其附加到文件末尾。

请让我知道如何在SAP CPI Integration流中实现这一目标。

此致

Shruthi

4条回答
打个大熊猫
2020-08-31 21:17 .采纳回答

Hello Shruthi,

下面的解决方案应该可以工作(在下面的示例中,我要删除员工ID为E4的记录)

输入XML:

 
 <记录>
  E1 
  BLR 
  Sriprsad 
 <姓氏> Bhat 
  Shivaram 
  sri@test.com 
 
 <记录>
  E2 
  GGN 
  Praveen 
  R 
  T 
  praveen@test.com 
 
 <记录>
  E3 
  DEL 
  Rahul 
 <姓氏>辛格
  Markand 
  rahul@test.com 
 
 <记录>
  E4 
  CHN 
  Marko 
 <姓氏> Chacko 
 凯尔
  Marko@test.com 
 
 
 

脚本:

导入com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;
 导入groovy.xml.XmlUtil;
 导入groovy.xml.StreamingMarkupBuilder;
 导入groovy.xml。*;

 def消息processData(消息消息){
      //身体
       def主体= message.getBody();
       def list =新的XmlParser()。parseText(body)
       def nodeToDel = list.Record.find {it.EmployeeID.text()=='E4'}
       def父= nodeToDel.parent()
       parent.remove(nodeToDel)
       def valid_data = XmlUtil.serialize(列表)
       def Deleted_data = XmlUtil.serialize(nodeToDel);
       message.setProperty(" deleted_records",Deleted_data);
       message.setBody(valid_data);
       返回消息;
 }
 

输出XML(有效记录):

 <?xml version =" 1.0" encoding =" UTF-8"?>
 <根>
 <记录>
  E1 
  BLR 
  Sriprsad 
  Bhat 
  Shivaram 
  sri@test.com 
 
 <记录>
  E2 
  GGN 
  Praveen 
  R 
  T 
  praveen@test.com 
 
 <记录>
  E3 
  DEL 
  Rahul 
 <姓氏>辛格
  Markand 
  rahul@test.com 
 
 
 

输出XML(已删除的节点):

已删除的节点数据将存储在属性:$ {property.deleted_records}中,可以根据需要在以后的时间点进行检索

 <?xml版本=" 1.0"编码=" UTF-8"?>
 <记录>
  E4 
  CHN 
  Marko 
 <姓氏> Chacko 
 凯尔
  Marko@test.com 
 
 

问候,

Sriprasad Shivaram Bhat

一周热门 更多>