*&---------------------------------------------------------------------*
*& Report ZS1_OBSERVER
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZS1_OBSERVER.
CLASS fipostings DEFINITION.
PUBLIC SECTION.
METHODS: set_state IMPORTING iv_state TYPE char1.
EVENTS: state_changed EXPORTING value(new_state) TYPE char1.
PRIVATE SECTION.
DATA: current_state TYPE char1.
ENDCLASS.
CLASS fipostings IMPLEMENTATION.
METHOD set_state.
current_state = iv_state.
SKIP 2.
WRITE: / 'fi postings', current_state.
RAISE EVENT state_changed EXPORTING new_state = current_state.
ENDMETHOD. "set_state
ENDCLASS.
CLASS invoice DEFINITION.
PUBLIC SECTION.
METHODS: on_state_changed
FOR EVENT state_changed OF fipostings
IMPORTING new_state..
ENDCLASS.
*
CLASS invoice IMPLEMENTATION.
METHOD on_state_changed.
WRITE: / 'Process invoice postings', new_state.
ENDMETHOD. "on_state_changed
ENDCLASS.
*====
CLASS creditmemo DEFINITION .
PUBLIC SECTION.
METHODS: on_state_changed
FOR EVENT state_changed OF fipostings
IMPORTING new_state..
ENDCLASS.
*
CLASS creditmemo IMPLEMENTATION.
METHOD on_state_changed.
WRITE: / 'process credit memo', new_state.
ENDMETHOD. "on_state_changed
ENDCLASS. "mydb IMPLEMENTATION
START-OF-SELECTION.
DATA: fi TYPE REF TO fipostings .
DATA: inv TYPE REF TO invoice.
DATA: cmem TYPE REF TO creditmemo.
* Instantiate the objects
CREATE OBJECT fi.
CREATE OBJECT: inv, cmem.
* Event handlers
SET HANDLER inv->on_state_changed FOR fi.
SET HANDLER cmem->on_state_changed FOR fi.
* Set new state
fi->set_state( 'A' ).
fi->set_state( 'B' ).
fi->set_state( 'C' ).