The following simple example shows the principle of events within ABAP Objects. It is based on the Simple Introduction to Classes. An event critical_value is declared and triggered in class counter.
REPORT demo_class_counter_event.
CLASS counter
DEFINITION.
PUBLIC SECTION.
METHODS increment_counter.
EVENTS critical_value EXPORTING
value(excess) TYPE i.
PRIVATE SECTION.
DATA: count TYPE i,
threshold TYPE i
VALUE 10.
ENDCLASS.
CLASS counter
IMPLEMENTATION.
METHODS increment_counter.
DATA diff TYPE i.
ADD 1 TO count.
IF count > threshold.
diff = count - threshold.
RAISE EVENT critical_value EXPORTING
excess = diff.
ENDIF.
ENDMETHOD.
ENDCLASS.
CLASS handler
DEFINITION.
PUBLIC SECTION.
METHODS handle_excess
FOR
EVENT critical_value OF counter
IMPORTING
excess.
ENDCLASS.
CLASS handler
IMPLEMENTATION.
METHOD handle_excess.
WRITE: / 'Excess is', excess.
ENDMETHOD.
ENDCLASS.
DATA: r1 TYPE REF TO
counter,
h1 TYPE REF TO handler.
START-OF-SELECTION.
CREATE OBJECT: r1, h1.
SET HANDLER h1->handle_excess FOR ALL INSTANCES.
DO 20
TIMES.
CALL METHOD r1->increment_counter.
ENDDO.
The class counter implements a counter. It triggers the event critical_value when a threshold value is exceeded, and displays the difference. handlercan handle the exception in counter. During runtime, the handler is registered for all reference variables that point to the object.