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.

PARAMETERSp_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

    EVENTSno_inputwrong_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

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction