点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我正在尝试在以下情况下实现MOVE-CORRESPONDING。
内部表#1:lt_plant
werks fabkl国家
1000 01
内部表2:lt_name
ident ltext
01 <国家名称>
我试图使用FOR和以下代码将国家/地区名称从内部表#2移至内部表#1,但是这导致从内部表#2追加新行。
lt_plant =值#(lt_name
中
其中lt_plant
中
))。
请帮助我使用BASE/CORRESPONDING,FOR和WHERE解决此问题。
谢谢。
>>但是,这导致从内部表#2追加新行。
是的,由于存在BASE,因此使用lt_plant = VALUE#(BASE lt_plant ...)构造 它与目标引用相同的表,它在不初始化的情况下追加新行。 请注意,使用与目标数据对象BASE和FOR相同的内部表是非常危险的,因为它可能会导致无限循环(当前,您的代码不会循环,仅因为您没有初始化lt_plant的fabkl且WHERE基于 在fabkl上,您只需初始化ltext。)
如果只想使代码不追加,而无需太多更改代码,则可以简单地放弃BASE并使用LET lt_plant_temp = lt_plant进行临时复制 因为LET总是在目标数据对象(lt_plant)初始化之前执行:
但是我建议您选择Michael给出的与CORRESPONDING ... FROM ... USING对应的解决方案,它对应于左外部联接,因为我认为它比您的对应于一个外部联接更好。 内部联接。 如果要坚持内部联接,还可以使用FILTER ... IN构造函数。
当您需要10秒钟进行自我测试时,我认为您应该先尝试一下,然后再问是否有一些您无法实现或无法理解的事情。 因此,让我们"勺子喂食":是的,该生产线是从头开始构建的,因此您必须初始化所需的所有组件(我也编辑了答案)。
一周热门 更多>