• abap objectoriented–使用事件


    引用:翱翔云天

    这一节我们将参照一个例子,介绍事件(event)的使用方法。

    1.定义event

    2.Set handler

    3.Raise event

    REPORT zbobo_events_5.
    *---------------------------------------------------------------------*
    *       CLASS lcl_dog DEFINITION
    *---------------------------------------------------------------------*
    CLASS lcl_dog DEFINITION.
      PUBLIC SECTION.
    *   Declare events
        EVENTS:
          dog_is_hungry
            EXPORTING value(ex_time_since_last_meal) TYPE i.
        METHODS:
          constructor
              IMPORTING im_name TYPE string,
          set_time_since_last_meal
              IMPORTING im_time TYPE i,
          on_dog_is_hungry FOR EVENT dog_is_hungry OF lcl_dog
              IMPORTING ex_time_since_last_meal.
    ENDCLASS.
    *---------------------------------------------------------------------*
    *       CLASS lcl_dog IMPLEMENTATION
    *---------------------------------------------------------------------*
    CLASS lcl_dog IMPLEMENTATION.
      METHOD constructor.
        WRITE: / 'I am a dog and my name is', im_name.
      ENDMETHOD.
      METHOD set_time_since_last_meal.
        IF im_time < 4.
          SKIP 1.
          WRITE: / 'You fool, I am not hungry yet'.
        ELSE.
    *    Subsrcribe for event:
    *    set handler <Event handler method>
    *    FOR <ref_sender>!FOR ALL INSTANCES [ACTIVATION <var>]
          SET HANDLER on_dog_is_hungry FOR ALL INSTANCES ACTIVATION 'X'.
    *    Raise event
          RAISE EVENT dog_is_hungry
            EXPORTING ex_time_since_last_meal = im_time.
        ENDIF.
      ENDMETHOD.
      METHOD on_dog_is_hungry.
    *   Event method, called when the event dog_is_hungry is raised
        SKIP 1.
        WRITE: /  'You son of a bitch. I have not eaten for more than',
                  ex_time_since_last_meal, ' hours'.
        WRITE: / 'Give me something to eat NOW!'.
      ENDMETHOD.
    ENDCLASS.
    *---------------------------------------------------------------------*
    *       R E P O R T
    *---------------------------------------------------------------------*
    DATA: o_dog1 TYPE REF TO lcl_dog.
    START-OF-SELECTION.
      CREATE OBJECT o_dog1 EXPORTING im_name = 'Beefeater'.
      CALL METHOD o_dog1->set_time_since_last_meal
        EXPORTING im_time = 2.
    * This method call will raise the event dog_is_hungy
    * because time > 3
      CALL METHOD o_dog1->set_time_since_last_meal
        EXPORTING im_time = 5.

  • 相关阅读:
    【leetcode刷题笔记】Best Time to Buy and Sell Stock II
    【leetcode刷题笔记】Reverse Integer
    JAVA中的NIO(二)
    标准I/O
    margin的理解
    JAVA中的NIO(一)
    IO模型
    linux网络命令
    linux用户管理命令
    linux中的帮助命令
  • 原文地址:https://www.cnblogs.com/wequst/p/1513447.html
Copyright © 2020-2023  润新知