概述
13.事件
- 事件
- 用于捕获某类对象状态的改变来触发的方法,并处理
- 定义:可以在类或者接口中进行声明
-
events | class-events evt exporting ...value(p1) type type1 | like f [optional | default g]
- 实例事件中包含一个隐含参数sender,该参数的类型为触发事件的类或接口对象引用
-
- 触发
- 一个实例事件可以被类中的任意方法触发,静态事件则可以被静态方法触发
- raise event evt exporting p1 = f1…pn = fn
- 事件处理
- 事件需要通过触发其声明代码中所定义的方法才能处理相关事务.
- 任何类都可以调用其他类中所定义的事件,或者调用自身所定义的事件
-
-
methods | class-methods - meth form event evt of cif importing ..ei..
-
- 相关事件注册方法
- set handle …hi…[for]…
-
- 事件分类
- 定义在类中
- 实例事件
- 静态事件
- 定义在接口中
- 实例事件
- 静态事件
- 定义在类中
- 对于实例事件,注册语句后使用for指定注册对象
- for ref
- for all instances(注册所有可以触发的实例,包括尚未被创建的实例)
- 注册静态事件,不需要加for后缀,自动应用整个类
- 当程序执行到raise event语句后,所有已注册的处理方法都将在下一个语句之前被处理.
- 处理方法按照其系统内部注册的顺序被执行.
- 为避免无限循环,目前事件不可超过64级嵌套.
代码实现
class lcl_compt definition.
public section.
data gs_school type zschool_hcf_03.
methods get_data importing p_school like gs_school-zschool.
event data_exist exporting value(ps_school) like gs_school.
endmethod.
endclass.
class lcl_compt implementation.
public section.
methods get_data.
select single *
into corresponding fields of gs_school
where zschool = p_school.
if sy-subrc = 0 .
raise event data_exist
exporting
ps_school = gs_school.
else.
write: / '失败' .
endif.
endmethod.
endclass.
class lcl_handler implementation .
method write_data.
write: / ps_school-zschool,ps_school-zsname,ps_school-zadd .
endmethod.
endclass.
data event_handler->write_data for lcl_object.
create objecct event_handler.
set handler event_handler->write_data for lcl_object.
call method lcl_object->get_data
exporting
p_school = '101' .
最后
以上就是调皮蓝天为你收集整理的SAP OO 事件(五)的全部内容,希望文章能够帮你解决SAP OO 事件(五)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复