一說到字段符號FIELD-SYMBOLS,就要與C/C++中的指針扯在一起了,使用時無需值的拷貝,直接指向並操作某個內存區,程序效率是大大的提高,所以字段符號是每個ABAP顧問都必須掌握的知識,可以這么說吧,如果你不懂ABAP字段符號FIELD-SYMBOLS,就像不懂C/C++的指針一樣,程序是可以編,但你無法寫出高效靈活的程序,所以,做為一名真正ABAP技術顧問,你必須要懂。這里只是簡單列了一下知識點,關於這方面的詳細以后貼吧
1.11. 字段符號FIELD-SYMBOLS
字段符號可以看作僅是已經被解引用的指針(類似於C語言中帶有解引用操作符 * 的指針),但更像是C++中的引用類型(int i ;&ii= i;),即某個變量的別名,它與真正的指針還是有很大的區別的,在ABAP中引用變量(通過TYPE REF TO定義的變量)才好比C語言中的指針
ASSIGN ... TO <fs>:將某個內存區域分配給字段符號,這樣字段符號就代表了該內存區域,即該內存區域別名
1.11.1. ASSIGN隱式強轉
TYPES: BEGIN OF t_date,
year(4) TYPE n,
month(2) TYPE n,
day(2) TYPE n,
END OF t_date.
FIELD-SYMBOLS <fs> TYPE t_date."將<fs>定義成了具體限定類型
ASSIGN sy-datum TO <fs> CASTING."后面沒有指定具體類型,所以使用定義時的類型進行隱式轉換
1.11.2. ASSIGN顯示強轉
DATA txt(8) TYPE c VALUE '19980606'.
FIELD-SYMBOLS <fs>.
ASSIGN txt TO <fs> CASTING TYPE d."由於定義時未指定具體的類型,所以這里需要顯示強轉
1.11.3. ASSIGN 動態分配
1.11.4. UNASSIGN、CLEAR
UNASSIGN:該語句是初始化<FS>字段符號,執行后字段符號將不再引用內存區域,<fs> is assigned返回假
CLEAR:與UNASSIGN不同的是,只有一個作用就是初始化它所指向的內存區域,而不是解除分配
