There are 4 steps to accomplish the events:
- Events raise
- Event handler
- Set handler
- Call Method
For File Structure :
- YYREX_Events_Top – Data
- YYREX_Events_CL1 – classes
- YYREX_Events_O01 – PBO
- YYREX_Events_I01 – PAI
Create objects(YYREX_Events_TOP)
* Deffered to declare class before creating objects
PROGRAM YYREX_EVENTHANDLER_CONCEPT.
Class: lcl_processor DEFINITION DEFERRED,
lcl_handler DEFINITION DEFERRED.
Data: go_processing TYPE REF TO lcl_processor,
go_handling TYPE REF TO lcl_handler.
Create Classes(YYREX_Events_CL1)
* create class
class lcl_processor DEFINITION.
PUBLIC SECTION.
EVENTS trigger.
METHODS trigger_event.
ENDCLASS.
class lcl_processor IMPLEMENTATION.
METHOD trigger_event.
RAISE EVENT trigger.
ENDMETHOD.
ENDCLASS.
class lcl_handler DEFINITION.
PUBLIC SECTION.
METHODS return FOR EVENT trigger
OF lcl_processor.
class lcl_handler IMPLEMENTATION.
METHOD return.
MESSAGE 'you clicked return ' TYPE 'I'.
ENDMETHOD.
ENDCLASS.
Screen PAI and PBO
*Screen number
PROCESS BEFORE OUTPUT.
MODULE STATUS_9001.
*
PROCESS AFTER INPUT.
MODULE EXIT_COMMAND AT EXIT-COMMAND.
MODULE USER_COMMAND_9001
Create objects and set handler, call method
MODULE user_command_9001 INPUT.
IF Sy-ucomm = 'MSG'.
* MESSAGE 'you click on button' TYPE 'I'.
Create OBJECT go_processing.
Create OBJECT go_handling.
Create OBJECT go_handling1.
SET HANDLER go_handling->return FOR go_processing.
CALL METHOD go_processing->trigger_event.
ENDIF.
ENDMODULE.