原贴地址:http://scnblogs.techweb.com.cn/abaplv/archives/25.html
Gui status是由menu bar standard toolbar-application toolbar和function key settings组成的,每个screen都可以有一个或多个gui statuses。System和Help menu存在于SAP中的任何一个screen。Application toolbar用来存放screen中常用的功能,standard tool bar在SAP系统中的每个屏幕都一样。如果在screen中standard toolbar的功能不可用那么它icon就会以灰色显示。Gui title和status组成了用户界面,当你添加一个新的gui title或status,你必须重新生成用户界面。
可以通过三种方式来创建title:
l From the object list in the object navigator
l From the menu painter
l By forward navigation –from the ABAP editor
Title的最大程度为20个character。
可以通过place holder &在title中加入变量,一个title中最多可以设置9个变量。语句如下:
SET TITLEBAR <title_name> WITH <&1>,…<&9>
当前的title bar存储在sy-title中。
从技术角度来讲,一个status是指向menu bar certain key assignments和application toolbar的指针。一个单独的组件(比如一个menu bar)可以被不止一个GUI status使用。GUI status是ABAP PROGRAM objects用于screen和list。通过key setting你可以把特定的function分配给function keys和pushbuttons。Key settings有几种不同的类型:screen,dialog box,和list in dialog box。你可以把functions分配给reserved function keys,recommended function keys和freely assigned function keys。Reserved function keys显示在screens或list的standard toolbar上。如果function分配给了一个function key你还可以把它分配到application toolbar的一个button上,application toolbar上最多能放35个button。如果你把function分配给了一个standard toolbar,它就会自动被分配给一个reserved function key。只有你给function分配了function key之后你才可以在application toolbar上显示这个function。在menu painter中可以通过edit->insert->separator line在application toolbar的button之间插入separator。Menu entry可以是function,separator或者另外一个menu。同application toolbar也可以在menu中插入separator。要创建submenu只要在右边字段中输入名字即可。为了保持一致性,你应该复用已存在的 menu bars,application settings和key settings。Menu painter管理这些链接,以便保证一处改动其他地方都能够体现。你也可以使用standard menu entries然后修改它。当你为standard toolbar的reserved functions分配function时应当与SAP System functions保持一致。在menu painter中你可以include已存在的key settings, application toolbars或者menu bars。如果要这么做的话应当按照从下往上的顺序定义。初始情况下所有的function都是inactive的,只应当activate相关的 function。当你创建一个新的function时候你可以决定其他status用到这个function是否同样也被改变,它的初始状态是 inactive的。如果用户通过button, menu或function key触发了一个function,function code就会填入到OK_CODE中。为了避免不可预料的processing step,应当初始化同名的ok_code字段。通常使用的方法如下:MODULE save_ok INPUT.
Save_ok = ok_code.
CLEAR ok_code.
ENDMODULE.