对话框编程教程:SAP ABAP 中的模块池

SAP-ABAP 支持两种类型的程序——报表程序和对话程序。

如果您的 ABAP 程序需要用户输入,则使用对话编程。

在本教程中,您将学习

用户对话是用户与程序之间任何形式的交互,可以是以下任何一种

  • 输入数据
  • 选择菜单项
  • 点击按钮
  • 单击或双击条目

当我们需要在屏幕之间来回导航时,也会使用对话程序

对话程序以“M”类型创建——模块池。它们不能独立执行,并且必须至少附加到一个事务代码,在该代码中您指定一个初始屏幕。

报表程序和对话程序之间的区别

Difference between Report and Dialog Programs

报表程序

报表是一个程序,通常读取和分析数据库表中的数据,而无需更改数据库

对话程序

对话程序允许您与系统进行交互,并更改数据库表的内容。每个对话程序都有一系列屏幕,系统会逐一处理。

对话编程中的示例事务处理

A Sample transaction processing

对话程序的组件

与通常需要创建一个可以独立于其他对象执行的自主程序的报表不同,对话程序开发需要开发多个对象,这些对象都不能独立执行。相反,所有对象都以层次结构链接到主程序,并按照对话主程序指定的顺序执行

对话程序的组件是

事务代码

  • 事务代码启动一个屏幕序列。
  • 您可以在 ABAP Workbench 中的存储库浏览器中或使用事务 SE93 创建事务代码。
  • 事务代码链接到一个 ABAP 程序和一个初始屏幕。
  • 您可以使用 CALL SCREEN 语句从任何 ABAP 程序启动屏幕序列。

屏幕

  • SAP 系统中的每个对话都由一个或多个屏幕控制。
  • 您可以使用 ABAP Workbench 中的屏幕画板通过事务 SE51 创建屏幕
  • 每个屏幕都属于一个ABAP 程序
  • 这些屏幕由“屏幕掩码”或“布局”及其流逻辑组成。屏幕有一个布局,它决定了输入/输出字段和其他图形元素(如复选框和单选按钮)的位置。流逻辑决定了屏幕内的逻辑处理。

GUI 状态

  • 每个屏幕都具有 GUI 状态,它们是程序的独立组件。
  • 这控制菜单栏、标准工具栏、应用程序工具栏,用户可以通过它们在应用程序中选择功能。
  • 您可以使用菜单画板在 ABAP Workbench 中创建它们。

ABAP 程序

  • R/3 系统中的每个屏幕和 GUI 状态都属于一个 ABAP 程序。
  • ABAP 程序包含由屏幕流逻辑调用的对话模块,并处理来自 GUI 状态的用户输入。
  • 使用屏幕的 ABAP 程序也称为对话程序。
  • 在模块池(M 类型程序)中;第一个被调用的处理块总是对话模块。但是,您也可以在其他 ABAP 程序(例如可执行程序或函数模块)中使用屏幕。第一个处理块的调用方式不同;例如,通过运行时环境或过程调用。然后使用 CALL SCREEN 语句启动屏幕序列。

屏幕流逻辑

屏幕流逻辑主要分为四个组件。

  • 输出前处理 (PBO) 事件:在屏幕显示之前处理
  • 输入后处理 (PAI) 事件:在用户对屏幕执行操作后处理
  • 帮助请求处理 (POH):按下 F1 时处理
  • 值请求处理 (POV):按下 F4 时处理

动态程序 (Dynpro)

  • 屏幕及其流逻辑被称为 Dynpro(“动态程序”,因为屏幕流逻辑影响程序流)
  • 每个 Dynpro 精确控制您对话程序的一个步骤。
  • 属于某个程序的屏幕是编号的。屏幕流序列可以是线性或循环的。在屏幕链中,您甚至可以调用另一个屏幕链,并在处理后返回原始链。您还可以从 ABAP 程序的对话模块中覆盖静态定义的下一个屏幕。

ABAP 模块池

  • 在 PBO 或 PAI 事件上,Dynpro 调用 ABAP 对话程序。此类程序的集合称为 ABAP 模块池。
  • 例如,在 PAI 事件中调用的模块用于检查用户输入并触发适当的对话步骤,例如更新任务。
  • 一个事务中调用的所有 Dynpro 都引用一个公共模块池。

对话程序的结构

Structure of a Dialog Program

对话程序的处理流程

Process Flow for a Dialog Program