ABAP 事件块

1.      报表过程事件

报表过程事件是在报表运行过程中由系统自动控制、按照一定次序被触发的事件,其目的是从数据库中选择数据并整理,准备进行列表输出。这些事件从报表程序启动开始就被系统顺序触发。

  INITIALIZATION   初始化事件,用于程序初始化,例如选择屏幕中字段默认值得填充。

  START-OF-SELECTION  选择开始事件,如果报表中含有选择屏幕,则在选择屏幕的处理结束后触发,是报表程序的默认事件块;如果程序中部分代码不隶属于任何其他事件关键字,则自动被插入该事件块的初始部分。

  END-OF-SELECTION 选择结束事件,如果程序中使用逻辑数据库,则在所有逻辑数据库处理结束后触发;一般在该事件中输出列表。

2.      选择屏幕事件

如果报表需要使用选择屏幕接受用户输入,除定义选择屏幕元素之外,还需要编辑屏幕选择事件来对选择屏幕行为进行控制,与其相关的系列事件将在INITIALIZATION之后,START-OF-SELECTION之前被触发。

  AT SELECTION-SCREEN OUTPUT 选择屏幕PBO事件,显示选择屏幕之前触发。

  AT SELECTION-SCREEN  选择屏幕PAI事件,用户在选择屏幕中执行某些功能后被触发。该事件关键字语句包含多个附加项,可以用在控制选择屏幕状态,并对其中的用户交互进行响应,例如当用户输入不正确的值时,给出提示。

3.      逻辑数据库事件

如果报表中使用到逻辑数据库,则在START-OF-SELECTION 事件结束之后将触发逻辑数据库事件。

  GET node … 选择逻辑数据库中当前级别数据中的数据。

  GET node LATE 选择逻辑数据库中上一级别数据源中的数据。

4.      列表事件

在所有报表过程和选择屏幕事件结束之后,系统将开始触发列表事件,这些事件块控制列表输出状态、负责处理列表过程中的交互并响应用户行为。主要有以下四种列表事件块。

  TOP-OF-PAGE 页眉控制,在每个新页面开始时触发。

  END-OF-PAGE 页脚控制,在当前页面结束时触发。

  AT LINE-SELECTION 行选择控制,用户在选择某列表行时触发。

  AT USER-COMMAND 用户交互控制,用户选择某个GUI功能时触发。

 

具有一般性的报表事件触发过程如下:

1)  首先,一旦用户开始运行类型为1的可执行程序,事件LOAD-OF-PROGRAM被触发(意味着其中的代码被执行),程序开始运行。

2)  然后,报表程序中定义的初始化过程事件INITIALIZATION被触发。

3)  如果程序中定义了选择屏幕,每次选择屏幕输出前,系统将触发AT SELECTION-SCREEN OUTPUT事件,运行环境将选择屏幕发送至显示服务器。如果用户在选择屏幕中输入某些值后执行某功能,系统将触发AT SELECTION-SCREEN事件。

4)  选择屏幕始输入值之后,用户选择Execute功能,START-OF-SELECTION被触发。

5)  如果报表中使用逻辑数据库,则接下来触发的事件为GET GET  LATE。逻辑数据库是一种数据源,为程序提供数据筛选和整理方式,在逻辑数据库内部,数据条目通过循环一行行读到程序,并可以在GET事件块内部进行处理。

6)  START-OF-SELECTION 事件或者逻辑数据库事件之后触发END-OF-SELECTION事件,如果有列表,一般在该事件之后输出列表,此后运行时环境将控制交给显示服务器。

7)  列表输出过程中自动触发两个事件块:TOP-OF-PAGE END-OG-PAGE,其中TOP-OF-PAGE一般用于输出页眉、列表标题行等,END-OF-PAGE用于输出页脚。用户也可以选择Back按钮,回到选择屏幕中(但不会重新触发LOAD-OF-PROGRAMINITIALIZATION事件),再次进行选择输入和数据选择,因此这也是一个反复循环的过程。

8)  如果程序中定义有列表事件,则系统可以响应用户在列表屏幕中的行为,触发各种程序中交互事件。行选择交互事件(AT LINE-SELECTION)运行用户从列表中选择某行,并将触发相应的事件。如果用户选择其他自定义的功能代码(功能代码与相关菜单、按钮或键盘热键有关系,由程序员在屏幕GUI状态中定义),将触发用户指令交互,即AT USER-COMMAND事件块。

 

需要指出的是,可执行程序也中允许使用CALL SCREEN语句调用自定义屏幕,并进行与对话程序类似的模块化处理。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值