ABAP 面向对象OO-事件(EVENT)

事件-EVENT

在这里插入图片描述

代码

*&---------------------------------------------------------------------*
*& Report Z_OO_EVENT_LHY
*&---------------------------------------------------------------------*
*& Creator:LiuHongyu
*& Create On:06.12.2024 16:57:48
*& Type:
*& Description:面向对象-事件
*&---------------------------------------------------------------------*
*         Changed History
*--------------   ---------------   ------------------   --------------*
* Version         Changed By        Changed Date         Description
*--------------   ---------------   ------------------   --------------*
* N               LiuHongyu         06.12.2024 16:57:48
*&---------------------------------------------------------------------*
REPORT Z_OO_EVENT_LHY.

"定义一个类(触发类)
CLASS CLS DEFINITION.
  PUBLIC SECTION.
    DATA: LV_DATA TYPE I.
    METHODS: M1 IMPORTING N1 TYPE I N2 TYPE I
                EXPORTING RESULT TYPE I.
    "声明事件
    EVENTS: E1 EXPORTING VALUE(INFO) TYPE STRING.
ENDCLASS.

CLASS CLS IMPLEMENTATION.
  METHOD M1.
    RESULT = N1 + N2.
    IF RESULT > 20.
      ULINE.
      "触发事件
      RAISE EVENT E1 EXPORTING INFO = '两数相加大于20啦,触发了这个事件!'.
      WRITE: '此时的RESULT:' && RESULT.
    ELSE.
      WRITE: '未触发事件,此时的RESULT:' && RESULT.
    ENDIF.
  ENDMETHOD.
ENDCLASS.


"处理类
CLASS CLS_HANDLE DEFINITION.
  PUBLIC SECTION.
    "声明事件处理方法
    METHODS: HANDLE FOR EVENT E1 OF CLS IMPORTING INFO SENDER.
ENDCLASS.

CLASS CLS_HANDLE IMPLEMENTATION.
  METHOD HANDLE.
    WRITE:INFO.
  ENDMETHOD.
ENDCLASS.


START-OF-SELECTION.
  DATA(OBJ) = NEW CLS( ).
  DATA(OBJ2) = NEW CLS( ).
  DATA(HANDLE_OBJ) = NEW CLS_HANDLE( ).
  "注册事件处理方法,不注册无法对事件进行响应
  SET HANDLER HANDLE_OBJ->HANDLE FOR OBJ.
  DATA RESULT TYPE I.
  OBJ->M1(
    EXPORTING
      N1     = 1
      N2     = 2
    IMPORTING
      RESULT = RESULT
  ).

  OBJ->M1(
    EXPORTING
      N1     = 30
      N2     = 23
  ).

  OBJ2->M1( EXPORTING N1 = 10 N2 = 30 ).

运行结果

在这里插入图片描述

官方文档

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值