事件-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 ).
运行结果

官方文档
