簡體   English   中英

ABAP 字段符號

[英]ABAP field symbols

有人可以簡單地解釋我在字段符號 ABAP 中發生了什么嗎? 如果有人可以解釋這個概念以及它與繼承有何關系以及它如何提高性能,我很高興。

字段符號可以說是指針。 意思是,如果您為字段符號分配任何內容,則該符號與變量強耦合(鏈接),對字段符號的任何更改都會立即更改變量。 在性能方面,如果您循環內部表,它就會使用。 除了循環到結構中,您還可以循環到字段符號中。 如果對內表進行了修改,則可以直接修改fieldsymbol。 然后你可以去掉“修改”指令,該指令用於將結構的變化映射回內部表的相應行。 “讀取表分配”也用於相同的目的,例如循環到字段符號中。 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 方法齊頭並進。 我不得不承認,在性能方面,字段符號稍微領先。

在談論修改時應該首選最后兩個。 第一個示例有一個額外的數據副本,這會降低整體性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM