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

ABAP 实现模块池程序

一、创建模块池程序及屏幕设计

  至此,实现程序前整理了 TYPE-M 程序的概念。从现在开始试着创建TYPE-M 程序。整体布局如[图 13-13]所示。 alt textalt text

二、创建GUISTATUS

  GUISTATUS 存在三种类型,如[图13-14]所示。所有屏幕要追加拥有菜单栏、标准工具栏、应用工具栏,这些统称为GUISTATUS。其中最常用的应用工具栏已经在“第12章报表程序”的 12.5节中介绍。 alt text

1.应用程序工具栏

首先创建GUISTATUS,然后设置本节要学习的应用工具栏 alt textalt text 如[图 13-15]所示,如果功能键为 SM31,则单击按钮时程序内部会自动执行LEAVE TO alt text TRANSACTIONSM31 语句,从而调用事务码并结束当前运行的程序。

2.功能键

  功能键有两种,一种是创建屏幕时自带的标准工具栏中包含的功能键,另一种是由开发者追加的功能键。标准工具栏指的是SAP中存在的适用于所有屏幕的工具栏,如[图13-16所示。功能键如(F1)键、(Shif+F1)键一样是可用于快速访问的快捷键。 alt text

  如[图13-17所示,功能键分为Reserved 功能键、Recommended 功能键和 Freely assigned功能键三种。Reserved,如F1(Help),F3(Back),F4(PossibleEntry),是已经预约的无法由开发者定义使用的功能键。其余两个按字面意思理解即可。为了追加用户退出程序的代码,在标准工具栏的三个基本按钮中分别设置功能键为BACK、EXIT和CANC。 alt text

3.菜单栏

在标准程序中自带的菜单栏之外还可设置需追加的菜单。构成如[图13-18]所示的菜单栏。利用便利的GUI环境很容易创建菜单栏,因而此处省略其使用方法。
  以测试模式执行即可确认已创建的菜单栏,如[图13-19]所示。
alt text

三、实现 PBO 模块

1.PBO 模块实现及追加 GUISTATUS

  PBO 模块在前面已说明,其主要执行初始化画面和修改屏幕要素的属性工作。下面做一个练习,第二阶段创建GUISTATUS,然后给Employee No字段分配一个 Group 名用于修改字段的属性。 alt text

2.实现 PBO 模块及修改输出专用属性

  下面用代码将Employee No字段属性修改为输出专用(当然,利用布局编辑器的字段属性也可修改成输出专用)。 alt textalt textalt textalt textalt textalt text   如[图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)键或单击画面上的按钮时触发的事件。 alt text

五、创建事务码

1.事务码类型

  事务码(T-CODE)是执行程序的命令语句,是最终用户可以访问程序员开发的程序的-个快捷键。如[图 13-21]所示,T-CODE 类型大致可分为以下五种。

Dialog 事务码
Report 事务码
Object-Oriented 事务码
Variant 事码
Parameter 事务码

  在 T-CODE:SE93 中可以创建/修改/査询事务码,且相应信息保存在表 TSTC/TSTCT 中。事务码的名字最多可定义到20位。 alt text

  1. Dialog 事务码: TYPE-M模块池程序中使用的事务码,与屏幕相连接。
  2. Report 事务码: TYPE-1报表程序中使用的事务码。
  3. Object-Oriented 事务码: 用事务码创建 ABAP 对象-类方法。
  4. Variant 事务码: 使用事务码变式(Transaction Variant)可以调节程序字段。可以将标准程序字段修改成查询模式。可以把标准程序字段修改成查询模式等操作。
  5. Parameter 事务码: 在执行事务码的屏幕字段上可以指定初始值。设置屏幕字段名和值,执行事务码,设置屏幕字段的初始值。

2.创建 Dialog 事务码

  首先,创建TYPE-M程序Z1301的Dialog事务码。在对象导航器(ObjcctNavigator)选择程序,单击鼠标右键,则出现创建事务码的菜单。下面利用T-CODE:SE93 创建事务码。 alt text

3.Parameter 事务码

  调用事务码时可以将屏幕字段名和值设置成参数进行传递。如[图13-22]所示,各自创建事务码进行测试。 alt text   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 模块。