SAP ABAP - Acara Objek

Sebuah eventadalah sekumpulan hasil yang ditentukan di kelas untuk memicu pengendali kejadian di kelas lain. Saat sebuah peristiwa dipicu, kita bisa memanggil sejumlah metode penanganan peristiwa. Hubungan antara pemicu dan metode penangannya sebenarnya ditentukan secara dinamis pada waktu proses.

Dalam pemanggilan metode normal, program pemanggil menentukan metode mana dari sebuah objek atau kelas yang perlu dipanggil. Karena metode penangan tetap tidak terdaftar untuk setiap peristiwa, dalam kasus penanganan peristiwa, metode penangan menentukan peristiwa yang perlu dipicu.

Peristiwa kelas bisa memicu metode penanganan peristiwa dari kelas yang sama dengan menggunakan pernyataan RAISE EVENT. Untuk sebuah acara, metode penanganan kejadian dapat didefinisikan di kelas yang sama atau berbeda dengan menggunakan klausa FOR EVENT, seperti yang ditunjukkan dalam sintaks berikut -

FOR EVENT <event_name> OF <class_name>.

Mirip dengan metode kelas, peristiwa dapat memiliki antarmuka parameter tetapi hanya memiliki parameter keluaran. Parameter keluaran diteruskan ke metode penanganan kejadian oleh pernyataan RAISE EVENT yang menerimanya sebagai parameter masukan. Sebuah acara ditautkan ke metode penangannya secara dinamis dalam program dengan menggunakan pernyataan SET HANDLER.

Ketika sebuah kejadian dipicu, metode penanganan kejadian yang sesuai seharusnya dijalankan di semua kelas penanganan.

Contoh

REPORT ZEVENT1. 
CLASS CL_main DEFINITION. 
PUBLIC SECTION. 
DATA: num1 TYPE I. 
METHODS: PRO IMPORTING num2 TYPE I. 
EVENTS: CUTOFF. 
ENDCLASS. 

CLASS CL_eventhandler DEFINITION. 
PUBLIC SECTION. 
METHODS: handling_CUTOFF FOR EVENT CUTOFF OF CL_main. 
ENDCLASS. 

START-OF-SELECTION. 
DATA: main1 TYPE REF TO CL_main. 
DATA: eventhandler1 TYPE REF TO CL_eventhandler. 

CREATE OBJECT main1. 
CREATE OBJECT eventhandler1. 

SET HANDLER eventhandler1→handling_CUTOFF FOR main1. 
main1→PRO( 4 ).
CLASS CL_main IMPLEMENTATION.
METHOD PRO.
num1 = num2.
IF num2 ≥ 2. 
RAISE EVENT CUTOFF.
ENDIF. 
ENDMETHOD.
ENDCLASS.

CLASS CL_eventhandler IMPLEMENTATION.
METHOD handling_CUTOFF.
WRITE: 'Handling the CutOff'. 
WRITE: / 'Event has been processed'. 
ENDMETHOD. ENDCLASS.

Kode di atas menghasilkan keluaran sebagai berikut -

Handling the CutOff 
Event has been processed