SAP ABAP 对话框编程教程:中的模块池-09
SAP-ABAP 支持两种类型的程序 – 报告程序和对话程序。
如果您的 ABAP 程序需要用户输入 ,则使用对话框编程。
在本教程中,您将学习:
- 报表程序和对话程序之间的区别
- 对话框编程中的事务处理示例
- 对话程序的组件
用户对话是用户与程序之间任何形式的交互,可以是以下任何一种
- 输入数据
- 选择菜单项
- 单击按钮
- 单击或双击条目
当我们需要在屏幕之间来回导航时,也会使用对话框程序
对话程序的创建类型为“M” – 模块池。它们不能独立执行,并且必须附加到至少一个事务代码,您可以在其中指定初始屏幕。
报表程序和对话程序之间的区别
报告程序:
报表是一种程序,它通常在不更改数据库的情况下读取和分析数据库表中的数据。
对话程序:
对话程序允许您以交互方式与系统一起工作,并更改数据库表的内容。每个对话程序都有一定的顺序,这些屏幕由系统逐个处理。
对话框编程中的事务处理示例
对话程序的组件
与通常需要创建一个可以独立于其他对象执行的自治程序的报告不同,对话程序开发需要开发多个对象,其中没有一个可以单独执行。 相反,所有对象都分层链接到主程序,并按对话框主程序指示的顺序执行。
对话程序的组件包括:
交易代码
- 交易代码启动屏幕序列。
- 您可以在 ABAP 工作台的存储库浏览器中或使用事务 SE93 创建事务代码。
- 交易代码链接到 ABAP 程序和初始屏幕。
- 您可以使用 CALL SCREEN 语句从任何 ABAP 程序启动屏幕序列。
屏幕
- SAP 系统中的每个对话框都由一个或多个屏幕控制。
- 通过事务 SE51,使用 ABAP 工作台中的屏幕刷创建屏幕
- 每个屏幕都属于一个 ABAP 程序。
- 这些屏幕由“屏幕掩码”或“布局”及其流逻辑组成。屏幕的布局确定输入/输出字段和其他图形元素(如复选框和单选按钮)的位置。流逻辑确定屏幕内的逻辑处理。
图形用户界面状态
- 每个屏幕都有一个GUI状态,它们是程序的独立组件。
- 这将控制菜单栏,标准工具栏,应用程序工具栏 ,用户可以使用它们选择应用程序中的功能。
- 您可以使用菜单刷在 ABAP 工作台中创建它们。
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 都引用一个公共模块池。
对话程序的结构
对话程序的流程
参考:https://www.guru99.com/dialog-programming-tutorial.html