首先,在一个屏幕中所有的元素都默认存储在SCREEN内表中,我们通过循环该内表更改各个字段的值来控制元素的各个属性,SCREEN中的各个字段如下:
常用的属性有invisible(1-不可见,0-可见),Input(控制是否可输入),output(控制是否可输出),group1,用于对控件进行分组(在定义控件时)用ModIF ID来指定的值。
其次,要在选择屏幕的PBO事件(AT SELECTION-SCREEN OUTPUT)中根据我们的条件对screen事件进行设置。
代码如下:
SELECTION-SCREEN BEGIN OF BLOCK blc WITH FRAME TITLE text-006.
PARAMETERS:vis AS CHECKBOX DEFAULT 'x' USER-COMMAND vis,"为了触发PBO事件
out AS CHECKBOX DEFAULT 'x' USER-COMMAND out,
act AS CHECKBOX DEFAULT 'x' USER-COMMAND chc.
SELECTION-SCREEN END OF BLOCK blc.
SELECTION-SCREEN BEGIN OF BLOCK blc1 WITH FRAME TITLE text-007.
SELECTION-SCREEN COMMENT 2(5) text-001.
PARAMETERS:id LIKE zschool_132-zscode MODIF ID yy."给group1赋值,用于组控制
SELECTION-SCREEN COMMENT 40(5) text-002.
PARAMETERS:address LIKE zschool_132-zaddress MODIF ID tt.
PARAMETERS:r1 RADIOBUTTON GROUP g1 MODIF ID ss,
r2 RADIOBUTTON GROUP g1 MODIF ID ss,
r3 RADIOBUTTON GROUP g1 MODIF ID ss.
SELECTION-SCREEN END OF BLOCK blc1.
AT SELECTION-SCREEN OUTPUT."the pbo event
LOOP AT SCREEN.
IF out IS INITIAL.
IF screen-group1 = 'YY'.
screen-input = 0.
ENDIF.
ENDIF.
IF vis IS INITIAL.
IF screen-group1 = 'SS'.
screen-invisible = 1.
ENDIF.
ENDIF.
IF act IS INITIAL.
IF screen-group1 = 'TT'.
screen-active = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
message s000(ss) with 'Nodata'.
OK
转载于:https://blog.51cto.com/saper/690733