SAP CPI Groovy脚本可根据传入的ECC有效负载来复制和创建字段

2020-08-23 06:05发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我需要使用以下方法更改E...

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

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


嗨,

我需要使用以下方法更改ECC(SAP Business Suite中的复制注册产品)的传入负载:

1。检查并确认以下语言的设备描述是否存在:DE,EN,IT,ES,FR,CN,KR,JP。

2。基于#1,创建该列表中所有缺少的语言的记录。

3。将EN描述复制到所有其他语言。

我尝试使用可用的映射功能,但无法实现。

为了在8个E101COD_S_EQUI_DESCR和所有SPRAS_ISO =='EN'的同一个EQKTX上创建一个新的有效负载,在映射之前,我可能需要一个普通的脚本。

任何人都可以帮忙吗?

谢谢

有效载荷示例(三种语言):

COD_S_EQUI_DESCR

D

Exactive Plus EMR

X

EXACTIVE PLUS EMR

DE

COD_S_EQUI_DESCR

E

Exactive Plus EMR.EN

EXACTIVE PLUS EMR.EN

EN

COD_S_EQUI_DESCR

S

测试应覆盖ES

应该覆盖ES

ES

4条回答
Alawn_Xu
2020-08-23 06:19

这可以用Groovy脚本轻松完成。 首先遍历所有节点,然后检查是否从所需语言列表中删除每种找到的语言。 之后,循环遍历其余语言,并为每种语言复制和修改EN节点。

 def xml =""" 
   
    COD_S_EQUI_DESCR 
    D 
    Exactive Plus EMR 
    X 
    EXACTIVE PLUS EMR 
    DE 
   
   
    COD_S_EQUI_DESCR 
    E 
    Exactive Plus EMR.EN 
    EXACTIVE PLUS EMR.EN 
    EN 
   
   
    COD_S_EQUI_DESCR 
    S 
   测试应覆盖ES 
   应该覆盖ES 
    ES 
   
 """

 def lngList = ['DE','EN','IT','ES','FR','CN','KR','JP']
 def root = new XmlSlurper()。parseText(xml)
 def enNode = root。'**'。find {节点-> node.name()=='E101COD_S_EQUI_DESCR'&& node.SPRAS_ISO.text()=='EN'}
 root.E101COD_S_EQUI_DESCR。每个{节点->
  //从"所需"列表中删除现有语言
   lngList.remove(node.SPRAS_ISO.text())
   如果(node.SPRAS_ISO.text()!=" EN"){
     node.EQKTX = enNode.EQKTX.text()
     node.EQKTU = enNode.EQKTU.text()
   }
 }

//为每种需要的语言添加节点
 lngList.each {lng->
   def newNode =新的XmlSlurper()。parseText(groovy.xml.XmlUtil.serialize(enNode))
  //您可能也必须在这里设置SPRAS!
   newNode.SPRAS_ISO = lng
   root.appendNode(newNode)
 }
 xml = groovy.xml.XmlUtil.serialize(root)

//调试输出
 println(xml)
 

您可以在Groovy控制台中尝试上面的代码(单击"执行脚本"以查看结果): https://groovyconsole.appspot.com/edit/5168403044106240