您的位置:首页 > 其它

ABAP 指针 FIELD-SYMBOLS

2015-10-12 11:01 429 查看
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>.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: