关于SCREEN的部分输入条件可隐藏的问题(一)

1.

开发reportscreen都要输入一些诸如“年度”或“公司代码”的条件,有时候为了屏幕的简洁美观,需要把一些输入条件隐藏起来,操作用户根据需要或输入的条件决定是否打开隐藏的界面。怎么办?

我在开发过程中特别需要这个隐藏界面,所以就找了些资料,总结一下。

2.

把下面的代码记住,就可以实现。

REPORT ZT.

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,

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@'.

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.

3.

详细注释

*定义类型池

TYPE-POOLS ICON.

*定义表,只需定义声明的输入字段即可

TABLES SPFLI.

*定义第一个块B1

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TXT-001.

*上面这个txt-001是块的标题,可有可无,须通过GOTO实现文本

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.

*定义第二个块B2,这个块在默认状态为隐藏(是否隐藏可以通过“隐藏”的BUT1 = '@K1@'或“不隐藏”的BUT1 = '@K2@实现)

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TXT-002.

*标注ID,ID识别直接导致隐藏块的输出字段

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@'.

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.

4.很多screen的操作在ABAPDOCU中都有举例,很详细的,每次我看的时候总能受一些启发,然后马上应用到实际中。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24345566/viewspace-1049479/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24345566/viewspace-1049479/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值