ABAP字段符号



有人能简单地解释一下ABAP字段符号发生了什么吗?如果有人能解释一下这个概念,它是如何与继承相关的,以及它是如何提高性能的,我很高兴。

字段符号可以说是指针。意思是,如果你给一个字段符号赋值,这个符号是强耦合(链接)到变量的,对字段符号的任何改变都会立即改变变量。在性能方面,如果循环遍历一个内部表,就会使用它。您可以循环进入字段符号,而不是循环进入结构。如果对内部表进行了修改,则可以直接修改字段符号。然后可以去掉"modify"指令,该指令用于将结构的更改映射回内部表的相应行。"读表赋值"也有相同的目的,就像循环到一个字段符号。Field-Symbol更推荐使用"工作区"(当修改时),但是现在应该使用引用。它们的工作原理与字段符号几乎相似。

ABAP中的字段符号在c++中用作指针。它有很多好处:

  • 你可以创建一个类型为ANY的字段符号,这样你就可以指向任何变量/表类型的内存空间。

让我们在编码时看看它。另外,我想加入数据引用。

* The 'classic' way. Not recommended though.
LOOP AT lt_data INTO DATA(ls_data).
 ls_data-value += 10.
 MODIFY TABLE lt_data FROM ls_data.
ENDLOOP.
* Field symbols
LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<fs_data>).
 <fs_data>-value += 10.
ENDLOOP.
* Data references
LOOP AT lt_data REFERENCE INTO DATA(lr_data).
 lr_data->value += 10.
ENDLOOP.

我个人更喜欢数据引用,因为它们与OO方法密切相关。我不得不承认,字段符号在性能方面有点超前。

在讨论修改时,应优先使用后两个。第一个示例有一个额外的数据副本,这会降低整体性能。

最新更新