0

在 SAP PI 7.4 中,我在尝试在消息映射中映射某些东西时遇到了一些困难,这看起来很简单。

输入是这样的。

<Employee>
      <ExternalIdList>
          <ExternalId>aaa</ExternalId>
          <ExternalId>bbb</ExternalId>
          <ExternalId>ccc</ExternalId>
      </ExternalIdList>
</Employee>

我需要这个映射到以下结构

<Newobject>
 <ExternalEmployeeList>
  <ExternalEmployee>
   <ExternalId>aaa</ExternalId>
  </ExternalEmployee>
  <ExternalEmployee>
   <ExternalId>bbb</ExternalId>
  </ExternalEmployee>
  <ExternalEmployee>
   <ExternalId>ccc</ExternalId>
  </ExternalEmployee>
 </ExternalEmployeeList>
</Newobject>

尝试映射时,我会这样做:

员工 -> 新对象

ExternalIdList -> ExternalEmployeeList

ExternalId -> ExternalEmployee

外部标识 -> 外部标识

测试映射时,创建了 3 个 ExternalEmployee 节点,但只有第一个节点在 ExternalId 中包含值“aaa”。其他 2 个 ExternalEmployee 没有得到 ExternalId:

<Newobject>
 <ExternalEmployeeList>
  <ExternalEmployee>
   <ExternalId>aaa</ExternalId>
  </ExternalEmployee>
  <ExternalEmployee/>
  <ExternalEmployee/>
  </ExternalEmployee>
 </ExternalEmployeeList>
</Newobject>

我已经尝试了相当多的节点功能或更改了上下文,但似乎没有任何效果。推荐的解决方案是什么?

也许事先添加一个 XSLT 映射以在输入消息中的 ExternalIdList 和 ExternalId 之间插入一个级别?这似乎有很多绒毛。

在此先感谢,欢迎每一个正确方向的提示!

4

1 回答 1

1

问题应该是标签 ExternalId 中缺少上下文更改。

尝试通过以下方式修复映射:

ExternalEmployee(目标)= ExternalEmployee

ExternalId (目标) = splitByValue(ExternalId)

配置 splitByValue 选择“每个值”选项

外部 ID 截图

还要确保目标 ExternalEmployee 有 1..unbounded 出现!

这是结果 结果

此致!

于 2019-02-22T16:39:10.700 回答