abap编程的一些例子 事件的触发及处理

来源:互联网 发布:mysql 无需密码登录 编辑:程序博客网 时间:2024/05/01 05:46

CLASS vehicle DEFINITION INHERITING FROM object.
PUBLIC SECTION.
EVENTS: too_fast.
METHODS: accelerate,
show_speed.
PROTECTED SECTION.
DATA speed TYPE i.
ENDCLASS. "vehicle DEFINITION

CLASS vehicle IMPLEMENTATION.
METHOD accelerate.
speed = speed + 1.
IF speed > 5.
RAISE EVENT too_fast.
speed = 5.
ENDIF.
ENDMETHOD. "accelerate
METHOD show_speed.
WRITE: / 'Speed:', speed.
ENDMETHOD. "show_speed
ENDCLASS. "vehicle IMPLEMENTATION

CLASS handler DEFINITION.
PUBLIC SECTION.
METHODS handle_excess FOR EVENT too_fast OF vehicle.
ENDCLASS. "handler DEFINITION

CLASS handler IMPLEMENTATION.
METHOD handle_excess.
WRITE: / 'Speed can not be too fast.'.
* speed = 10.
ENDMETHOD. "handle_excess
ENDCLASS. "handler IMPLEMENTATION

DATA: o_vehicle TYPE REF TO vehicle,
o_handle TYPE REF TO handler.

START-OF-SELECTION.
CREATE OBJECT: o_vehicle, o_handle.
SET HANDLER o_handle->handle_excess FOR ALL INSTANCES.
DO 11 TIMES.
CALL METHOD o_vehicle->accelerate.
CALL METHOD o_vehicle->show_speed.
ENDDO.

 
原创粉丝点击