*&---------------------------------------------------------------------*
*& Report ZTEST_ABAP_15
*&
*&---------------------------------------------------------------------*
*&事件的声明和触发
*&
*&---------------------------------------------------------------------*
REPORT ztest_abap_15.
*事件声明
CLASS adding DEFINITION.
PUBLIC SECTION.
CLASS-DATA: count TYPE i. "静态变量用来统计累加值
EVENTS:return. "定义事件
METHODS:accumulate.
ENDCLASS.
*类实现
CLASS adding IMPLEMENTATION.
METHOD accumulate.
DATA: res TYPE i.
count = count + 1.
res = count MOD 10.
IF res = 0. "若可以整除10,触发事件
RAISE EVENT return.
ENDIF.
ENDMETHOD.
ENDCLASS.
*hander类的定义
CLASS handler DEFINITION.
PUBLIC SECTION.
METHODS: handle_execute "定义事件执行的方法
FOR EVENT return
OF adding.
ENDCLASS.
*hander类的实现
CLASS handler IMPLEMENTATION.
METHOD handle_execute.
WRITE: / 'The present number is : ',adding=>count.
ENDMETHOD.
ENDCLASS.
DATA: add_obj TYPE REF TO adding,
handler_obj TYPE REF TO handler.
START-OF-SELECTION.
CREATE OBJECT: add_obj,handler_obj.
SET HANDLER handler_obj->handle_execute FOR add_obj. "创建事件处理表
DO 50 TIMES.
CALL METHOD add_obj->accumulate.
ENDDO.