SAP ABAP 对象事件

事件是在类中定义的一组结果,用于触发其他类中的事件处理程序。 当事件被触发时,我们可以调用任何数量的事件处理程序方法。 触发器及其处理程序方法之间的链接实际上是在运行时动态决定的。

赛锐信息:SAP ABAP 对象事件 图1
赛锐信息,SAP ERP定制,ERP定制

在正常的方法调用中,调用程序确定对象或类的哪个方法需要被调用。 由于固定处理程序方法未针对每个事件注册,因此在事件处理的情况下,处理程序方法确定需要触发的事件。

类的事件可以通过使用RAISE EVENT语句触发同一类的事件处理程序方法。 对于事件,可以通过使用FOR EVENT子句在相同或不同的类中定义事件处理程序方法,如以下语法中所示 –

FOR EVENT <event_name> OF <class_name>.

类似于类的方法,事件可以有参数接口,但它只有输出参数。 输出参数通过RAISE EVENT语句传递到事件处理程序方法,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 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.

上面的代码产生以下输出

Handling the CutOff 
Event has been processed

关于赛锐信息

作为SAP的资深合作伙伴,赛锐信息是一家专业提供SAP行业化管理软件解决方案的顾问公司,致力于为企业提供SAP ERP系统咨询服务、IT规划、业务流程优化、信息系统实施、行业信息系统方案开发,运营外包及售后维护等全面的服务方案。已服务1000+家不同行业、规模的大中小型企业客户。在电子高科技、汽车零部件、印刷包装、医疗器械、快消品、专业服务等行业信息化管理领域具有领导性地位。

相关新闻

联系我们

联系我们

130-0752-1773

在线咨询:点击这里给我发消息

邮件:info@sapzx.com

工作时间:周一至周五9:00-18:00,节假日正常休息

关注微信
关注微信
分享本页
返回顶部