Anfang des InhaltsbereichsEinführendes Beispiel zu Ereignissen Dokument im Navigationsbaum lokalisieren

Das folgende einfache Beispiel zeigt das Prinzip von Ereignissen in ABAP Objects. Es beruht auf dem einführenden Beispiel zu Klassen. Ein Ereignis critical_value wird in der Klasse counter deklariert und ausgelöst.

Beispiel

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.

Die Klasse COUNTER realisiert einen Zähler. Sie löst das Ereignis CRITICAL_VALUE aus, wenn eine Schwelle überschritten ist, und übergibt dabei die jeweilige Differenz. Die Klasse HANDLER kann die Ausnahme in COUNTER behandeln. Die Registrierung des behandelnden Objekts erfolgt zur Laufzeit für alle Referenzvariablen, die auf das Objekt zeigen.

Ende des Inhaltsbereichs