Sie sind auf Seite 1von 4

Example: Instance Vs static Events

REPORT Z730OOPS46.

class lcl_eventreceiver DEFINITION.
  PUBLIC SECTION.
      events e1.  "instance event
      class-events e2. "static event
      methods m1 for event e1 of lcl_eventreceiver.
      methods m2 for event e2 of lcl_eventreceiver.
      methods m3.
      class-methods m4.
endclass.

class lcl_eventreceiver IMPLEMENTATION.
  method m1.
    write :/ 'Inside instance event handler method m1'.
  endmethod.

  method m2.
    uline.
    write :/ 'Inside instance event handler method m2'.
  endmethod.

  method m3.
    write :/ 'Inside instance normal method m3-raising events e1 and e2'.
    raise event e1.
    raise event e2.
  endmethod.

  method m4.
    write :/ 'Inside static normal method m4'.
*      raise event  e2. "valid
*        raise  event e1.  "invalid
  endmethod.

endclass.
START-OF-SELECTION.
  data ob1 type ref to lcl_eventreceiver.
  create object ob1.

data ob2 type ref to lcl_eventreceiver.
  create object ob2.

*  handlers  for  executing  event handler  methods for instance events


   set handler ob1->m1 for ob1.
   set handler ob1->m1 for ob2.

*  handlers  for  executing  event handler  methods for static event


*     set  handler ob1->m2  for  ob1. "syntax  error
*     set  handler ob1->m2  for  ob2. "syntax  error

   set handler ob1->m2.

  call method ob1->m3.
  call method ob2->m3.

Example: Events in Interfaces


REPORT Z730OOPS47.

interface intf1.
  events e1.
  methods m1 for event e1 of intf1.
endinterface.

class lcl_abc DEFINITION.
  PUBLIC SECTION.
    interfaces intf1.
    methods m2 for event e1 of intf1.
    methods m3.
endclass.
class lcl_abc IMPLEMENTATION.
  method intf1~m1.
    write :/ 'inside interface event handler method m1..'.
  endmethod.

  method m2.
    write :/ 'inside interface event handler method m2 ..'.
  endmethod.

   method m3.
    write :/ 'inside normal method m3..'.
    raise event intf1~e1.
  endmethod.
endclass.

START-OF-SELECTION.
data ob type ref to lcl_abc.
create object ob.

set handler ob->intf1~m1 for ob.
set handler ob->m2 for ob.
call method ob->m3.

Example: Standard Exception Handling


REPORT Z730OOPS48.

class lcl_abc DEFINITION.
  PUBLIC SECTION.
      methods m1 IMPORTING i_x type i
                           i_y type i
                 EXPORTING e_z type i.
endclass.

class lcl_abc IMPLEMENTATION.
  method m1.
    format color 3.
    write :/ 'inside begin of method m1'.
    try.
      e_z = i_x / i_y.
*      catch cx_sy_zerodivide.
     catch cx_root.
      format color 2.
        write :/ 'inside catch block...'.
        write :/ 'Cannot divide by zero...'.
      format color off.
    endtry.
    write :/ 'inside end of method m1'.
    format color off.
  endmethod.
endclass.

START-OF-SELECTION.
PARAMETERS : p_x type i,
             p_y type i.

data v_z type i.

data ob type ref to lcl_abc.
create object ob.

call method ob->m1
EXPORTING
    i_x = p_x
    i_y = p_y
IMPORTING
    e_z = v_z.

format color 7.
write :/ 'Division is ',v_z.
write :/ 'End of program...'.
format color off.

Das könnte Ihnen auch gefallen