我是ABAP的新手,我必须修改这些代码行:
LOOP AT t_abc ASSIGNING <fs_abc> WHERE lgart = xyz.
g_abc-lkj = g_abc-lkj + <fs_abc>-abc.
ENDLOOP.
一位同事告诉我,我必须使用结构而不是字段符号。
在这种情况下,语法将如何以及为什么要使用结构?
我不知道
为什么同事希望您在这种情况下使用结构,因为在循环时使用字段符号通常性能更高。原因可能是您正在进行某种新手培训,他希望您学习不同的语法变体。
循环时使用结构会这样
LOOP AT t_abc INTO DATA(ls_abc)
WHERE lgart = xyz.
g_abc-lkj = g_abc-lkj + ls_abc-abc.
ENDLOOP.
您的代码是正确的,因为字段符号的功能几乎与结构相同。
对于字段符号
- 字段符号是一个指针,
- 所以字段符号没有数据复制动作,性能更好
- 好吧,如果我们通过字段符号更改值,则内部表也会更改
对于结构
- 结构是数据的副本,因此存在数据复制操作,如果数据行大于 200 字节,则性能较差(基于 SAP ABAP 性能编程指南)
- 如果更改了结构中的数据,则原始内部表保持不变,因为内存中有 2 个数据副本