abapdata定义方法_ABAP Data Reference的使用 | 学步园

原贴地址: http://tech.it168.com/a2009/0715/606/000000606692.shtml

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->PAYMENTSUM = 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 [CASTING ...].

代码样例

DATA: numref     TYPE REF TO DATA,

number     TYPE I VALUE 123.

FIELD-SYMBOLS: TYPE ANY.

GET REFERENCE OF number INTO numref.

ASSIGN numref->* TO .

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值