日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FIELD SYMBOL和TYPE REF TO的用法和比较

發布時間:2025/3/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FIELD SYMBOL和TYPE REF TO的用法和比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Type Ref To(以下簡稱:TRT)和?Field Symbol(以下簡稱:FS)在?ABAP?中都有著類似指針的作用;

下面結合對比和實例來介紹下兩者的用法和區別之處。

先預定義類型ty_ym,內表it_ym,工作區wa_ym,變量v_ym(char20)以供后面使用:

一、定義

Type Ref To?和?Field Symbol?的定義都可以指定特定的類型或者結構,或者不指定。


二、初始化

Type Ref To 有兩種初始化的方法:

第一種是用?CREATE DATA?動態開辟內存;

第二種是用?GET REFERENCE OF?指向已經存在的內存變量.

Field Symbol?的初始化,則只能指向已經存在的內存變量。


如果定義 ref 是指定特定的類型或者結構的,那么 CREATE DATA 時 TYPE 可以省略。

無論定義時 ref 是否有特定的類型或者結構,CREATE DATA 時必須指定特定的類型或者結構,不能是data這種泛型的。


在使用 Field Symbol 和 Type Ref To 前必須初始化,不然會發生 RUNTIME ERROR。

三、使用

如果第一步定義時指定了特定的類型或者結構,那么 Field Symbol 和 Type Ref To 都可以直接使用;

如果第一步定義時沒有指定類型或者結構,那么 Type Ref To 必須 ASSIGN 到另外一個 Field Symbol 里間接使用。

1) 指定特定的類型時:

1 2 ref ->* = 'abc'. <fs> =?'abc'.

2) 指定特定的結構時:

1 2 ref->*-col1 = 'abc'.? "簡寫是ref->col1 < fs >-col1 =?'abc'.

3) 不指定特定的類型或者結構時:


注意事項:

一般來說為了使用方便,還是應該指定 Field Symbol 或者 Type Ref To 的類型或者結構,以便之后直接使用。

在使用 Type Ref To 時,如果是 TYPE REF TO DATA,那么之后想使用這個 Type Ref To 時,依然會不可避免的用到 Field Symbol;

這樣代碼寫起來就很麻煩,還不如一開始就使用 Field Symbol 寫。

但像動態內表這種事先不知道結構的場合,那么只能使用 Type Ref To,再結合 Field Symbol;

如果直接使用 Field Symbol,那么 Field Symbol 將無法參考某個已經存在的結構進行初始化。

第一步假如 TYPE REF TO DATA,后面的第二步初始化時依然要指定特定的結構,所以還不如第一步就指定結構。

建議只有在事先不知道結構時,才使用泛型定義。

所以要么定義和初始化時都指定類型或者結構,要么就是動態內表或者結構都無法在事先指定;

像第一步 TYPE REF TO DATA 第二步 CREATE DATA ref TYPE ty_ym 不是好的做法。

?

4、區別

Type Ref To 和 Field Symbol 在用法上目前發現的主要區別:

1) Type Ref To 可以動態開辟內存,在動態內表時,可以等在程序運行時獲得結構后再開辟內存,并且賦值給某個 Field Symbol。

而光用 Field Symbol 是做不到的,因為 Field Symbol 的初始化需要“掛”在已知結構上。

2)Type Ref To 不像 Field Symbol 那樣有LOOP AT it_tab ASSIGNING < fs >的寫法,ref->*不是指向內表數據,

而是類似工作區指向某塊內存,所以更改數據后需要 modify 到內表,如果不需要數據了要clear。

而 Field Symbol 則不需要考慮 modify 和 clear。

3)IF < fs1 > = < fs2 > 是比較內存里的值,相對應的是IF ref1->* = ref2->*,而不能判斷比較 IF ref1 = ref2 。

總結

以上是生活随笔為你收集整理的FIELD SYMBOL和TYPE REF TO的用法和比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。