BC400 Unit 7:User Dialogs
发布: 2009-10-11 16:49 | 作者: admin | 查看: 876次
Unit 7:User Dialogs
Lesson:Screen
屏幕(The Screen):

Figure 168: Features of Screens
一个屏幕除了包含带有输入输出字段的屏幕格式、按键以及其他元素之外,还具有处理逻辑。
因为ABAP字典与系统能够继承,所以可以为屏幕输入字段提供自动的一致性检查。这些检查包括类型检查(Type Check)、外关键字检查(Foreign Key)以及固定值检查(Fixed Value Check)。所有的这些检查都由ABAP字典的信息自动提供。
除了以上所列出的检查之外,我们还可以指定其他程序相关的检查作为补充。SAP提供了一些屏幕设计的工具,允许我们控制检查顺序,并且错误发生后,当条件合适时允许字段再次可以输入。
我们可以使用多种元素灵活设计屏幕格式,这些元素包括:输入字段、输出字段、单选按键(Radio Button)检查字段以及点击后执行程序功能的执行按键。
与列表(List)和选择屏幕(Selection)一样,屏幕(Screen)拥有同样的格式化功能:定点书和日期可依据用户主数据中的设置进行格式化;时间设置为hh:mm:ss;金额总数根据货币字段的内容进行格式化;而无力的长、高等特性则根据单元字段的内容进行格式化。

Figure 169: Screen Sequence
从原则上讲,有两种选择可以开始一个屏幕顺序(Screen Sequence):
· 在程序中使用CALL SCREEN语句调用地一个屏幕。
· 参考程序和第一个屏幕创建一个事务(Dialog Screen)。
在屏幕被处理之后,系统会开始执行一个静止的活动太的屏幕顺序。正式的下一个屏幕0会将处理权返回给屏幕调用或结束的会话事务。

Figure 170: Screens and Program Types
我们可以在以下程序类型中创建屏幕:
· 可执行程序(报表):在可执行程序中的屏幕是为了补充列表输出,并展示数据,或者完全替换列表输出。为了实现复用性和数据封装,我们不应该直接在报表中创建屏幕,而是在功能组中创建屏幕。
· 功能组:我们可在功能组中使用会话事务创建屏幕,或者在功能模块的源代码中使用CALL SCREEN语句开始屏幕。这使得我们可以使用一个已经创建的接口轻松使用一个屏幕或者屏幕顺序,以实现复用性。一般来讲,我们建议在功能组中创建屏幕。
· 模块池(Module Pool):模块池中的屏幕只能使用会话事务创建,与功能组中的屏幕不同,我们无法对模块池中的屏幕进行封装,并将其提供给已经定义好的外部接口。所以为了提高复用性,我们应该尽量避免在模块池中创建屏幕,而应该在功能组中创建。

Figure 171: Components of a Screen
每个屏幕具有以下组件:
· Properties(属性):一个4位数字的屏幕名,一个短文本、屏幕类型信息(例如,正常尺寸或全屏)、并且需指定下一个默认屏幕。
· Layout(格式):我们可以将输入/输出字段、文本、按键以及其他元素置入到我们的屏幕中,这些元素被称为屏幕元素(Screen Element)。
· Element List(元素列表):列出所有的屏幕元素,包括其属性,诸如位置、尺寸、数据类型等信息。
· Flow Logic(流逻辑):一个屏幕的流逻辑包含有PBO(Process Before Output输出前处理)和PAI(Process After Input输入后处理)。PBO所包含的处理块(PBO Module)是在输出屏幕前处理的,是为屏幕显示(比如数据选择)做准备。PAI所包含的处理块(PAI Module)是处理对用户输入和动作(比如数据保存)的反应。

Figure 172: Graphic Layout Editor
我们可以使用图形屏幕喷绘器(Graphical Screen Painter)设计屏幕格式,我们也可以使用系统提供的3个按键执行以下的维护功能。
· Maintain Element Attributes(维护元素属性):在一个对话框中,我们可以维护一个选中的屏幕元素的所有属性。
· Get Dictionary or Program Field(获取字典或程序字段):我们可以使用一个对话框,参考字典结构的字段或程序中定义的字段,创建一个新的屏幕字段。
· Show Element List(显示元素列表):显示所有可用的元素,包括其维护属性。

Figure 173: Application example
本例显示了一个程序包含了两个屏幕的先后顺序,用户在左侧的第一个屏幕选择航班,然后右侧的第二个屏幕会显示航班的具体信息。
屏幕顺序由一个会话事务开始,当用户点击左侧屏幕的Continue按键,系统会处理输入数据,并且从数据库中读出相应的数据,然后切换到第二个屏幕。
在第二个屏幕显示了具体的航班信息,如果用户选择Back键,则系统会返回到地一个屏幕,可以再次选择另外的航线。
如果用户选择Exit键,系统推出屏幕先后顺序,会话事务也被取消。

