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.

  • 相关阅读:
    【C#】C#获取文件夹下的所有文件
    6 云计算系列之Nova安装与配置
    5 云计算系列之glance镜像服务安装
    4 云计算系列之Openstack简介与keystone安装
    3大数据挖掘系列之文本相似度匹配
    6 Django系列之关于models的sql语句日常用法总结
    2 python大数据挖掘系列之淘宝商城数据预处理实战
    5 Django系列之通过list_display展示多对多与外键内容在admin-web界面下
    1 python大数据挖掘系列之基础知识入门
    4 django系列之HTML通过form标签来同时提交表单内容与上传文件
  • 原文地址:https://www.cnblogs.com/wequst/p/1513447.html
Copyright © 2011-2022 走看看