!--a11y-->

以下の単純な例は、ABAP オブジェクトでのイベントの原理を示しています。この例は、クラスに関する簡単な概説 にもとづいています。イベントcritical_value が、クラス 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.
METHOD 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.
クラス COUNTER はカウンタを実装します。このクラスは、しきい値を超過した場合にイベントCRITICAL_VALUE をトリガし、差異を表示します。HANDLER は、COUNTER での例外を処理することができます。実行時に、オブジェクトを指しているすべての参照変数に対してハンドラが登録されます。