ITPub博客

首页 > 应用开发 > IT综合 > 关于SCREEN的部分输入条件可隐藏的问题(一)

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

原创 IT综合 作者:lha2010 时间:2011-05-05 15:27:54 0 删除 编辑

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博客 ” ,链接:https://blog.itpub.net/24345566/viewspace-1049479/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-03-16

  • 博文量
    18
  • 访问量
    17861