从表中获取值并将其保存在结构中



我是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 个数据副本

相关内容

  • 没有找到相关文章

最新更新