
Der Benutzer eines Anwendungsprogramms kann Ereignisse in einem Custom Controls auslösen. Das Anwendungsprogramm erhält dann die Kontrolle und kann auf das Ereignis reagieren.
Typische Ereignisse sind z.B. Doppelklick und Drag&Drop.
Wie in Architektur des Control Frameworks beschrieben, besitzt sowohl der Automation Controller als auch das OO Control Framework eine Tabelle aller relevanten Controlereignisse. Diese Tabellen müssen vom Anwendungsprogramm aufgebaut werden. Die Ereignistabelle am Frontend enthält Control-Instanzen und Ereignisse. Die Ereignistabelle am Backend enthält zudem die ABAP-Behandlermethode, die für die Ereignisse registriert wurde.
Der Aufbau der Tabellen erfolgt über eine spezielle Methode des OO Control Frameworks ( Control->set_registered_events ). Bei der Registrierung des Ereignisses müssen Sie festlegen, ob das Ereignis als Systemereignis oder als Anwendungsereignis bearbeitet werden soll:
Systemereignisse werden ausgelöst, bevor die automatische Feldprüfung (z.B. Musseingaben) und der Feldtransport durchgeführt werden. PAI- und PBO-Ereignisse werden nicht ausgelöst. Daher haben Sie keinerlei Zugriff auf aktuell auf dem Dynpro veränderte Werte. Auch nach dem Ereignis findet kein Feldtransport zum Dynpro mehr statt. Daher werden Werte, die Sie in der Ereignisbehandlung verändert haben, nicht auf dem Dynpro aktualisiert.
Die zum Ereignis definierte Behandlermethode wird automatisch vom System aufgerufen. Sie können jedoch mit der Methode set_new_ok_code einen neuen Wert für das Feld OK_CODE setzen. Dies löst die PAI- und PBO-Module aus. Sie können die Inhalte des Felds OK-CODE wie normal in einem PAI-Modul auswerten.
Anwendungsereignisse werden automatisch zum Endzeitpunkt des PAI-Ereignisses ausgelöst. Es wurden alle Feldprüfungen durchgeführt und auch der Feldtransport hat stattgefunden. Wenn Sie die Ereignisbehandlermethode an einer bestimmten Stelle der PAI-Berarbeitung aufrufen möchten, müssen Sie den Ereignisbehandler mit der statischen Methode CL_GUI_CFW=>DISPATCH auslösen.
Eine Behandlermethode für ein Ereignis muss in Ihrem Anwendungsprogramm über die ABAP-Anweisung SET HANDLER festgelegt werden. Die Behandlermethode muss in Ihrem Anwendungsprogramm als Methode einer (lokalen) Klasse angelegt werden. Sie können die Behandlermethode als Instanzmethode oder als statische Methode anlegen.

Wird auf einem Custom Control ein Ereignis ausgelöst, überprüft der Automation Controller, ob dieses Ereignis in seiner Tabelle registriert wurde. Wurde das Ereignis nicht registriert, wird das Ereignis vom Automation Controller ignoriert. Wurde es dagegen registriert, generiert der Automation Controller einen OK_CODE , der an das OO Control Framework weitergeleitet wird.
Je nach Art des Ereignisses wird dann entweder direkt (bei einem Systemereignis) oder nach Aufruf der statischen Methode CL_GUI_CFW=>DISPATCH (bei einem Anwendungsereignis) die zum Ereignis registrierte Behandlermethode aufgerufen. Die Behandlermethode erhält den Ereignisparameter sender . Der Parameter enthält die Objektreferenz des Controls, das dieses Ereignis ausgelöst hat.
Die statische Methode CL_GUI_CFW=>DISPATCH muss zur Auswertung von Anwendungsereignissen innerhalb eines PAI-Moduls aufgerufen werden.
Der OK_CODE eines Ereignisses wird durch den Aufruf der Methode CL_GUI_CFW=>DISPATCH "verbraucht". Daher führt ein zweiter Aufruf der Methode nicht zu einem erneuten Auslösen der Behandlermethode.
Über den Parameter RC der Methode CL_GUI_CFW=>DISPATCH erhalten Sie Informationen, ob das Ereignis erfolgreich an eine Behandlermethode weitergeleitet werden konnte.
