ABAP事件的简单用法
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事件的简单用法的更多相关文章
- JS的简单用法
JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...
- slf4j的简单用法以及与log4j的区别
之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...
- Android MultiType第三方库的基本使用和案例+DiffUtil的简单用法
1.MultiType简单介绍 1.1.MultiType用于比较复杂的页面. 如下图,今日头条用到了MultiType处理各种复杂的页面. 这种还是比较简单的类型.因为一个页面也就这种类型. ...
- Opentelemetry SDK的简单用法
Opentelemetry SDK的简单用法 概述 Opentelemetry trace的简单架构图如下,客户端和服务端都需要启动一个traceProvider,主要用于将trace数据传输到reg ...
- CATransition(os开发之画面切换) 的简单用法
CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...
- jquery.validate.js 表单验证简单用法
引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...
- NSCharacterSet 简单用法
NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...
- [转]Valgrind简单用法
[转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...
- Oracle的substr函数简单用法
substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串 subst ...
随机推荐
- 洛谷P1020导弹拦截——LIS
题目:https://www.luogu.org/problemnew/show/P1020 主要是第二问,使用了dilworth定理:一个序列中最长不上升子序列的最大覆盖=最长上升子序列长度. di ...
- IOS要用到的零碎东西
有些东西虽然不重要,但是零零碎碎会用到,就做个笔录吧: 协议中有2个关键字可以控制方法是否要实现(默认是@required),在大多数情况下, 用途在于程序员之间的交流 @required:这个方法必 ...
- [pe531]Chinese leftovers
题意:1e6~1e6+5000之间任意两个之间同余方程组的解.余数为欧拉函数. 解题关键:线性筛预处理,扩展中国剩余定理暴力求解. #include<cstdio> #include< ...
- .NET Framework 2.0安装问题
在.NET Framework 2.0安装的时候,如果提示 system.deployment.dll失败,另一个程序正在使用此文件,进程无法访问.这种情况下,我们可能的解决方案是: 关闭掉杀毒软件在 ...
- Linux下搭建tomcat集群全记录
(转) Linux下搭建tomcat集群全记录 2011-10-12 10:23 6133人阅读 评论(1) 收藏 举报 tomcatlinuxapacheinterceptorsession集群 1 ...
- [yii]Trying to get property of non-object
今天接触gridview的时候,发现总是报错,如图. array( 'name'=>'user_info.userinfo', 'value'=>'$data->user_info- ...
- .net 扩展方法,lamada表达式 委托
扩展方法 (1)扩展方法是一种特殊的静态方法,它定义在一个静态类中,但可以在其他类的对象上向调用实例方法那样进行调用.因此,通过扩展方法,我们就可以在不修改一个类型的前提下对一个类型进行功能上的扩充, ...
- Bootstrap 栅栏布局中 col-xs-*、col-sm-*、col-md-*、col-lg-* 区别及使用方法
(1)概括 一句话概括:根据显示屏幕宽度的大小,自动的选用对应的类的样式. (2)关键字段 1.col是column简写:列: 2.xs是maxsmall简写:超小, ...
- 笔记-JavaWeb学习之旅16
增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...
- EXP-00000: Message 0 not found; No message file for product=RDBMS, facility=EXP问题的解决方案
EXP-00000: Message 0 not found; No message file for product=RDBMS, facility=EXP 最近在服务器上准备做一个批处理,定时备份 ...