ABAP--关于Data Reference的使用

2016-08-29 浏览
ABAP--关于Data Reference的使用
   Data References(只能指向abap定义的基本数据或者基本数据组合体)
1、定义数据参考变量(Data References)
DATA dref TYPE REF TO DATA.(指向任意类型,但在创建时必须指定对象类型)
DATA dref TYPE REF TO DATA_TYPE.
或者
TYPES t_dref TYPE REF TO DATA.
DATA dref TYPE t_dref.
在完成地址变量定义时,变量没有指向任何对象,此时你不可引用。只有在变量赋值后在引用。地址变量的赋值有两种方法:
CREATE DATA
GET REFERENCE OF dobj INTO dref.
2、动态创建数据参考的内存空间(CREATE DATA)
CREATE DATA dref {TYPE type}|{LIKE dobj}这种语句创建的对象没有名称,只有地址变量指向该内存变量;在申明参考变量时,未指定类型则必须加{TYPE type}|{LIKE dobj}说明。
有时需要动态创建动态类型数据对象,语法如下
CREATE DATA dref TYPE (name).
3、将数据地址赋值给数据参考变量(GET REFERENCE)
GET REFERENCE OF dobj INTO dref.
4、访问数据参考变量指定的数据
访问数据参考变量指定的数据有两种情况:
1) 对于使用DATA dref TYPE REF TO DATA_TYPE来声明的数据参考变量,程序可以直接通过->*运算符直接访问数据;
代码样例
types: begin of STRUC_1, 
         A type I, 
         B type ref to SFLIGHT, 
         C type P, 
       end of STRUC_1. 
data: S1 type STRUC_1. 
types: begin of STRUC_2, 
         X(10) type C, 
         Y     type ref to STRUC_1, 
         Z     type I, 
       end of STRUC_2. 
data:  S2 type STRUC_2, 
       R2 type ref to STRUC_2. 
if S1-A > 10. 
  create data S1-B. 
  S1-B->CARRID = 'LH'. 
  S1-B->AYMENTSUM = 1000. 
endif.
S2-Y->A   = 100. 
S2-Y->*-A = 200. "Same as S2-Y->A  
S2-Y->B->FLDATE = SY-DATUM.
2) 对于使用DATA dref TYPE REF TO DATA来声明的数据参考变量,程序如果要访问数据参考变量指定的数据,你首先要将数据参考变量赋值给一个字段符号(Field sysbol)(是不能直接通过数据参考变量来访问的).如果数据参考变量为初始化状态, sy-subrc就返回4。
ASSIGN dref->* TO <fs> [CASTING ...].
代码样例
DATA: numref     TYPE REF TO DATA, 
      number     TYPE I VALUE 123. 
FIELD-SYMBOLS: <fs> TYPE ANY. 
GET REFERENCE OF number INTO numref. 
ASSIGN numref->* TO <fs>.
免费注册