REPORT zdemo_0006.
 *声明一个结构
 DATA: BEGIN OF gs_alv,
         va1 TYPE char2,
         va2 TYPE char2,
         va3 TYPE char2,
         va4 TYPE char2,
       END OF gs_alv.
 *声明内表
 DATA: gt_alv LIKE TABLE OF gs_alv.
 *赋值宏
 DEFINE append_va.
   gs_alv-va1 = &1.
   gs_alv-va2 = &2.
   gs_alv-va3 = &3.
   gs_alv-va4 = &4.
   APPEND gs_alv TO gt_alv.
   CLEAR gs_alv.
 END-OF-DEFINITION.
 *给内表赋值
 append_va '11' '11' '11' '11'.
 append_va '11' '11' '11' '22'.
 append_va '22' '11' '11' '33'.
 append_va '11' '22' '33' '44'.
 *输出表内容:
 LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_alv1>).
   WRITE:/1 <fs_alv1>-va1,5 <fs_alv1>-va2,9 <fs_alv1>-va3,13 <fs_alv1>-va4.
 ENDLOOP.
 *遍历内表,测试on change of 。。。。endon语句,输出触发的那一行
 WRITE:/ sy-uline.
 WRITE:/'on change of'.
 LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_02>).
   ON CHANGE OF <fs_02>-va3.
     WRITE:/1 <fs_02>-va1,5 <fs_02>-va2,9 <fs_02>-va3,13 <fs_02>-va4.
   ENDON.
 ENDLOOP.
 WRITE:/ sy-uline.
 WRITE:/'AT NEW '.
 LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_01>).
   AT NEW va3.
     WRITE:/1 <fs_01>-va1,5 <fs_01>-va2,9 <fs_01>-va3,13 <fs_01>-va4.
   ENDAT.
 ENDLOOP.
 WRITE:/ sy-uline.
 WRITE:/'AT END OF '.
 LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_03>).
   AT END OF va3.
     WRITE:/1 <fs_03>-va1,5 <fs_03>-va2,9 <fs_03>-va3,13 <fs_03>-va4.
   ENDAT.
 ENDLOOP.