通过关于SCREEN的部分输入条件可隐藏的问题(一)的介绍,我想再做一下延伸
1.
实现根据输入SPFLI-CARRID的内容,决定是否把隐藏界面打开。比如carrid字段中有“AA”、“AZ”、“DL”等,如果输入“AA”的话,隐藏界面打开,否则不打开。通过如下代码实现:
REPORT ZT .
TABLES SPFLI.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TXT-001.
PARAMETERS S_CARRID TYPE SPFLI-CARRID.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 1(4) BUT1 USER-COMMAND BUTTON1 VISIBLE LENGTH 2.
SELECTION-SCREEN COMMENT 6(20) COM1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TXT-002.
SELECT-OPTIONS:S_CIFROM FOR SPFLI-CITYFROM MODIF ID AX,
S_CITYTO FOR SPFLI-CITYTO MODIF ID AX.
SELECTION-SCREEN END OF BLOCK B2 .
INITIALIZATION.
WRITE ICON_DATA_AREA_EXPAND AS ICON TO BUT1 .
COM1 = 'DATA EXPAND'.
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'BUTTON1'.
IF BUT1 = '@K1@' and s_carrid = 'AA'.
WRITE ICON_DATA_AREA_COLLAPSE AS ICON TO BUT1.
COM1 = 'DATA COLLAPSE'.
ELSE.
WRITE ICON_DATA_AREA_EXPAND AS ICON TO BUT1.
COM1 = 'DATA EXPAND'.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF BUT1 = '@K1@' AND SCREEN-GROUP1 = 'AX'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
我们看“IF BUT1 = '@K1@' and s_carrid = 'AA'”这段代码是关键的地方,这样写的话打开输入界面的时候,隐藏块只在“AA”的时候才可能点击出现。
2.
通过1的处理,实现按输入出现隐藏块。现在我还想实现“按输入的字段内容决定输入块的内容”。即:输入“AA”出现CITYFROM的隐藏块,输入“AZ”出现CITYTO的隐藏块,输入其它内容则不会出现隐藏块。
首先我需要再做一个块,然后在代码上做一下调整。
SCREEN-ACTIVE = 0.0表示隐藏,这点至关重要。
TYPE-POOLS ICON.
TABLES SPFLI.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TXT-001.
PARAMETERS S_CARRID TYPE SPFLI-CARRID.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 1(4) BUT1 USER-COMMAND BUTTON1 VISIBLE LENGTH 2.
SELECTION-SCREEN COMMENT 6(20) COM1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TXT-002.
SELECT-OPTIONS:S_CIFROM FOR SPFLI-CITYFROM MODIF ID AX.
SELECTION-SCREEN END OF BLOCK B2 .
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TXT-003.
SELECT-OPTIONS:S_CITYTO FOR SPFLI-CITYTO MODIF ID BX.
SELECTION-SCREEN END OF BLOCK B3 .
INITIALIZATION.
WRITE ICON_DATA_AREA_EXPAND AS ICON TO BUT1 .
COM1 = 'DATA EXPAND'.
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'BUTTON1'.
IF BUT1 = '@K1@' AND S_CARRID = 'AA'
OR BUT1 = '@K1@' AND S_CARRID = 'AZ'.
WRITE ICON_DATA_AREA_COLLAPSE AS ICON TO BUT1.
COM1 = 'DATA COLLAPSE'.
ELSE.
WRITE ICON_DATA_AREA_EXPAND AS ICON TO BUT1.
COM1 = 'DATA EXPAND'.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF BUT1 = '@K1@' AND SCREEN-GROUP1 = 'AX'
OR BUT1 = '@K1@' AND SCREEN-GROUP1 = 'BX'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
IF BUT1 = '@K2@' AND SCREEN-GROUP1 = 'AX' AND s_carrid = 'AZ'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
IF BUT1 = '@K2@' AND SCREEN-GROUP1 = 'BX' AND s_carrid = 'AA'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24345566/viewspace-1049533/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24345566/viewspace-1049533/