FIELD-SYMBOLS定义出来的指针。这类指针的赋值是通过指针指向定义变量/内表的内存地址
*来完成指针的赋值。如 ASSIGN spfli_wa TO <wa>.
*下面几个是标准的例子,大家调试调试,看看效果是否能明白指针的含义
*-----------------例1
DATA spfli_wa TYPE spfli.
FIELD-SYMBOLS: <wa> TYPE ANY,
<comp> TYPE ANY.
**把变量spfli_wa的内存地址 赋值给<wa>
ASSIGN spfli_wa TO <wa>.
SELECT SINGLE *
FROM spfli
INTO spfli_wa.
WHILE sy-subrc = 0.
"把结构spfli_wa中的部分组件赋值给<comp>
ASSIGN COMPONENT sy-index OF STRUCTURE spfli_wa TO <comp>.
WRITE / <comp>.
ENDWHILE.
*------------------例2
DATA text TYPE c LENGTH 10 VALUE '0123456789'.
FIELD-SYMBOLS <char> TYPE ANY .
DATA off TYPE i.
DO 10 TIMES.
off = sy-index - 1.
ASSIGN text+off(1) TO <char>.
WRITE / <char>.
ENDDO.
*------------------例3
DATA factor TYPE p DECIMALS 0.
DATA pack TYPE p DECIMALS 0 VALUE '12345678'.
FIELD-SYMBOLS <pack> TYPE p.
DO 8 TIMES.
ASSIGN pack TO <pack> CASTING DECIMALS sy-index.
factor = pack / <pack>.
WRITE / factor.
ENDDO.
*------------------例4
FIELD-SYMBOLS: <fs1> TYPE ANY,
<fs2> TYPE ANY.
ASSIGN text+3(3) TO <fs1>.
DO 8 TIMES.
ASSIGN <fs1>(sy-index) TO <fs2>.
IF <fs2> IS ASSIGNED.
WRITE / <fs2>.
ENDIF.
ENDDO.
**--------------------
DATA gt_tab TYPE STANDARD TABLE OF spfli .
FIELD-SYMBOLS: <gt> TYPE ANY TABLE.
SELECT *
FROM spfli
INTO TABLE gt_tab.
ASSIGN gt_tab TO <gt>.
IF <gt> IS ASSIGNED .
LOOP AT <gt> INTO spfli_wa.
ENDLOOP.
ENDIF.
该贴已经同步到 SAPOK_ABAP的微博