首先,在一个屏幕中所有的元素都默认存储在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