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

申明:博客针对初级顾问

选择屏幕,比如查询报表,有时候需要根据用户选择动态隐藏筛选条件
如果仅仅是灰掉不可显示,直接 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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值