PO将源上的多个字段映射到单个目标字段(0到n)问题

2020-08-16 11:24发布

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

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


嗨,

如何在源str中的多个字段上映射多个值。

可能在图形映射中使用UDF或任何其他建议吗?

来源

P1

P2

P3

定位结构

P1

P2

P3

谢谢

Raj

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

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


嗨,

如何在源str中的多个字段上映射多个值。

可能在图形映射中使用UDF或任何其他建议吗?

来源

P1

P2

P3

定位结构

P1

P2

P3

谢谢

Raj

付费偷看设置
发送
7条回答
蓋茨
1楼-- · 2020-08-16 12:03

嗨Raj,

  1. 在目标结构上选择" Strc"节点,以复制单个元素或整个子树。
  2. 右键单击以获取上下文菜单,然后选择" Duplicate Subtree"。

    将创建重复项,并可以在其图像上用+符号对其进行标识。 重复节点的路径后缀为[i],其中" i"以1开头。

  3. 重复上述步骤3次。
  4. 然后将S1,S2,S3值映射到您刚创建的重复子树。

问候

Anupam

CPLASF-自律
2楼-- · 2020-08-16 11:56

或多或少,这与以下线程非常相似。 答案是Anupam已经在答案中写的更详细的版本。

PI消息映射:将单个字段转换为多行

问候,
Bartosz

SKY徐
3楼-- · 2020-08-16 12:04

嗨,拉吉,

简单的图形化映射解决方案来解决您的问题。

但是在我解释相同之前,我有一个疑问。 如果不确定有效负载中将存在多少个元素,将如何创建源消息数据类型。 PI Server执行图形映射之前,先将有效负载与源XSD/数据类型进行比较。 例如,下面我们有这样的源结构

 
    
       
          
             
                
                   
                   
                   
                   
                
             
          
       
    
 
 

但是有效载荷可以具有源结构中不存在的字段,例如S5,S6 ... Sn。 那么如何创建源代码结构。

如果源结构定义不正确,则Java映射只能解决您的问题。

第二,如果您可以解释用于方案的源适配器和目标适配器,那就太好了。

问候

Anupam

zhangjiyang1323
4楼-- · 2020-08-16 12:02

感谢Anupam,我会尝试的,让您知道它的进展。

我希望"第3步在上述步骤中重复3次"。 您提到的可以扩展为" n"。

因为在我的情况下此值是动态的,并且项目结构也是重复的

P1 P2 P3 .... Pn

P1 P2 P3 .....

谢谢

Raj

天桥码农
5楼-- · 2020-08-16 11:50

嗨,Raj

如果您更改了源有效负载结构,并使用图形映射解决了此问题。 这是为您提供的解决方案。 项目段下的SalesEntryseq字段表示有效负载中的" S"字段。

然后,您需要一个上下文类型为UDF的结果,如下所示。

 public void createTargetNodes(String [] a,ResultList ParentNode,ResultList ChildNodeValues,Container Container)引发StreamTransformationException {

      字符串s [] = a [0] .split(";");
      for(int i = 0; i  

如果您想继续使用旧的源代码结构,请参考我的 博客

https://blogs.sap.com/2020/06/21/use-of-return-as-xml-feature-and-dom-parser-in-graphical-mapping/

屏幕截图的某些部分已刻意绘制,因此仅显示了相关部分。

问候

Anupam

Bunny_CDM
6楼-- · 2020-08-16 11:56

嗨Anupam,

感谢您抽出宝贵的时间对此进行检查。

我的方案发送者邮件和接收者idoc。 我正在阅读csv附件并将其转换为XML,并将其映射到IDOC结构。 我使用了有效负载交换和转换bean模块,并将csv转换为XML。

现在我的源XML在项目级别上具有一个字段,而不是以前的方法,我想将所有(S1; S2; S3; ..SN)包含在xml上的一个字段中,并以某个字符分隔,例如";"

P1; P2; P3; .. Pn

目标在idoc上如下所示。.需要在 P1; P2; P3; .. Pn

字段中的';"上拆分值

并附加到E1EDL11-SERNR [1] = P1,E1EDL11-SERNR [2] = P2 ..... E1EDL11-SERNR [n] = Pn

映射任何指针的最佳方法是什么?

谢谢

Raj

一周热门 更多>