ABAP EVENT 事件

ABAP EVENT 事件

2017年09月03日 21:33:52 zxkyyf 阅读数:443更多
个人分类: ABAP-EVENT
CLASS class1 DEFINITION INHERITING FROM object.
PUBLIC SECTION.
EVENTS: too_fast. ” 声明事件,如果有参数恒为值传递
METHODS: accelerate,
show_speed.
PROTECTED SECTION.
DATA: speed TYPE i.
ENDCLASS.

CLASS class1 IMPLEMENTATION.
METHOD accelerate.
speed = speed + 1.
IF speed > 5.
RAISE EVENT too_fast. “触发事件
speed = 5.
ENDIF.
ENDMETHOD.
METHOD show_speed.
WRITE: / ‘Speed:’, speed.
ENDMETHOD.
ENDCLASS.

*事件需要通过方法捕获事件并进行处理,必须首先为该事件定义
*一个事件处理方法,然后在运行时为该事件进行注册.
*声明事件处理方法,任何类都可以为其他类中定义的事件进行处理,
*当然也可以为自身事件进行处理.
CLASS handler DEFINITION.
PUBLIC SECTION.
METHODS handle_excess FOR EVENT too_fast OF class1.“这段是指这个EVENT的具体如何执行,就像是CL_GUI_ALV_GRID的ONF4事件,需要自己去完成整个事件的运行过程
ENDCLASS.

CLASS handler IMPLEMENTATION.
METHOD handle_excess.
WRITE: / ‘Speed can not be too fast.’.
ENDMETHOD.
ENDCLASS.

DATA: o_class1 TYPE REF TO class1,
o_handle TYPE REF TO handler.

START-OF-SELECTION.
CREATE OBJECT: o_class1,
o_handle.
*要使事件处理方法能够对事件进行响应, 必须在运行时为相关事件注册该方法.
SET HANDLER o_handle->handle_excess FOR ALL INSTANCES.

DO 11 TIMES.
CALL METHOD o_class1->accelerate.
CALL METHOD o_class1->show_speed.
ENDDO.

猜你喜欢

转载自blog.csdn.net/weixin_42921800/article/details/84234405
今日推荐