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 ...
随机推荐
- RT-Thread信号量使用(动态/静态信号量) 及 信号量的四种使用场合
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用.在进入一个关键代码段之前,线程必须获取一个信号量:一旦该关键代码段完成了 ...
- μC/OS-II与RT-Thread对比—任务调度
在任务调度器的实现上,μC/OS-II和RT-Thread都采用了位图调度(bitmap scheduling),任务优先级的值越小则代表具有越高的优先级,主要区别在于实现形式,是采用多级队列的形式, ...
- sulime的必备插件
常用插件 : SideBarEnhancements HTML-CSS-JS Prettify BracketHighlighter SublimeCodeIntel Emmet CTags Mark ...
- strTemp.Format ("%.*lf",3,600.0);
CString strTemp; strTemp.Format ("%.*lf",3,600.0); 这句话的含义?求指教 优质解答 这就是一个格式化输出,分号之前的CStri ...
- 使用VSTO写的一个工作证打印软件
转行做HR近2年.最近公司要做工牌,工牌上要打印照片,姓名,工号和部门等信息.一共1000多人,如果手工排版手工打印的话,估计要死人. 于是coding的老毛病又犯了,想写个程序来打印工牌.还是拿最近 ...
- 2016年第七届蓝桥杯国赛试题(JavaA组)
1.结果填空 (满分19分)2.结果填空 (满分35分)3.代码填空 (满分21分)4.程序设计(满分47分)5.程序设计(满分79分)6.程序设计(满分99分) 1.阶乘位数 9的阶乘等于:3628 ...
- C# 随机列表
一.问题描述 在EF中使用随机排序出现的问题:LINQ to Entities does not recognize the method 'System.Guid NewId()' method, ...
- Solr 6.7学习笔记(04)-- suggester 遇到的问题
遇到的一些问题: 在前面的Suggest配置完后,我在 “/select” 这个 <requestHandler>里面加上了highlight的配置,可是当我在搜索框里输入字符时,竟然报如 ...
- Spfa算法模板
输入点数n,边数m,起点终点边权 输出1号节点到所有点的最短路径长度 #include<iostream> #include<queue> #include<cstrin ...
- ajax对象。同步与异步及ajax发送请求
ajax对象的属性.方法 属性 readyState: Ajax状态码 * 0:表示对象已建立,但未初始化,只是 new 成功获取了对象,但是未调用open方法 1:表示对象已初始化,但未发送,调用了 ...