申明:博客针对初级顾问
选择屏幕,比如查询报表,有时候需要根据用户选择动态隐藏筛选条件
如果仅仅是灰掉不可显示,直接screen-input = 0.就行,(1可编辑0不可编辑)
如果需要不显示,screen-invisible = '1'.
如果使用了SELECT-OPTIONS:而且没有设置NO-EXTENSION
后面会多出一个选择值的按钮来。
其实想去掉很简单,直接debug看这个对应的名称就行了。
一般前面lab页签是 %_定义字段名称_%_APP_%-TEXT
后面的值选择按钮是 '%_定义字段名称_%_APP_%-VALU_PUSH'
案例如下:
TABLES: bsid,vbak,vbrk,vbrp,knc1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE
text-001.
PARAMETERS p_r RADIOBUTTON GROUP g1
USER-COMMAND select DEFAULT 'X'. "日模式
PARAMETERS p_y RADIOBUTTON GROUP g1
.
"月模式
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t1 .
SELECT-OPTIONS:
PARAMETERS:
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN OUTPUT .
PERFORM frm_modify_screen.
START-OF-SELECTION.
FORM frm_modify_screen .
LOOP AT SCREEN.
IF p_r IS NOT INITIAL. "如果是日模式,隐藏会计年底和期间
t1 = text-002.
IF screen-name = 'S_GJAHR' OR
screen-name = 'P_SPAN' OR
screen-name = '%_P_SPAN_%_APP_%-TEXT'.
CLEAR p_span.
CLEAR s_gjahr[].
screen-input = 0.
screen-invisible = '1'.
ENDIF.
ELSE. "如果是月模式,隐藏业务范围和记账日期
t1 = text-003.
IF screen-name = 'S_GSBER-LOW'
OR screen-name = 'P_BUDAT'
OR screen-name = 'S_GSBER-HIGH'
OR screen-name = '%_S_GSBER_%_APP_%-TEXT' "前面描述 lab签
OR screen-name = '%_S_GSBER_%_APP_%-VALU_PUSH' "select options 后面的值选择按钮
OR screen-name = '%_P_BUDAT_%_APP_%-TEXT'.
CLEAR p_budat.
CLEAR s_gsber[].
screen-active = '1'.
screen-invisible = '1'.
screen-input = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. " FRM_MODIFY_SCREEN
ENDFORM.