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>.