Advertisement
mengyuxin

Events

Apr 18th, 2021
3,063
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 2.91 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Report ZMENG_EVENTS
  3. *&---------------------------------------------------------------------*
  4. *&事件是在类中定义的一组结果,用于触发其他类中的事件处理程序。
  5. *&当事件被触发时,我们可以调用任何数量的事件处理程序方法。
  6. *&触发器及其处理程序方法之间的链接实际上是在运行时动态决定的。
  7.  
  8. *&在正常的方法调用中,调用程序确定对象或类的哪个方法需要被调用。
  9. *&由于固定处理程序方法未针对每个事件注册,
  10. *&因此在事件处理的情况下,处理程序方法确定需要触发的事件。
  11.  
  12. *&类的事件可以通过使用RAISE EVENT语句触发同一类的事件处理程序方法。
  13. *&对于事件,可以通过使用FOR EVENT子句在相同或不同的类中定义事件处理程序方法。
  14.  
  15. *&类似于类的方法,事件可以有参数接口,但它只有输出参数。
  16. *&输出参数通过RAISE EVENT语句传递到事件处理程序方法,
  17. *&RAISE EVENT语句接收它们作为输入参数。
  18. *&事件通过使用SET HANDLER语句在程序中动态链接到其处理程序方法。
  19.  
  20. *&当触发事件时,应该在所有处理类中执行适当的事件处理程序方法。
  21. *&---------------------------------------------------------------------*
  22. REPORT zmeng_11_events.
  23.  
  24. *&---------------------------------------------------------------------*
  25. * cl_main
  26. *&---------------------------------------------------------------------*
  27. CLASS cl_main DEFINITION.
  28.   PUBLIC SECTION.
  29.     DATA: num1 TYPE i.
  30.  
  31.   METHODS: pro IMPORTING num2 TYPE i.
  32.  
  33.   EVENTS: cutoff.
  34. ENDCLASS.
  35.  
  36. CLASS cl_main IMPLEMENTATION.
  37.   METHOD pro.
  38.     num1 = num2.
  39.     IF num2 >= 2.
  40.       RAISE EVENT cutoff.
  41.     ENDIF.
  42.   ENDMETHOD.
  43. ENDCLASS.
  44.  
  45. *&---------------------------------------------------------------------*
  46. * cl_eventHandler
  47. *&---------------------------------------------------------------------*
  48. CLASS cl_eventhandler DEFINITION.
  49.   PUBLIC SECTION.
  50.  
  51.   METHODS: handling_cutoff FOR EVENT cutoff OF cl_main.
  52. ENDCLASS.
  53.  
  54. CLASS cl_eventhandler IMPLEMENTATION.
  55.   METHOD handling_cutoff.
  56.     WRITE: / 'Handling the CutOff'.
  57.     WRITE: / 'Event has been processed'.
  58.   ENDMETHOD.
  59. ENDCLASS.
  60.  
  61. *&---------------------------------------------------------------------*
  62. * Start of selection
  63. *&---------------------------------------------------------------------*
  64. START-OF-SELECTION.
  65.   DATA: main1         TYPE REF TO cl_main.
  66.   DATA: eventhandler1 TYPE REF TO cl_eventhandler.
  67.  
  68.   CREATE OBJECT main1.
  69.   CREATE OBJECT eventhandler1.
  70.  
  71.   SET HANDLER eventhandler1->handling_cutoff FOR main1.
  72.  
  73.   main1->pro( 4 ).
  74.  
  75.  
  76. "Output result
  77. *Handling the CutOff
  78. *Event has been processed
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement