zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    Thread.Sleep(0)的作用
    javascript form提交 不执行onsubmit事件解决方案
    获取控件生成的html
    (诡异事件)iframe标签后面的alert不执行
    数据重复插入的问题
    aspnetpager bug
    晒一下我的数据访问层接口
    Jquery.ajax不能解析json对象,报Invalid JSON错误的原因和解决方法(转)
    火狐对ajax的onreadystatechange与IE的不同。
    一个命名的问题把我给折腾的
  • 原文地址:https://www.cnblogs.com/wequst/p/1513447.html
Copyright © 2011-2022 走看看