ABAP类与类之间值的传输(触发事件)例子

今天做了个练习,对两个不同类之间进行传参会有一定的理解,题目的要求是在这里插入图片描述
下面我就直接上代码了。

REPORT zjob_yls_class_test_02.
CLASS lcl_select DEFINITION.
  PUBLIC SECTION.
    METHODS select.
    EVENTS data_exist EXPORTING VALUE(gv_data) TYPE n.
ENDCLASS.

CLASS lcl_write_data DEFINITION.
  PUBLIC SECTION.
    METHODS write_data FOR EVENT data_exist OF  lcl_select
      IMPORTING gv_data.
ENDCLASS.

CLASS lcl_select IMPLEMENTATION.

  METHOD select.
    DATA lv_data  TYPE n LENGTH 2 VALUE 1.
    DATA lv_judge TYPE n LENGTH 2 VALUE 1.
    DO 50 TIMES.
      lv_data = lv_data + 1.
      IF lv_data MOD 10 = 0.
        RAISE EVENT data_exist
        EXPORTING
          gv_data = lv_data.
      ELSE.
*        WRITE : / '传输失败.'.
*        RETURN.
      ENDIF.

    ENDDO.
  ENDMETHOD.
ENDCLASS.

CLASS lcl_write_data IMPLEMENTATION.
  METHOD write_data.
    WRITE:/ '事件触发了输出参数10的倍数:',gv_data.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  PERFORM frm_data.
*&---------------------------------------------------------------------*
*& Form FRM_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_data .
  DATA lcl_object TYPE REF TO lcl_select.
  DATA lcl_object_write TYPE REF TO lcl_write_data.

  CREATE OBJECT lcl_object.
  CREATE OBJECT lcl_object_write.

  SET HANDLER lcl_object_write->write_data FOR lcl_object.
  CALL METHOD lcl_object->select.
ENDFORM.

运行结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值