ABAP事件块详解.docx
《ABAP事件块详解.docx》由会员分享,可在线阅读,更多相关《ABAP事件块详解.docx(29页珍藏版)》请在三一办公上搜索。
1、ABAP事件块详解 第四章 通过事件控 制 ABAP/4 程序流 概览 内容 定义过程块 . ABAP/4 处理程序 . 事件及其事件关键字 . INITIALIZATION . AT SELECTION-SCREEN . START-OF-SELECTION . GET . GET LATE . END-OF-SELECTION. 终止过程块 . 无条件地离 开过程块 . 有条件地离 开过程块 . 无条件地离 开 GET 事件 . 有条件地离 开 GET 事件 . ABAP/4 是事件驱动 语言。这意味着通过外部事件控制 一般的 ABAP/4 程序流。程序的一部分 组成过程块 ,并将该过程块
2、分配到特定的事件 。 事件关键字 提供了事件 和程序之间 的接口。系 统总是在相应事件出现 时启动过程 块 。 在控制 ABAP/4 程序流 (页 错误!链接无效。) 中介绍了过 程块中的流 控制。本 节介绍 ABAP/4 程序的外部 控制和可能 涉及到的事 件。 可以学到 定义过程块 可以在 ABAP/4 中通过使用 事件关键字 定义过程块 。在 事件及其事 件关键字 (页 ) 中对可能的 事件关键字 进行了说明 。 两个事件关 键字之间或 事件关键字 与 FORM 语句之间的 所有语句构成过程 块。出现事 件时,系统 将在相应事 件关键字之 后处理过程 块。 ABAP/4 报表程序中 的所
3、有语句 都是过程块 或子程序的 一部分。 没有紧跟着 事件关键字 或 FORM-ENDFORM 块的语句自 动成为默认 事件 START-OF-SELECTION 过程块的一 部分。这样将 有下列影响 : 如果在 REPORT 或 PROGRAM 语句与第一 个事件关键 字或 FORM 语句之间写 语句,则将 把这些语句 包括在 START-OF-SELECTION 过程块中。 - 如果没 有把 START-OF-SELECTION 关键字包括 在报表中, 则这些语句 构成整个 START-OF-SELECTION 过程块。 - 如果将 START-OF-SELECTION 关键字包括 在报表
4、中, 则将把这些 语句插入到 此块的开始部分。 如果没有 在程序中指定事件关键字,则该程序 FORM 语句之前的 所有语句构 成 START-OF-SELECTION 过程块。注 意,这种情况下,永远 不会执行 FORM - ENDFORM块之后的所有语句。 因为通过事件唯一切换执行顺序, 所以在程序中过程块的出现顺序是没有任何关系的。 但是 ,为了保证 可读性,在 程序中应该 以过程块的 执行顺序排 列它们。 与操作或控制语句不一 样,系统在生成程序时而不是在运行时间中执行说明性语句。对它们的执行与它 们在程序代码中的位置无关,并且可以属于任何过程块。 为清楚起见 ,应该把所有说明性的关键字
5、放到程序或子程序的开始处 。 REPORT SAPMZTST. WRITE / Statement 1. FORM ROUTINE. WRITE / Subroutine. ENDFORM. WRITE / Statement 2. PERFORM ROUTINE. WRITE / Statement 3. 输出如下所 示: Statement 1 在此程序中 ,只执行了 START-OF-SELECTION 过程块。此 块包含第一 个 WRITE 语句。 现在,按照 下列方法把 START-OF-SELECTION 语句插入程 序中: REPORT SAPMZTST. WRITE / Sta
6、tement 1. FORM ROUTINE. WRITE / Subroutine. ENDFORM. START-OF-SELECTION. WRITE / Statement 2. PERFORM ROUTINE. WRITE / Statement 3. 输出如下所 示: Statement 1 Statement 2 Subroutine Statement 3 在此程序中 ,START-OF-SELECTION 过程块包含 除 FORM-ENDFORM 块之外的所 有语句。下 列是此程序 更易读的形 式: REPORT SAPMZTST. START-OF-SELECTION. W
7、RITE / Statement 1. WRITE / Statement 2. PERFORM ROUTINE. WRITE / Statement 3. FORM ROUTINE. WRITE / Subroutine. ENDFORM. 在程序的这 种形式中, 也可以忽略 START-OF-SELECTION 语句。 ABAP/4 处理程序 报表程序是 过程块的集 合,执行该 程序以对特 定事件作出 反应,特别 是使用逻辑 数据库时。 可以把这些 块视为可调 用模块。在 程序代码中 ,它们不需 要以任何特 殊的顺序出 现。一旦调 用报表程序 ,系统就启 动另一个进 程,该进 程调用这些
8、模块,并控 制外部程序 流。 此控制程序 是 ABAP/4 处理程序。 它监视 ABAP/4 报表程序、 逻辑数据库 程序和其他 程序模块之间的 交互作用。 它也解释 ABAP/4 程序的运行 时间对象。 必须生成每 个 ABAP/4 程序,在 ABAP/4 编辑器中编 写这些程序 ,以创建其 运行时间对 象。这既适 用于报表程 序,也适用 于逻辑数据 库程序。即 可以在 ABAP/4 编辑器中通 过选择“程 序 - 生成”执行 该生成,也 可以在“ABAP/4 编辑器:初 始屏幕”上 通过选择“ 生成”执行 。第一次启 动报表程序 时,自动生 成该报表程 序。 通过在程序 中使用的事 件关键
9、字控 制 ABAP/4 处理程序和 不同程序之 间的交互作 用。例如 在报表程 序 START-OF-SELECTION、 GET 中,等等, 参见 事件及其事 件关键字 (页 ) , 在逻辑数 据库程序 PUT 中,等等, 参见 逻辑数据库 的特征和维 护 (页 Error! Not a valid link.) 。 根据由事件 关键字定义 的流,ABAP/4 处理程序解 释相应程序 单元,并开 始处理它们 。 事件及其事 件关键字 这里有几组 事件关键字 ,这些事件 关键字在特 定环境下控 制 ABAP/4 程序流。 逻辑数据库 是典型报表 程序的外部 流控制的中 心点。如果将 逻辑数据库
10、 链接到报表 程序,将导 致显示选择 屏幕,并决 定系统如何 从数据库表 中读取数据 。这引起在 下列表中说 明的事件序 列。关于事 件出现顺序 的详细信息 ,参见 逻辑数据库和 ABAP/4 报表 (页 Error! Not a valid link.) 。 下列事件出 现在典型报 表程序的运 行时间处, 该报表程序 使用逻辑数 据库: 事件关键字 事件 INITIALIZATION (页 ) 在显示选择 屏幕之前的 点 AT SELECTION-SCREEN (页 ) 选择屏幕仍 然活动时, 处理用户在 选择屏幕上 输入之后的 点 START-OF-SELECTION (页 ) 处理选择屏
11、 幕之后的点 GET (页 ) 点位于逻辑 数据库提供 数据库表 的行处。 GET LATE (页 ) 处理所有表 之后的点, 在逻辑数据 库的结构中 ,使这些表 位于 数据库 表 的下层。 END-OF-SELECTION (页 ) 处理完逻辑 数据库提供 的所有行之 后的点。 下 列主题说明 这些事件的 过程块。 处理和显示 报表程序输 出列表时, 出现其他没 有连接到逻 辑数据库的 事件。可以 用这些事件 格式化输出 列表,并使 报表程序成 为交互式的 。在适当的 节中将继续 说明这些事 件。 处理报表程 序输出列表 时,出现下 列事件: 事件关键字 事件 TOP-OF-PAGE 启 动
12、新页时, 列表处理中 的点 END-OF-PAGE 结 束页时,列 表处理中的 点 可以用这 些关键字改 善输出列表 的格式。说 明参见创建列表 (页 Error! Not a valid link.) 。 下列事件出 现在报表程 序输出列表 的显示中: 事件关键字 事件 AT LINE-SELECTION AT USER-COMMAND 用 户在该点处 选择行 用 户在该点处 按下功能键 或在命令字 段中输入命 令 AT PF 用 户在该点处 按下有功能 代码 PF 的功能键 可 以使用这些 关键字编写 交互式报告 的程序。详 情参见 交互式列表 (页 Error! Not a valid
13、link.) 。 关于所有事 件关键字的 详细说明, 参见事件关 键字文档。 INITIALIZATION 启动已定义 选择屏幕的 程序时, 系统通常首 先处理此选 择屏幕。如 果希望在处 理选择屏幕 之前执行过 程块,可以 把它分配到 事件关键字 INITIALIZATION。 在此块中, 指定初始化 选择屏幕的 语句,例如 通过更改参 数或选择标 准的默认值 。这只对在 逻辑数据库 中定义的参 数或选择标 准才有效。 对于选择标 准,应该通 过更改选择 表 的表头行并 把它附加到 表中,至少 定义选择表 的组件 -SIGN、 -OPTION、 -LOW。否则, 可能未定义 部分选择标 准。
14、 如果希望通 过检查逻辑 数据库 SAPDB 自己,或通 过检索字段 的技术信息 而更改内部 字段,可以 找到该字段 的名称。为 此,在选择 屏幕上选择 输入字段, 并按下 F1。然后 ,选择对话 框中的“技 术信息”。 在下列窗口 的字段“屏 幕字段”中 ,将会看到 程序中使用 的字段名称 。 假定有链接 到逻辑数据 库 F1S 的报表程序 : REPORT SAPMZTST. PARAMETERS FIRSTDAY LIKE SY-DATUM DEFAULT SY-DATUM. TABLES SPFLI. 启动此程序 时,将自动 出现下列选 择屏幕: 在逻辑数据 库 F1S 中定义有选 择
15、文本“承 运方 ID”的选 择标准,以 及有选择文 本“从”和 “到”的参 数。在程序 自身中定义 参数 FIRSTDAY。 例如,现在 选择“承运 方 ID”的第 一个输入字 段,按下 F1,然后 选择“技术 信息”,以 找到选择表 的名称: 在字段“屏 幕字段”中 ,将看到名 称 CARRID-LOW, 它是对应于 选择输入的 选择表的组 件。从这里 看到选择标 准的名称是 CARRID。 在上面所述 的相同过程 中,可以发 现把输入字 段“从”和 “到”命名 为 CITY_FR 和 CITY_TO。 现在,可以 按照下列方 法更改报表 程序: REPORT SAPMZTST. PARAM
16、ETERS FIRSTDAY LIKE SY-DATUM DEFAULT SY-DATUM. TABLES SPFLI. INITIALIZATION. CITY_FR = NEW YORK. CITY_TO = FRANKFURT. CARRID-SIGN = I. CARRID-OPTION = EQ. CARRID-LOW = AA. APPEND CARRID. FIRSTDAY+6(2) = 01. 启动 SAPMZTST 之后,选择 屏幕如下: 更改了选择 标准的默认 值和所有参 数。 AT SELECTION-SCREEN 事件关键字 AT SELECTION-SCREEN 提供
17、了好几 种在系统处 理选择屏幕 时执行过程 块的方法。 为了对处理 选择屏幕时 出现的不同 事件都有效 ,关键字 AT SELECTION-SCREEN 有不同选项 。 与 PARAMETERS 和 SELCECT-OPTIONS 语句的特殊 选项一起, 在 使用选择屏幕 (页 错误!链接无效。) 中显示了关 键字 AT-SELECTION 屏幕的某些 应用。 如果指定字 段的关键字 没有任何选 项,则在系 统处理完选 择屏幕之后 启动相应过 程块。如果 从此过程块 中发送 ERROR MESSAGE, 则系统将又 显示选择屏 幕,并且可 以更改所有 输入字段。 必须提供适 当的 ERROR
18、MESSAGE。 例如,此方 法可以输入 字段命令, 尽管没有在 逻辑数据库 程序中使用 PARAMETERS 或 SELECT-OPTIONS 语句的 OBLIGATORY 选项定义它 们。 在表 T100 中存储和维 护 MESSAGE。 通过语言、 两个字符的 ID 和三位数字 对它们进行 分组,可以 从程序中以 不同条件发 送 MESSAGE: A:Abend, 终止当前事 务 E:错误 ,系统等待 新输入数据 I:信息 ,处理 ENTER 之后,系统 继续处理 S:确认 ,消息出现 在下一屏上 W:警告 ,可以更改 输入数据或 通过按 ENTER 继续 必须在程序 的 REPORT
19、或 PROGRAM 语句之后指 定 MESSAGE-ID。 通过 ABAP/4 编辑器,选 择“编辑 - 插入语句.” ,可以很容 易地将 MESSAGE 包括到程序 中。也可以 从这里更改 MESSAGE。 关于报表中 MESSAGE 处理的详细 信息,参见 列表中的消 息 (页 Error! Not a valid link.) 。 将逻辑数据 库 F1S 附加到下列 报表程序: REPORT SAPMZTST MESSAGE-ID HB. TABLES SPFLI. AT SELECTION-SCREEN. IF CARRID-LOW IS INITIAL OR CITY_FR IS I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAP 事件 详解

链接地址:https://www.31ppt.com/p-3151843.html