点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在尝试找出有关地图中...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供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)
嗨!
尝试一下是否有帮助:
field1 ... field4移至"行"上下文。
关于此,Evgeniy 。
嗨,Evgeniy,
谢谢!!!! 我在if句子的末尾缺少默认的地图。
这解决了我的问题!
嗨,
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)
嗨,维卡斯,
感谢您的回复。
选项1将不起作用,因为segment1不会总是以segment为0..1出现,并且可能有重复的segment1,但是源上只有1行:
因此,当必须仅创建一行时,这里的逻辑会尝试创建多行。
关于选项2,感谢有关UDF的建议。
嗨,
在Vikas回答的基础上,这是方法3-
1。 如果field2 = AA,则可以使用segment1到行进行映射,从而在图形映射中放入逻辑。
然后,在子参数中,field1,field2等将是一对一的映射。
2。 在目标端复制行,并在逻辑上,当field2不等于AA时,按照segment1的出现创建逻辑。
在子参数中,field1,field2等将在此处映射为常数0。
谢谢
Apu
嗨,Apu
谢谢您的输入!
在选项1上,我遇到的问题与我告诉Vikas的问题相同:如果我将segment1发送到行,则将在目标端创建比预期行更多的行(每1个目标行1个源行)。/p>
选项2是个好主意,但我认为根据我所做的测试,它应该与其他问题一样。
请记住逻辑是:
任何评论或帮助将不胜感激。
致谢!
嗨,
这是由于上下文处理所致。
1。 将源行与目标行一对一映射
2。 将rowfield1,2,3一对一地映射到Target rowfield1,2,3
3。 现在,按照我之前的答案应用field1逻辑,但始终右键单击field1并转到上下文,然后从段1到行中选择上下文。
您需要这样做。字段1,field2, 3和4,同时映射它们
问候
Vikas
一周热门 更多>