1、定义引用变量语句:
DATA dref TYPE REF TO DATA.(指向任意类型,但在创建时必须指定对象类型) ,声明定义时,没有指向任何对象,此时你不可使用,引用变量的赋值有两种方法:
CREATE DATA type XXX
GET REFERENCE OF dobj INTO dref.
2、动态创建数据参考的内存空间,语法如下 CREATE DATA dref TYPE (name).
3、将数据地址赋值给数据引用变量(GET REFERENCE) GET REFERENCE OF dobj INTO dref.
4,访问指定的数据有两种情况:
1) 对于使用DATA dref TYPE REF TO DATA_TYPE来声明的数据引用变量,程序可以直接通过->*运算符直接访问数据;
2) 对于使用DATA dref TYPE REF TO DATA来声明的数据,程序如果要访问数据,你首先要将数据赋值给一个指针(Field sysbol)(是不能直接通过数据来访问的).
以下实例:
TYPES: BEGIN OF t_struct,
col1 TYPE i,
col2 TYPE i,
END OF t_struct.
DATA: dref1 TYPE REF TO data, "定义引用变量(这里没有指定具体的引用data,但是在之后的创建引用变量的时候就必须指定type,
如果这里制定了具体引用data,创建就 无 须再指出)
dref2 TYPE REF TO data. "定义引用变量
FIELD-SYMBOLS: <fs1> TYPE t_struct,
<fs2> TYPE i.
CREATE DATA dref1 TYPE t_struct."创建引用变量空间,必须指定类型
ASSIGN dref1->* TO <fs1>.
<fs1>-col1 = 1.
<fs1>-col2 = 2.
dref2 = dref1.
ASSIGN dref2->* TO <fs2> CASTING.“因为声明的时候用的是type ref to data,所以这里不能直接用dref2->field进行访问,必须先asssign to field symbol
WRITE / <fs2>.
GET REFERENCE OF <fs1>-col2 INTO dref2.
ASSIGN dref2->* TO <fs2>.
WRITE / <fs2>.