DATA: BEGIN OF t_out2 OCCURS 0,
f001 TYPE f, f002 TYPE f, f003 TYPE f, f004 TYPE f,
avg1 TYPE f, avg2 TYPE f, avg3 TYPE f, avg4 TYPE f,
END OF t_out2.
DATA: BEGIN OF t_out OCCURS 0,
f001 TYPE f, f002 TYPE f, f003 TYPE f, f004(40) TYPE c,
END OF t_out.
FIELD-SYMBOLS: <fs>,<fs1>.
DATA: gv_avg(40),
t_avg(40).
DATA: gv_idx TYPE n.
t_out2-f001 = '80'.
t_out2-f002 = '60'.
t_out2-f003 = '50'.
APPEND t_out2.
t_out-f001 = '8'.
t_out-f002 = '6'.
t_out-f003 = '5'.
APPEND t_out.
LOOP AT t_out2.
DO 4 TIMES.
gv_idx = sy-index.
CONCATENATE 't_out2-f00'gv_idx INTO gv_avg.
ASSIGN (gv_avg) TO <fs>.
<fs> = <fs> / 2.
ENDDO.
MODIFY t_out2.
ENDLOOP.
LOOP AT t_out.
DO 4 TIMES.
gv_idx = sy-index.
CONCATENATE 't_out2-f00'gv_idx INTO gv_avg.
ASSIGN (gv_avg) TO <fs>.
CONCATENATE 't_out-f00'gv_idx INTO t_avg.
ASSIGN (t_avg) TO <fs1>.
<fs1> = <fs>.
MODIFY t_out.
ENDDO.
ENDLOOP.
IS BOUND:用于检查一个引用变量是否指向了一个有效的引用。帮助文档特意提到,如果一个引用指向的是一个栈上申请的变量,那么这个变量会随栈的销毁而被销毁,因此指向其的引用不再有效。
IS INITIAL: 用于检查一个变量的值是否为其数据类型对应的初始值。
比如我定义一个引用变量但不对其赋值,则IS INITIAL判断一定为abap_true.
IS ASSIGNED: 对于检测的field symbol,该关键字判断该field symbol是否分配有内存区域。