在DIALOG中循环屏幕可以分两种。
若不是表控制类型的,就和常规的循环屏幕是一样的。LOOP SCREEN ....MODIFY SCREEN ENDLOOP.
若是表控制类型的,又可以再分两种来做。
若是对表中某一列实现相同的控制,可以用到类似代码:
LOOP AT CONTROL200-COLS INTO SCREENCOL.
SCREENCOL-SCREEN-INPUT = '0'.
MODIFY CONTROL200-COLS FROM SCREENCOL INDEX SY-TABIX.
ENDLOOP.
其中CONTROL200是表控制内表,它不带工作区,要自己定义一个,CONTROL200-COLS 包含了几个字段哦,也就是CONTROL200是一个嵌套的表。
若要控制到表中的一个单元格,要在表循环中对当前行进行控制,要再结合其他的条件。
LOOP AT IT_ISFDATA WITH CONTROL CONTROL200
CURSOR CONTROL200-CURRENT_LINE.
MODULE INPUT_CHECK.
ENDLOOP.
MODULE INPUT_CHECK OUTPUT.
CASE SSFLAG.
CHECK IT_ISFDATA-SEND_FLAG = 'N'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'SC1'.
SCREEN-INPUT = '1'.
ELSE.
SCREEN-INPUT = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE.