SAP ABAP 對象事件

2018-01-03 09:09 更新

事件是在類中定義的一組結(jié)果,用于觸發(fā)其他類中的事件處理程序。 當(dāng)事件被觸發(fā)時(shí),我們可以調(diào)用任何數(shù)量的事件處理程序方法。 觸發(fā)器及其處理程序方法之間的鏈接實(shí)際上是在運(yùn)行時(shí)動態(tài)決定的。

在正常的方法調(diào)用中,調(diào)用程序確定對象或類的哪個(gè)方法需要被調(diào)用。 由于固定處理程序方法未針對每個(gè)事件注冊,因此在事件處理的情況下,處理程序方法確定需要觸發(fā)的事件。

類的事件可以通過使用RAISE EVENT語句觸發(fā)同一類的事件處理程序方法。 對于事件,可以通過使用FOR EVENT子句在相同或不同的類中定義事件處理程序方法,如以下語法中所示 -

FOR EVENT <event_name> OF <class_name>.

類似于類的方法,事件可以有參數(shù)接口,但它只有輸出參數(shù)。 輸出參數(shù)通過RAISE EVENT語句傳遞到事件處理程序方法,RAISE EVENT語句接收它們作為輸入?yún)?shù)。 事件通過使用SET HANDLER語句在程序中動態(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
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號