映射逻辑-将一个值从多个段发送到单个字段

2020-09-08 14:26发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在尝试找出有关地图中...

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

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


嗨,

我正在尝试找出有关地图中某些逻辑的错误。 请在下面找到下一个来源和目标结构:

所需的逻辑是下一个逻辑:每个字段都是要映射的地图,除了名为" field"的字段外。

Segment为0..1,因此可能没有字段出现在这里,如果存在,则segment1可能出现1次或多次。 如果有段(至少1到无界),那么我需要在field2中(在源请求中)搜索值" AA"。 如果值存在,那么我需要将所有这些上下文值发送到目标(field1到field1,field2到field2,等等)。 如果field2中不存在值" AA",或者没有段,则我需要向所有字段目标发送0。

我可以使用UDF在field2中搜索AA值:

field1和field2是searchAA UDF的输入参数,它们的上下文在行级别。

这适用于我已完成的所有测试案例:

但是,如果存在多于1行,这将无法正常工作:

我可能丢失了一些东西,或者可能需要避免UDF并仅使用标准节点函数,但我无法理解队列上下文错误。

有人能告诉我是否必须执行此映射逻辑,以便所有测试用例都很好吗?

谢谢!!!!!!

source-and-target.jpg (86.0 kB)
付费偷看设置
发送
9条回答
大圣 - sap领域执行人,9年sap运营经验
1楼 · 2020-09-08 14:41.采纳回答

嗨!

尝试一下是否有帮助:

field1 ... field4移至"行"上下文。

关于此,Evgeniy 。

小熊yu生菜
2楼-- · 2020-09-08 14:58

嗨,Evgeniy,

谢谢!!!! 我在if句子的末尾缺少默认的地图。

这解决了我的问题!

哎,真难
3楼-- · 2020-09-08 14:38

嗨,

1。 首先,您不需要UDF即可解决此要求

您首先需要将段映射到行(两者都映射到无边界)

字段1->如果段(存在)AND field2.equalsS(" AA")将field1映射到field1,否则将0映射到field1

您可以避免使用segment(exists)逻辑,因为field2仅在存在segment时才存在,因此以下逻辑就足够了,sam适用于所有字段

2。 您方法中的问题是您正在执行result.addValue(),但没有执行 ResultList.CC 来处理上下文,因此所有值 来自udf的消息将在相同的背景下出现。 否则在udf之后应用splitByValue(eachvalue)

xfwsx85
4楼-- · 2020-09-08 14:37

嗨,维卡斯,

感谢您的回复。

选项1将不起作用,因为segment1不会总是以segment为0..1出现,并且可能有重复的segment1,但是源上只有1行:

因此,当必须仅创建一行时,这里的逻辑会尝试创建多行。

关于选项2,感谢有关UDF的建议。

悠然的二货
5楼-- · 2020-09-08 14:44

嗨,

在Vikas回答的基础上,这是方法3-

1。 如果field2 = AA,则可以使用segment1到行进行映射,从而在图形映射中放入逻辑。

然后,在子参数中,field1,field2等将是一对一的映射。

2。 在目标端复制行,并在逻辑上,当field2不等于AA时,按照segment1的出现创建逻辑。

在子参数中,field1,field2等将在此处映射为常数0。

谢谢

Apu

wang628962
6楼-- · 2020-09-08 14:56

嗨,Apu

谢谢您的输入!

在选项1上,我遇到的问题与我告诉Vikas的问题相同:如果我将segment1发送到行,则将在目标端创建比预期行更多的行(每1个目标行1个源行)。/p>

选项2是个好主意,但我认为根据我所做的测试,它应该与其他问题一样。

请记住逻辑是:

  • 对于每个源行,必须创建一个目标行
  • rowfield1是要映射的地图,必须总是来
  • 当field2中没有" AA"值时,field1,field2,field3和field4必须为0,并且如果存在" AA"值,则仅应发送相同上下文中的那些值。

任何评论或帮助将不胜感激。

致谢!

Violet凡
7楼-- · 2020-09-08 14:36

嗨,

这是由于上下文处理所致。

1。 将源行与目标行一对一映射

2。 将rowfield1,2,3一对一地映射到Target rowfield1,2,3

3。 现在,按照我之前的答案应用field1逻辑,但始终右键单击field1并转到上下文,然后从段1到行中选择上下文。

您需要这样做。字段1,field2, 3和4,同时映射它们

问候

Vikas

一周热门 更多>