1 REPORT Y_OOALV_TEST.
2 TYPE-POOLS:SLIS.
3 PARAMETERS:P_COUNT TYPE I.
4
5 CLASS GET_SPFLI DEFINITION. "理解为基础类
6 PUBLIC SECTION.
7 METHODS:GET_DATA IMPORTING AMOUNT TYPE I. "传入参数
8 EVENTS:DATA_EXIST EXPORTING VALUE(DATA) TYPE ANY." 传出参数 参照类型是自己想的 后面找到对的再改
9 PRIVATE SECTION.
10 DATA:IT_SPFLI TYPE STANDARD TABLE OF SPFLI,
11 WA_SPFLI TYPE SPFLI.
12 ENDCLASS.
13
14 CLASS SET_HANDLER DEFINITION."理解为事件类
15 PUBLIC SECTION.
16 METHODS:HANDLER_RAISED FOR EVENT DATA_EXIST OF GET_SPFLI IMPORTING DATA. "理解为为某个类的事件而产生的方法,相当于将2个类关联起来
17 PRIVATE SECTION.
18 ENDCLASS.
19
20 CLASS GET_SPFLI IMPLEMENTATION. "基础类的实现
21 METHOD:GET_DATA.
22 SELECT * FROM SPFLI INTO CORRESPONDING FIELDS OF TABLE IT_SPFLI UP TO AMOUNT ROWS. "根据传入参数取数
23 IF SY-SUBRC = 0.
24 RAISE EVENT DATA_EXIST EXPORTING DATA = IT_SPFLI. "取数成功,则执行事件
25 ELSE.
26 WRITE '取数失败'.
27 ENDIF.
28 ENDMETHOD.
29 ENDCLASS.
30
31 CLASS SET_HANDLER IMPLEMENTATION.
32 METHOD:HANDLER_RAISED."事件方法
33 CL_DEMO_OUTPUT=>DISPLAY( DATA ).
34 ENDMETHOD.
35 ENDCLASS.
36
37 START-OF-SELECTION.
38 DATA:DISPLAY_DATA TYPE REF TO GET_SPFLI.
39 DATA:HANDLE TYPE REF TO SET_HANDLER.
40 CREATE OBJECT:DISPLAY_DATA,HANDLE.
41 SET HANDLER HANDLE->HANDLER_RAISED FOR ALL INSTANCES."事件注册 ,必须要有
42 DISPLAY_DATA->GET_DATA( P_COUNT )."执行方法
