今天做了个练习,对两个不同类之间进行传参会有一定的理解,题目的要求是
下面我就直接上代码了。
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.
运行结果如下: