الثلاثاء، 20 أكتوبر 2020

SAP ABAP - Object Events كائن الأحداث في ساب

 SAP ABAP - Object Events كائن الأحداث في ساب

SAP ABAP - Object Events كائن الأحداث في ساب

SAP ABAP - Object Events كائن الأحداث في ساب 

 هو عبارة عن مجموعة من النتائج التي تم تعريفها في فئة لتحريك معالجات الأحداث في الفئات الأخرى. عندما يتم تشغيل حدث ما ، يمكننا استدعاء أي عدد من طرق معالج الحدث. يتم تحديد الارتباط بين المشغل وطريقة المعالج ديناميكيًا في وقت التشغيل.

في استدعاء الطريقة العادية ، يحدد برنامج الاستدعاء طريقة الكائن أو الفئة التي يجب استدعاءها. نظرًا لعدم تسجيل طريقة المعالج الثابت لكل حدث ، في حالة معالجة الحدث ، تحدد طريقة المعالج الحدث الذي يجب تشغيله.

يمكن لحدث من فئة تشغيل أسلوب معالج حدث من نفس الفئة باستخدام عبارة RAISE EVENT. بالنسبة لحدث ما ، يمكن تعريف طريقة معالج الحدث في نفس الفئة أو فئة مختلفة باستخدام جملة FOR EVENT ، كما هو موضح في بناء الجملة التالي -

FOR EVENT <event_name> OF <class_name>.

على غرار طرق الفصل ، يمكن أن يكون للحدث واجهة معلمة ولكن يحتوي فقط على معلمات الإخراج. يتم تمرير معلمات الإخراج إلى أسلوب معالج الحدث بواسطة عبارة RAISE EVENT التي تستقبلها كمعلمات إدخال. حدث مرتبط بطريقة المعالج بشكل ديناميكي في برنامج باستخدام عبارة SET HANDLER.

عندما يتم تشغيل حدث ما ، من المفترض أن يتم تنفيذ أساليب معالج الحدث المناسبة في جميع فئات المعالجة.

مثال

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 eventhandler1handling_CUTOFF FOR main1. 
main1PRO( 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.

ينتج الكود أعلاه الناتج التالي -

Handling the CutOff 
Event has been processed




التسميات: