Skip to content
关注公众号,可咨询工作中遇到的问题、获取学习资料、掌握行业资讯

ABAP 屏幕

一、介绍

  屏幕指的是 SAPGUI上显示的所有画面,前面做过的很多练习都涉及屏幕。它是用于与用户相互交涉的创建、查询数据的工作领域。
  它不仅在 TYPE-M 程序中使用,在 TYPE-1、TYPE-F 程序中也在使用。如[图13-2]所示屏幕由输入/输出字段与逻辑流(FlowLogic)等组成。
alt text

  屏幕逻辑流分为PBO(Process Before Output)PAI(Process After Input)事件。PBO事件是显示画面之前执行的事件,相反PAI事件是画面上发生用户事件之后执行的事件。从字面上不难理解,但在实际程序中最容易混淆的就是PBO与PAI这两部分。其他语言中不存在类似于 PBO、PAI 等画面逻辑,因此读者会感到更加生疏。为了理解这些概念,有必要借助于相关资料及菜单,但更重要的是需要读者自己通过实践来理解。
  [图13-3]说明了GU状态和 ABAP 程序之间显示屏幕的位置。作为动态程序,屏幕可拥有自带的数据对象,称为屏幕字段。 alt text   显示屏幕或者结束用户动作后,具有同名的屏幕字段与ABAP程序的数据对象之间会发生数据复制操作。调用PAI事件后程序内部自动执行这一操作。屏幕上存在GUISTATUS,其中包含菜单栏、标准工具栏、应用工具栏。利用菜单编辑器生成GUISTATUS,然后在 ABAP程序中利用SETPF-STATUS语动态分配到屏幕上。详细内容在17.3.2节中将再次讲解。屏幕构成要素如[图13-41所示,分为四个部分。 alt text

二、屏幕属性

  屏幕由屏幕字段组成。当激活屏幕时会直接用屏幕编辑器中定义的字段名。即这些屏幕字段只是在屏幕上与输入/输出字段相连接,但并不代表它们是同一个对象。只有显示屏幕或发生用户事件后,同名的屏幕字段和ABAP程序的数据对象之间有数据传递。序号为1000至1010之间的屏幕由标准SELECTION SCREENABAP Dictionary Maintenance 所占用。建议SAPCustomer使用编号9000以上的屏幕,但在实际业务中以100为单位区分使用。[图13-5]显示的是屏幕属性。各项目的详细内容请参见[表13-1]。 alt textalt text   创建ABAP程序时使用ABAP编辑器(T-CODE:SE38),同样,创建/维护屏幕时可使用屏幕编辑器(T-CDDE:SE51)。这样,在对象导航器(T-CODE:SE80)中选择屏幕时会自动与屏幕编辑器T-CODE相连接。对象导航器集中式管理与ABAP工作区相关的所有T-CODE。在一个画面上提供可执行多个作业的开发环境,如[图13-6]所示。

三、屏幕构成要素

  屏幕不仅具有上述的属性,还有诸如输入/输出字段等构成要素。屏幕构成要素不仅有显示数据的功能,还有可与用户对话(UserDialog)的窗口功能。例如输入字段值或单击按的行为等功能。[图13-6]是设计画面时用的画面布局编辑器(GraphicalLayout Editor)。关于左边按钮的说明请参照[表 13-2]。画面布局为用户提供使用工具栏方便快捷地设计画面的GUI环境。 alt text   所有屏幕的构成要素默认地设置基本属性。基本属性以外的事项可通过屏幕编辑器进行修改。屏幕编辑器可以完成屏幕要素的布局、排序等功能。在屏幕编辑器中静态定义的属性可在 ABAP 程序代码中动态重复实现。即使在屏幕编辑器中已定义属性,在程序执行时会变成ABAP程序中定义的属性。

四、屏幕字段

  屏幕字段即是屏幕的工作领域内存中存在的字段。当程序运行时无法确定屏幕构成要素字段值其属于静态值,但可以将用户输入的值存储到内存中并显示。即知道屏幕字段概念才能根据输入的值进行编码。屏幕字段通常称为dynpros(dynamic program)。作为屏幕工作领域(内存)中存在的字段,在触发PAI事件之前将值传递给ABAP程序中同名的字段(复制)。另外,当触发 PBO 事件时重新从同名的ABAP程序字段中复制过来。当然,要实现上述传值过程,屏幕字段名必须是唯一的,在ABAP程序中也要以相同名字定义。在这种环境下通过 PBO/PAI传递屏幕字段与 ABAP之间的数据。
  下例中通过屏幕编辑器创建了100画面,追加了TEXT和NUMBER两个INPUT字段和TEXT字段。[图13-7]的屏幕构成要素字段在[图13-8]ABAP程序区域中定义其属性,[图13-9]屏幕字段区域中的字段属性参照ABAP程序领域中定义的数字类型与长度(或者ABAP数据字典)。屏幕编辑器中创建的屏幕字段与同名的字段连接在一起。 alt text   在画面上执行用户单击按钮等事件时,OKCODE上会保存其值。[图13-9]是尚未输入OK CODE名字的状态。一个块池中存在多个屏幕,每个屏幕均需指定一个OK CODE。 alt text

四、屏逻辑流

  屏幕逻辑流显示屏幕执行的步骤。屏幕逻辑流在与ABAP编辑器相似的编辑器中进行记述在屏幕逻辑流中使用的语法跟ABAP相似,但不是同一个ABAP语言,此种语言也称为屏幕语言。此语言与 ABAP语言的最大不同点在于其不存在明确的数据定义部分,确切地说,不是不存在而是在构成屏幕要素时被定义。但其拥有流程块(ProcessingBlock),这一点与 ABAP 很相似。如[图 13-10]所示,屏幕逻辑流有4个事件块,且已经用关键字定义完整。[表 13-3]中说明了每个事件的功能。PROCESS BEFORE OUTPUT、PROCESS AFTERINPUT是必须使用的事件。 alt textalt text   各个流程块由模块(Module)功能组成,因此TYPE-M程序也叫模块池程序。屏幕逻辑流中使用的关键字如[表 13-4]所示。 alt text   显示画面时,首先执行PBO模块 A、B。此时 ABAP 程序区域的数据传到屏幕区域后显示画面,然后在屏幕上用户触发一种事件时会执行PAI的C、D模块后再重新执行PBO,从而重新显示屏幕。 alt text   [图13-12]说明从一个屏幕调用其他屏幕时调用PBO和PAI的顺序。 alt text