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 ...
- 基于Qt Gui的Led控制显示程序
基于arm + linux的嵌入式软件开发,基本上的内容主要是:u-boot的移植,kernel的裁剪和相关驱动程序的设计,root-fs的制作,应用程序的设计,其中,应用程序主要包含两方面的内容:G ...
- git简单获取远程某个分支代码命令
git clone resource.git git branch -a list all the local and remote branches git checkout [remote bra ...
- [poj2019]Cornfields(二维RMQ)
题意:给你一个n*n的矩阵,让你从中圈定一个小矩阵,其大小为b*b,有q个询问,每次询问告诉你小矩阵的左上角,求小矩阵内的最大值和最小值的差. 解题关键:二维st表模板题. 预处理复杂度:$O({n^ ...
- 报错:在做往下拉选里面拼接数据的时候 3个下拉选显示一个值 原因 @scope(单例)或者没配默认单例
解决 @scope(多例) 这是因为造成线程并发访问不安全
- ubuntu12.04+virtualbox+winxp的关于摄像头无法使用,声音出不来的问题
前天在ubuntu上安装了个virtualbox的虚拟机.以前在windows下面是用的vmware.结果到了ubuntu下面折腾半天用不了,于是就装了个virtualbox,在virtualbox里 ...
- mui 关闭当前窗口
在提交表单的时候,我们都需要关闭表单.需要关闭当前打开的窗口. bit.alert('提交成功' + (result.category.needAudit ? ",请耐心等待管理员审核信息后 ...
- C++经典面试算法题
转自:http://blog.csdn.net/f_r_e_e_x/article/details/50770907 //1.实现strcpy. char* MyStrCpy( char *pDest ...
- 部署开发以太坊dapp的四种方式
我们已经学习了4种开发和部署智能合约的方法: 第1种是使用 Truffle 和 Ganache .由于我们从上一篇教程中复制了代码,所以我想告诉你,有些插件可用于目前最流行的文本编辑器和 IDEs.有 ...
- git push error: ! [rejected] failed to push some refs to . . .
报错情况: 报错原因:远程库与本地库不一致造成的,需要把远程库同步到本地库! 解决办法: git pull --rebase origin master 这条指令是将远程库中的更新合并到本地库,--r ...