点击此处---> 群内免费提供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构造函数。
请使用CODE按钮设置代码格式,以便在更多用户中显示 友好的格式(彩色)。
>>,但是会导致从内部表#2追加新行。
是,为操作符VALUE选择了BASE, BASE表的值用作目标表的初始值,下一个值基于您的两个FOR循环。
这是它与CORRESPONDING一起工作的方式,请注意lt_plant不会初始化,但是 基于匹配键的第二张表中的值将从table2移到table1。 另外,table2还需要根据您的映射值进行排序或散列:
这是它与VALUE和FOR一起使用的方式,而内部表将被初始化并插入行:
有关信息,请使用CODE按钮更好地格式化数据。
内部表#1:lt_plant
内部表2:lt_name
创建一个具有lt_plant结构的故事类型" LTT_PLANT"。
嗨, Sandra ,
一天的问候!
非常感谢您的支持。 在返回确切的记录数方面,您的代码正常运行,因为我在源表lt_plant中有114条记录。 但是,werks字段正在初始化。 也许我还必须在值分配中添加一些怪癖。我附上了屏幕截图,请提出建议。
预先感谢。
一周热门 更多>