事件的应用
*----------------------------------------------------------------------*
* CLASS adding DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS adding DEFINITION.
PUBLIC SECTION.
CLASS-DATA num TYPE i."定义静态变量用于统计累加值
EVENTS:return."定义事件
METHODS:accumulate.
ENDCLASS. "adding DEFINITION
*----------------------------------------------------------------------*
* CLASS adding IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS adding IMPLEMENTATION.
METHOD:accumulate.
DATA:res TYPE i.
num = num + 1.
res = num MOD 10.
IF res = 0."判断累加值是否能整除10,若可以则触发事件执行
RAISE EVENT return.
ENDIF.
ENDMETHOD. "accumulate
ENDCLASS. "adding IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS handler DEFINITION.
PUBLIC SECTION. "定义事件所执行方法
METHODS handle_execute FOR EVENT return OF adding.
ENDCLASS. "handler DEFINITION
*----------------------------------------------------------------------*
* CLASS handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS handler IMPLEMENTATION.
METHOD handle_execute."定义事件所执行方法的执行过程
WRITE: / 'The present number is:',adding=>num.
ENDMETHOD. "handle_execute
ENDCLASS. "handler IMPLEMENTATION
DATA:o_adding TYPE REF TO adding,
o_handler TYPE REF TO handler.
START-OF-SELECTION.
CREATE OBJECT:o_adding,o_handler.
SET HANDLER o_handler->handle_execute FOR ALL INSTANCES. "创建事件处理表
DO 50 TIMES.
CALL METHOD o_adding->accumulate."循环调用事件,满足条件时触发执行
ENDDO.