ABAP 指针 FIELD-SYMBOLS

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

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

 =  + 1.
WRITE: .
num = num + 12.
WRITE: / ,
       / ,
       / .

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


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

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

       		dref TYPE REF TO data.
        FIELD-SYMBOLS:  TYPE ANY TABLE.    

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

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






你可能感兴趣的:(ABAP,abap,FIELD-SYMBOLS,abap指针,ASSIGN,动态内表)