申明:博客针对初级顾问
选择屏幕,比如查询报表,有时候需要根据用户选择动态隐藏筛选条件
如果仅仅是灰掉不可显示,直接 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:
s_bukrs FOR bsid-bukrs , " 公司代码
s_vkorg FOR vbak-vkorg , " 销售组织
s_fkdat FOR vbrk-fkdat , " 发票日期
s_kkber FOR vbrk-kkber , " 信贷范围
s_kunag FOR vbrk-kunag , " 售达方
s_gsber FOR vbrp-gsber , " 业务范围
s_gjahr FOR knc1-gjahr . " 会计年度
PARAMETERS:
p_budat TYPE bsid-budat , " 记账日期
p_span TYPE num1 . " 期间
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