我是靠谱客的博主 调皮蓝天,最近开发中收集的这篇文章主要介绍SAP OO 事件(五),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 事件(五)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部