您的位置:首页 > 运维架构

选择屏幕动态隐藏字段(SELECT-OPT…

2014-08-14 13:31 309 查看
申明:博客针对初级顾问

选择屏幕,比如查询报表,有时候需要根据用户选择动态隐藏筛选条件
如果仅仅是灰掉不可显示,直接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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: