OOPS ABAP:EVENTS-Multiple Event Handlers
Events: Method of one class can call the method of another class.
Example on Multiple Event Handlers
*&---------------------------------------------------------------------*
*& Report ZVB_EVENTS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_events.
PARAMETERS: p_vbeln TYPE vbeln_va.
DATA:it_vbak TYPE ztt_vbak, "Table type
is_vbak TYPE zst_vbak. "Global structure
CLASS class1 DEFINITION.
PUBLIC SECTION.
METHODS display IMPORTING pp_vbeln TYPE vbeln_va
EXPORTING pt_vbak TYPE ztt_vbak. "Table type
EVENTS: no_input, wrong_input.
ENDCLASS.
CLASS class1 IMPLEMENTATION.
METHOD display. "Triggering method
IF pp_vbeln IS INITIAL.
RAISE EVENT no_input.
ELSE.
SELECT vbeln erdat erzet
FROM vbak
INTO TABLE pt_vbak
WHERE vbeln = pp_vbeln.
IF sy-subrc NE 0.
RAISE EVENT wrong_input.
ENDIF.
ENDIF.
ENDMETHOD.
ENDCLASS.
CLASS class2 DEFINITION.
PUBLIC SECTION.
METHODS message FOR EVENT no_input OF class1.
METHODS msg FOR EVENT wrong_input OF class1.
ENDCLASS.
CLASS class2 IMPLEMENTATION.
METHOD message. " Event handler method1
WRITE: 'Enter Sales document number'.
ENDMETHOD.
METHOD msg. " Event handler method2
WRITE: 'No data avilable for the input'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA:lo_object1 TYPE REF TO class1,
lo_object2 TYPE REF TO class2.
CREATE OBJECT lo_object1.
CREATE OBJECT lo_object2.
*Registering the event handler method
IF p_vbeln IS INITIAL.
SET HANDLER lo_object2->message FOR lo_object1.
ELSE.
SET HANDLER lo_object2->msg FOR lo_object1.
ENDIF.
CALL METHOD lo_object1->display
EXPORTING
pp_vbeln = p_vbeln
IMPORTING
pt_vbak = it_vbak.
IF it_vbak IS NOT INITIAL.
LOOP AT it_vbak INTO is_vbak.
WRITE: / is_vbak-vbeln,
10 is_vbak-erdat,
25 is_vbak-erzet.
ENDLOOP.
ENDIF.
Comments
Post a Comment