2011-11-17 80 views
2

禁用参数输入我在选择屏幕屏幕过滤器这样ABAP - 在选择屏幕

SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME. 
PARAMETERS s_werks like resb-werks DEFAULT 'X' . 

SELECT-OPTIONS: 

    s_aufnr FOR in_param-aufnr, 
    s_matnr FOR in_param-matnr, 
    s_bldat FOR in_param-bldat. 
SELECTION-SCREEN END OF BLOCK a. 

,我想仅禁用文本框/参数(s_werks),但选择选项没有参数。

我想禁用它,因为它会是从桌上摆满精确值取决于SY-UNAME :)

我如何处理呢?

回答

9

您可以使用OUTPUT选择屏幕事件。 添加以下代码:

AT SELECTION-SCREEN OUTPUT. 
    LOOP AT SCREEN. 
    IF screen-name = 'S_WERKS'. 
     screen-input = 0. 
     MODIFY SCREEN. 
    ENDIF. 
    ENDLOOP. 

此屏幕元件改变input0将禁用输入和使输入字段显示为变灰。

1

您可以用no-display定义参数不可移动。

parameters: 
    s_visib like resb-werks default 'X', 
    s_werks like resb-werks default 'X' no-display. 

当你想定义可见性动态时,René的解决方案是有用的。