
ABAP 实现模块池程序
一、创建模块池程序及屏幕设计
至此,实现程序前整理了 TYPE-M 程序的概念。从现在开始试着创建TYPE-M 程序。整体布局如[图 13-13]所示。
二、创建GUISTATUS
GUISTATUS 存在三种类型,如[图13-14]所示。所有屏幕要追加拥有菜单栏、标准工具栏、应用工具栏,这些统称为GUISTATUS。其中最常用的应用工具栏已经在“第12章报表程序”的 12.5节中介绍。
1.应用程序工具栏
首先创建GUISTATUS,然后设置本节要学习的应用工具栏 如[图 13-15]所示,如果功能键为 SM31,则单击按钮时程序内部会自动执行LEAVE TO
TRANSACTIONSM31 语句,从而调用事务码并结束当前运行的程序。
2.功能键
功能键有两种,一种是创建屏幕时自带的标准工具栏中包含的功能键,另一种是由开发者追加的功能键。标准工具栏指的是SAP中存在的适用于所有屏幕的工具栏,如[图13-16所示。功能键如(F1)键、(Shif+F1)键一样是可用于快速访问的快捷键。
如[图13-17所示,功能键分为Reserved 功能键、Recommended 功能键和 Freely assigned功能键三种。Reserved,如F1(Help),F3(Back),F4(PossibleEntry),是已经预约的无法由开发者定义使用的功能键。其余两个按字面意思理解即可。为了追加用户退出程序的代码,在标准工具栏的三个基本按钮中分别设置功能键为BACK、EXIT和CANC。
3.菜单栏
在标准程序中自带的菜单栏之外还可设置需追加的菜单。构成如[图13-18]所示的菜单栏。利用便利的GUI环境很容易创建菜单栏,因而此处省略其使用方法。
以测试模式执行即可确认已创建的菜单栏,如[图13-19]所示。
三、实现 PBO 模块
1.PBO 模块实现及追加 GUISTATUS
PBO 模块在前面已说明,其主要执行初始化画面和修改屏幕要素的属性工作。下面做一个练习,第二阶段创建GUISTATUS,然后给Employee No字段分配一个 Group 名用于修改字段的属性。
2.实现 PBO 模块及修改输出专用属性
下面用代码将Employee No字段属性修改为输出专用(当然,利用布局编辑器的字段属性也可修改成输出专用)。 如[图13-20]所示,屏幕属性在TCODE:SE11的SCREEN 结构中确认。
<#INCLUDE 程序是?>
虽然经常使用 INCLUDE 程序,但没有几个人懂得其程序的正确含义。INCLUDE程序是存储在 R/3 Repository里的一个对象,是出于以下两个目的创建的。
Library(模块化)
INCLUDE 程序在多个不同程序中可以反复使用相同的代码。Order(顺序,可读性)
INCLUDE程序将复杂程序按顺序排列,确保程序的可读性。
INCLUDE 程序有以下几个特性。
INCLUDE 是程序,但无法独立执行。
INCLUDE程序需包含(built in)在其他程序中。
INCLUDE程可包含其他INCLUDE程序。
INCLUDE 程序不能调用自身。
INCLUDE 程序不带任何参数。
四、实现PAI模块
PAI模块是用户输入画面值后,按(Enter)键或单击画面上的按钮时触发的事件。
五、创建事务码
1.事务码类型
事务码(T-CODE)是执行程序的命令语句,是最终用户可以访问程序员开发的程序的-个快捷键。如[图 13-21]所示,T-CODE 类型大致可分为以下五种。
Dialog 事务码
Report 事务码
Object-Oriented 事务码
Variant 事码
Parameter 事务码
在 T-CODE:SE93 中可以创建/修改/査询事务码,且相应信息保存在表 TSTC/TSTCT 中。事务码的名字最多可定义到20位。
- Dialog 事务码: TYPE-M模块池程序中使用的事务码,与屏幕相连接。
- Report 事务码: TYPE-1报表程序中使用的事务码。
- Object-Oriented 事务码: 用事务码创建 ABAP 对象-类方法。
- Variant 事务码: 使用事务码变式(Transaction Variant)可以调节程序字段。可以将标准程序字段修改成查询模式。可以把标准程序字段修改成查询模式等操作。
- Parameter 事务码: 在执行事务码的屏幕字段上可以指定初始值。设置屏幕字段名和值,执行事务码,设置屏幕字段的初始值。
2.创建 Dialog 事务码
首先,创建TYPE-M程序Z1301的Dialog事务码。在对象导航器(ObjcctNavigator)选择程序,单击鼠标右键,则出现创建事务码的菜单。下面利用T-CODE:SE93
创建事务码。
3.Parameter 事务码
调用事务码时可以将屏幕字段名和值设置成参数进行传递。如[图13-22]所示,各自创建事务码进行测试。 Parameter事务码,除了初始化屏幕字段外,还用于调用维护视图。下面创建调用第7章生成的维护视图ZVMARA的事务码。
4. Input Check
在画面上输入 Imput 字段时,执行数据字段类型检验。
在 PAI模块中执行 Input Check(检验用户输入值)。使用下列语句执行Imput Check,是实际业务中最常使用的方法。
- 字段
<MODULE <mod>
.
可以限制用户输入的值,或者检查表中是否存在该值。另外,InputCheck以函数块形式存在,因此可追加很多功能并使用。 - 字段
<MODULE<mod>ON INPUT
当字段f的值与初始值不相同时触发模块 mod。
每个数据类型的初始值(Initial value)都不同。字符类型的初始值为space,而Numcric类型的初始值为0。详细信息请参考“第7章ABAP数据字典” - 字段
<PMODULE <mod> ON REOUEST
.
当字段f的值变更时触发模块 mod。
例如,当用户在字符型字段中输入空格后,按(Enter)键,即使不调用ONINPUT模块,也会调用 ONREOUEST 模块。