事件是在類中定義的一組結(jié)果,用于觸發(fā)其他類中的事件處理程序。 當(dāng)事件被觸發(fā)時(shí),我們可以調(diào)用任何數(shù)量的事件處理程序方法。 觸發(fā)器及其處理程序方法之間的鏈接實(shí)際上是在運(yùn)行時(shí)動(dòng)態(tài)決定的。
在正常的方法調(diào)用中,調(diào)用程序確定對(duì)象或類的哪個(gè)方法需要被調(diào)用。 由于固定處理程序方法未針對(duì)每個(gè)事件注冊(cè),因此在事件處理的情況下,處理程序方法確定需要觸發(fā)的事件。
類的事件可以通過(guò)使用RAISE EVENT語(yǔ)句觸發(fā)同一類的事件處理程序方法。 對(duì)于事件,可以通過(guò)使用FOR EVENT子句在相同或不同的類中定義事件處理程序方法,如以下語(yǔ)法中所示 -
FOR EVENT <event_name> OF <class_name>.
類似于類的方法,事件可以有參數(shù)接口,但它只有輸出參數(shù)。 輸出參數(shù)通過(guò)RAISE EVENT語(yǔ)句傳遞到事件處理程序方法,RAISE EVENT語(yǔ)句接收它們作為輸入?yún)?shù)。 事件通過(guò)使用SET HANDLER語(yǔ)句在程序中動(dòng)態(tài)鏈接到其處理程序方法。
當(dāng)觸發(fā)事件時(shí),應(yīng)該在所有處理類中執(zhí)行適當(dāng)?shù)氖录幚沓绦蚍椒ā?/span>
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.
上面的代碼產(chǎn)生以下輸出
Handling the CutOff Event has been processed
更多建議: