CLASS EVENT

来源:互联网 发布:提比略知乎 编辑:程序博客网 时间:2024/05/21 22:56

CLASS LCL_HANDLER_01 DEFINITION.
  PUBLIC SECTION.
    DATA GS_KNA1 TYPE  KNA1.
    METHODS GET_KNA1 IMPORTING P_KUNNR LIKE GS_KNA1-KUNNR .

*    声明event
    EVENTS EVENT_KNA1 EXPORTING VALUE(P_KNA1LIKE GS_KNA1.
ENDCLASS.

CLASS LCL_HANDLER_01 IMPLEMENTATION.
  METHOD GET_KNA1 .
    SELECT SINGLE FROM KNA1 INTO GS_KNA1 WHERE KUNNR P_KUNNR .
    IF SY-SUBRC 0.
*      触发EVENT
      RAISE  EVENT EVENT_KNA1 EXPORTING  P_KNA1 GS_KNA1.
    ELSE.
      WRITE '没有数据!' .
    ENDIF.
  ENDMETHOD.
ENDCLASS .


*声明event接收类
CLASS LCL_HANDLER_02 DEFINITION.
  PUBLIC SECTION.
* 声明接收event方法
    METHODS WRITE_DATA FOR EVENT EVENT_KNA1 OF LCL_HANDLER_01
      IMPORTING P_KNA1.

ENDCLASS.

CLASS LCL_HANDLER_02 IMPLEMENTATION.
  METHOD WRITE_DATA .
    WRITE /,P_KNA1-KUNNR,P_KNA1-NAME1,P_KNA1-NAME2.
  ENDMETHOD.
ENDCLASS .


PARAMETERS LP_KUNNR TYPE KNA1-KUNNR.

START-OF-SELECTION .


*  类实例
  DATA LCL_01 TYPE REF TO LCL_HANDLER_01.
  CREATE OBJECT LCL_01.
  DATA LCL_02_1 TYPE REF TO LCL_HANDLER_02.
  CREATE OBJECT LCL_02_1.
  DATA LCL_02_2 TYPE REF TO LCL_HANDLER_02.
  CREATE OBJECT LCL_02_2.

*  事件注册
  SET HANDLER LCL_02_1->WRITE_DATA FOR LCL_01.

  SET HANDLER LCL_02_2->WRITE_DATA FOR LCL_01.

*  测试
  CALL METHOD LCL_01->GET_KNA1
    EXPORTING
      P_KUNNR LP_KUNNR.
原创粉丝点击