1.
开发report中screen都要输入一些诸如“年度”或“公司代码”的条件,有时候为了屏幕的简洁美观,需要把一些输入条件隐藏起来,操作用户根据需要或输入的条件决定是否打开隐藏的界面。怎么办?
我在开发过程中特别需要这个隐藏界面,所以就找了些资料,总结一下。
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/