0

我是 ABAP 的新手,我必须修改这些代码行:

LOOP AT t_abc ASSIGNING <fs_abc> WHERE lgart = xyz.
  g_abc-lkj = g_abc-lkj + <fs_abc>-abc.
ENDLOOP.

一位同事告诉我,我必须使用结构而不是字段符号。

在这种情况下,语法将如何以及为什么要使用结构?

4

2 回答 2

4

我不知道为什么同事希望您在这种情况下使用结构,因为在循环时使用字段符号通常性能更高。原因可能是您正在进行某种新手培训,而他希望您学习不同的语法变体。

在循环中使用结构就像这样

LOOP AT t_abc INTO DATA(ls_abc)
  WHERE lgart = xyz.
  g_abc-lkj = g_abc-lkj + ls_abc-abc.
ENDLOOP.
于 2016-05-19T15:04:46.993 回答
0

您的代码是正确的,因为字段符号的功能几乎与结构相同。

对于字段符号

  • 字段符号是一个指针
  • 所以字段符号没有数据复制动作,性能更好
  • 好吧,如果我们通过字段符号更改值,内部表也会更改

对于结构

  • 结构是数据的副本,所以有数据复制动作,如果数据行大于200字节,性能很差(基于SAP ABAP编程指南性能)
  • 如果更改结构中的数据,原来的内部表保持不变,因为内存中有2个数据副本
于 2016-07-07T01:25:26.000 回答