事件的应用

*----------------------------------------------------------------------*
*       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.

posted @ 2017-09-21 09:10  独吊东南枝  阅读(189)  评论(0编辑  收藏  举报