ABAP 指针 FIELD-SYMBOLS

ABAP中也是存在指针的(指针说法可能欠缺,先这样说吧),为了区分和一般变量,指针用两个尖括号括起来(<fs>).指针用FIELD-SYMBOLS定义,然后要使用指针之前得用ASSIGN初始化,赋值。看一个例子,可以debug看。

REPORT ZTEST_POINTER.
DATA: num TYPE i VALUE 12.
FIELD-SYMBOLS: <F1>,
               <F2> TYPE I,
               <F3> like num.
ASSIGN: num  TO <F1>,   "assign 类似初始化的意思 如果指针没有经过assign就不能做其他操作。
        num  TO <F2>,
        <F1> TO <F3>.
* num  = <F1>.
*        num  = <F2>.
*        <F1> = <F3>.
WRITE: / <F1>,
       / <F2>,
       / <F3>.

<f3> = <f3> + 1.
WRITE: <f3>.
num = num + 12.
WRITE: / <F1>,
       / <F2>,
       / <F3>.

在第6行到第8行运行后,<f1>,<f2>,<f3>都指向了num地址,所以此时它们的值都是12.现在因为它们都指向了同一个地址(NUM),所以它们只有一个变化的话,它们也都一起变化。如<f3> = <f3> +1执行后,num,<f1>,<f2>,<f3>都变为13.再执行完num = num +12,之后num,<f1>,<f2>,<f3>都变为25.


指针还经常用在动态定义内表的时候,

  动态定义具有栏位结构的指针类型
    
       DATA: tabname TYPE tabname VALUE 'SFLIGHT' ,   

       <span style="white-space:pre">		</span>dref TYPE REF TO data.
        FIELD-SYMBOLS: <itab> TYPE ANY TABLE.    

        CREATE DATA dref TYPE TABLE OF (tabname).
        ASSIGN dref->* TO <itab>.
如下可定义表的行,其实也就是struct。
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
               <dyn_wa>,

DATA: dy_table TYPE REF TO data,
      dy_line  TYPE REF TO data.
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值