ABAP字段符号

时间:2014-05-26 09:26:06

标签: sap abap

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

3 个答案:

答案 0 :(得分:5)

字段符号可以说是指针。意味着,如果您为字段符号分配任何内容,则该符号与变量强耦合(链接),对fieldsymbol的任何更改都将立即更改变量。在性能方面,如果你循环遍历内部表,它就会被使用。您可以循环进入fieldsymbol,而不是循环到结构中。如果对内部表进行了修改,则可以直接修改fieldsymbol。然后您可以删除“修改”指令,该指令用于将结构的更改映射回内部表的相应行。 “读表分配”也有相同的用途,例如循环到字段符号。 更推荐Field-Symbol然后使用“workarea”(修改时),但引用是现在要做的事情。它们的工作方式几乎与fieldymbols类似。 我可以为你澄清一下吗?

答案 1 :(得分:2)

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

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

我希望这些内容会有所帮助。

答案 2 :(得分:0)

让我们来看看编码。另外,我想添加数据引用。

* 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方法紧密相关。我必须承认,在性能方面,字段符号稍占优势。

在谈论修改时,后两个应该是首选。第一个示例具有额外的数据副本,从而降低了整体性能。