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

时间:2016-05-19 14:57:54

标签: sap abap

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

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

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

怎么会有语法?为什么在这种情况下使用结构?

2 个答案:

答案 0 :(得分:4)

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

循环时使用结构就是这个

LOOP AT t_abc INTO DATA(ls_abc)
  WHERE lgart = xyz.
  g_abc-lkj = g_abc-lkj + ls_abc-abc.
ENDLOOP.

答案 1 :(得分:0)

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

字段符号

  • 字段符号指针
  • 因此字段符号没有数据复制操作,性能更好
  • 如果我们通过字段符号更改了值,那么内部表也会更改

结构

  • 结构是数据的副本,因此存在数据复制操作,如果数据行大于 200字节,则性能不佳(基于SAP ABAP性能指南)
  • 如果更改了结构中的数据,原始内部表格保持不变,因为内存中有 2份数据