*&---------------------------------------------------------------------**& Report Z_TEST_ASSIGN5*&---------------------------------------------------------------------**&*&---------------------------------------------------------------------*REPORT z_test_assign5.*&---------------------------------------------------------------------*TYPES:BEGINOF gty_data,
a TYPE i,
b TYPE c,
c TYPE c,ENDOF gty_data.DATA: gt_data TYPETABLEOF gty_data.DATA: gs_data TYPE gty_data.FIELD-SYMBOLS:<f1>TYPE sflight,<f2>TYPEANYTABLE,<f3>TYPE any,<f4>TYPE gty_data,<f5>TYPEREFTO data.APPENDVALUE #( a =1 b ='a' c ='c1')TO gt_data.APPENDVALUE #( a =1 b ='a' c ='c2')TO gt_data.
gs_data =VALUE #( a =1 b ='a').ASSIGN gt_data TO<f2>.DATA: index TYPE i.LOOPAT<f2>ASSIGNINGFIELD-SYMBOL(<fs>).cl_demo_output=>write(<fs>).ENDLOOP.cl_demo_output=>line().cl_demo_output=>write('第二次循环,使用AT NEW A,字段a及a左边的字段的值和上一行不一致时,就会执行代码 ').LOOPAT gt_data INTO gs_data.ATNEW a. "字段a及a左边的字段的值和上一行不一致时,就会执行代码
cl_demo_output=>write( gs_data ).ENDAT.ENDLOOP.cl_demo_output=>line().cl_demo_output=>write('第三次循环,使用AT END OF B,字段B及B左边的字段的值和下一行不一致时,就会执行代码').LOOPAT gt_data INTO gs_data.ATENDOFB. "字段a及a左边的字段的值和下一行不一致时,就会执行代码
cl_demo_output=>write( gs_data ).ENDAT.ENDLOOP.cl_demo_output=>display().WRITE:''.