REPORT zevent_multihandler.
*----------------------------------------------------------------------*
* CLASS cls1 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cls1 DEFINITION.
PUBLIC SECTION.
DATA v_cls1 TYPE char50.
EVENTS evnt.
METHODS:
trig,
evnthand1 FOR EVENT evnt OF cls1.
ENDCLASS. "cls1 DEFINITION
*----------------------------------------------------------------------*
* CLASS cls2 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cls2 DEFINITION.
PUBLIC SECTION.
DATA v_cls2 TYPE char50.
METHODS evnthand2 FOR EVENT evnt OF cls1.
ENDCLASS. "cls2 DEFINITION
*----------------------------------------------------------------------*
* CLASS cls1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cls1 IMPLEMENTATION.
METHOD evnthand1.
v_cls1 = 'Event Handler in Class One'.
WRITE / v_cls1.
SKIP.
ENDMETHOD. "evnthand1
METHOD trig.
v_cls1 = 'Event Triggers in Class One'.
WRITE / v_cls1.
RAISE EVENT evnt.
ENDMETHOD. "trig
ENDCLASS. "cls1 IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS cls2 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cls2 IMPLEMENTATION.
METHOD evnthand2.
v_cls2 = 'Event Handler in Class Two'.
WRITE / v_cls2.
SKIP.
ENDMETHOD. "evnthand2
ENDCLASS. "cls2 IMPLEMENTATION
* Start of selection
START-OF-SELECTION.
* Data Declaration
DATA: obj1 TYPE REF TO cls1,
obj2 TYPE REF TO cls2.
* Create object for classes
CREATE OBJECT: obj1, obj2.
* Set event handler and trigger method
SET HANDLER obj1->evnthand1 FOR obj1.
CALL METHOD obj1->trig.
* Deactivate first event handler and set second event
SET HANDLER: obj1->evnthand1 FOR obj1 ACTIVATION space,
obj2->evnthand2 FOR obj1.
* Trigger the event
CALL METHOD obj1->trig.
Output