点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在尝试避免循环更新表。
lt_ztable的循环分配。 -bname = ls_record-new_username。 结束循环。
*我以前如何修改内部表
ls_ztable-bname = ls_record-new_username。 从ls_ztable传输bname修改lt_ztable。
当我运行代码检查器时:
要在表" LT_Ztable "中更改,删除或插入一行。 无法静态确定LOOP是否在" LT_Ztable"上处于活动状态
可以这样修改内部表吗?更重要的是,它比字段符号更有效吗?
以下行必须在LOOP AT内,否则会引发运行时错误,因为这意味着它会更新当前迭代的行(在LOOP AT lt_ztable内部):
您可能想做的是修改几行(在-处的任何循环之外-添加WHERE使得MODIFY的行为完全不同):
... WHERE bname <> ls_ztable-bname在所有情况下均有效,而WHERE bname IS NOT INITIAL则防止修改带有初始BNAME的行。
我的 经验法则是内核一次执行一个语句,而使用字段符号将需要多个语句。 所以我想DELETE ... WHERE ...会更快(也许快20%-测试可以轻松完成...)
乔纳森·布拉瓦茨克,
Sandra Rossi ,MODIFY语句的行为与不同的语句不同。 上面的两个语句有助于更好地理解概念。
我觉得使用FIELD SYMBOL仍然比MODIFY语句更有效,因为FIELD SYMBOL使用内存概念来替换内部数据被更改的值
您需要确保在循环中执行所需的操作后,未分配字段Symbol。
注意
# p#乔纳森·布拉瓦茨基,在这种情况下,请使用"字段符号"。一周热门 更多>