当前位置: 代码迷 >> 综合 >> 选择屏幕动态隐藏字段(SELECT-OPTIONS)_SAP刘梦_新浪博客
  详细解决方案

选择屏幕动态隐藏字段(SELECT-OPTIONS)_SAP刘梦_新浪博客

热度:6   发布时间:2024-01-18 14:26:40.0
申明:博客针对初级顾问

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

  相关解决方案