1.1、事件: 用于捕获某类对象状态的改变来触发事件的方法,并进行处理

1.2、定义:可以在类或接口中进行声明

  EVENTS|CLASS-EVENTS evt
   EXPORTING … VALUE(p1) TYPE type|LIKE f [OPTIONAL|DEFAULT g] ...

  实例事件中包含一个隐含参数SENDER,该参数的类型为触发时间的类或接口对象引用

1.3、触发:一个实例事件可以被类中的任意方法触发,静态时间则可以被静态方法触发 RAISE EVENT evt EXPORTING p1 = f1 … pn = fn

1。4、事件处理:事件需要通过触发其声明代码中所定义的方法才能处理相关事务。

  任何类都可以调用其他类中所定义的事件,或调用自身所定义的事件

  METHODS|CLASS-METHODS  meth FOR EVENT evt OF cif IMPORTING …ei…

1.5、为相关事件注册方法 SET HANDLER … hi… [FOR] …

1.6、事件类型分为4种 定义在类中的:实例事件,静态事件 定义在接口中的:实例事件,静态事件 对于实例事件,

  注册语句必须使用FOR指定注册对象 … FOR ref

  . … FOR ALL INSTANCES(注册所有可以触发该事件的实例,包括尚未被创建的实例)

  注册静态事件,不需加FOR后缀,自动应用于整个类

1.7、例子:设置一个数字从1循环到50,当它是5的倍数时,触发事件输出一段话。

*定义事件 如果一个数是5的倍数,触发事件
CLASS a DEFINITION.
PUBLIC SECTION.
CLASS-DATA num TYPE i.
METHODS add.
EVENTS mod5 EXPORTING VALUE(p_num) TYPE i.
ENDCLASS. CLASS a IMPLEMENTATION.
METHOD add.
num = num + .
IF num MOD = .
RAISE EVENT mod5 EXPORTING p_num = num.
ENDIF.
ENDMETHOD.
ENDCLASS. *定义事件处理类
CLASS mod5_handle DEFINITION.
PUBLIC SECTION.
METHODS write_num FOR EVENT mod5 OF a IMPORTING p_num.
ENDCLASS. CLASS mod5_handle IMPLEMENTATION.
METHOD write_num.
WRITE: / 'this is event menthod,p_num = ',p_num.
ENDMETHOD.
ENDCLASS. *声明类
DATA: a TYPE REF TO a,
mod5 TYPE REF TO mod5_handle,
a1 TYPE REF TO a,
a2 TYPE REF TO a. START-OF-SELECTION. CREATE OBJECT a.
CREATE OBJECT a1.
CREATE OBJECT a2.
CREATE OBJECT mod5. *注册事件
SET HANDLER mod5->write_num FOR a. DO TIMES.
CALL METHOD a->add.
ENDDO. WRITE / 'a is stop.'. DO TIMES.
CALL METHOD a1->add.
ENDDO. WRITE / 'a1 is stop.'. *注册事件为所有实例(包含没有创建的实例)
SET HANDLER mod5->write_num FOR ALL INSTANCES. DO TIMES.
CALL METHOD a1->add.
ENDDO. WRITE / 'a1 is stop.'. DO TIMES.
CALL METHOD a2->add.
ENDDO. WRITE / 'a2 is stop.'.

ABAP事件的简单用法的更多相关文章

  1. JS的简单用法

    JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...

  2. slf4j的简单用法以及与log4j的区别

    之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...

  3. Android MultiType第三方库的基本使用和案例+DiffUtil的简单用法

    1.MultiType简单介绍 1.1.MultiType用于比较复杂的页面. 如下图,今日头条用到了MultiType处理各种复杂的页面.    这种还是比较简单的类型.因为一个页面也就这种类型. ...

  4. Opentelemetry SDK的简单用法

    Opentelemetry SDK的简单用法 概述 Opentelemetry trace的简单架构图如下,客户端和服务端都需要启动一个traceProvider,主要用于将trace数据传输到reg ...

  5. CATransition(os开发之画面切换) 的简单用法

    CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...

  6. jquery.validate.js 表单验证简单用法

    引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...

  7. NSCharacterSet 简单用法

    NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...

  8. [转]Valgrind简单用法

    [转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...

  9. Oracle的substr函数简单用法

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

随机推荐

  1. mysql备份并升级sql语句

    #!/bin/bash ' time=`date +%Y%m%d-%H%M` db_path=/root/code/xizang_PAD_project/PHP_business_server/tfc ...

  2. ubuntu下 修改主机名

    sudo gedit /etc/hostname 写入: sudo gedit /etc/hosts

  3. java代码优化(1)---

    代码的优化,需要考虑的维度很多.但是代码的优化并不是减少代码量,有的时候我们需要增加代码来提高代码的可读性. 1.正确标记变量 2.封装某个动作 3.注意函数的写法 4.不容易理解的东西,加注释

  4. 反射-Class

    package classes; public class ClassDemo1 { public static void main(String[] args){ Foo foo1 = new Fo ...

  5. MySQL Horizontal Scaling

    http://www.tuicool.com/articles/miuq63E http://www.guokr.com/blog/475765/ http://songwie.com/article ...

  6. 2、R-reshape2-melt

    1.melt:         短数据转长数据 (1).融合的数据为数组.表以及矩阵,melt的表达式为: melt(data, varnames = names(dimnames(data)), . ...

  7. python3.5 jira网站实现用户的批量插入

    工作中,经常要给多个用户创建账号,为了减少工作量,写了个自动化脚本来帮助我批量创建用户 代码如下: """自动创建Jira的学生账号""" ...

  8. HRBUST - 1214 NOIP2000提高组 方格取数(多线程dp)

    方格取数 设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放人数字0.如下图所示(见样例 ,黄色和蓝色分别为两次走的路线,其中绿色的格子为黄色和蓝色共同走过的 ...

  9. HDU - 6344 2018百度之星资格赛 1001调查问卷(状压dp)

    调查问卷  Accepts: 1289  Submissions: 5642  Time Limit: 6500/6000 MS (Java/Others)  Memory Limit: 262144 ...

  10. Git 时光穿梭鸡 管理修改

    Git跟踪并管理的是修改,而非文件. 什么是修改? 比如你新增了一行,这就是一个修改, 删除了一行,也是一个修改, 更改了某些字符,也是一个修改, 删了一些又加了一些,也是一个修改, 甚至创建一个新文 ...