Auslösen eines Portal-Ereignisses 
Ein Portal-Ereignis ist ein Ereignis, das innerhalb eines iViews, in diesem Fall also innerhalb einer Web-Dynpro-Anwendung, ausgelöst und vom Portal an ein oder mehrere andere iViews weiter geleitet wird. Das Portal reicht das Ereignis an alle iViews weiter, die sich auf dieses Ereignis registriert haben. Auf diese Weise lassen sich Ereignisse zwischen mehreren, auf unterschiedlichen Entwicklungstechniken basierenden iViews transportieren.
Hinweis
Das Portal-Eventing funktioniert zwischen iViews, die auf dem selben Browser-Window platziert sind.
Ausserdem können iViews neue Browser-Fenster mittels JavaScript öffnen. Das neue Browser-Fenster ist dabei das untergeordnete Fenster, das Browser-Fenster des öffnenden iViews ist das übergeordnete Fenster.
Ereignisse können von einem iView in einem untergeordneten Browser-Fenster auch zu iViews in allen übergeordneten Browser-Fenstern weitergeleitet werden.
Ereignisse können jedoch nicht von einem übergeordneten Browser-Fenster zu einem untergeordneten Browser-Fenster weitergeleitet werden.
Zusätzlich ist es notwendig, dass alle Teilnehmer in einer Domäne angesiedelt sind. Sonst kann das Portal-Eventing aufgrund von JavaScript-Einschränkungen nicht funktionieren.
In Web Dynpro ABAP stellt der Portal-Manager (das Interface IF_WD_PORTAL_INTEGRATION) die Methode FIRE zur Verfügung. Mit Hilfe des Web-Dynpro-Code-Wizard können Sie diesen Methodenaufruf als Vorlage in Ihren Quell-Code einfügen und entsprechend den Anforderungen Ihrer Anwendung mit Werten füllen.

Neben den obligatorischen Parametern Namensraum und Namenkönnen noch ein Parameter und ein Geltungsbereich übergeben werden:
Namensraum, in dem das Ereignis abgelegt ist |
’PORTAL_EVENT_NAMESPACE’ |
Name des Ereignisses |
’PORTAL_EVENT_NAME’ |
Parameter |
’PORTAL_EVENT_PARAMETER’ |
Geltungsbereich |
PORTAL_EVENT_SCOPE |
Mit dem Geltungsbereich können Sie festlegen, in welchen Browser-Fenstern das Ereignis weitergeleitet wird:
IF_WD_PORTAL_INTEGRATION=>CO_EVENT_SCOPE-CURRENT_WINDOW |
Das Ereignis wird nur im selben Browser-Fenster weitergeleitet |
IF_WD_PORTAL_INTEGRATION=>CO_EVENT_SCOPE-CHILD_TO_PARENTS |
Das Ereignis wird an alle übergeordneten Browser-Fenster weitergeleitet, aber nicht im selben Browser-Fenster |
IF_WD_PORTAL_INTEGRATION=>CO_EVENT_SCOPE-CURRENT_WINDOW_AND_PARENTS |
Das Ereignis wird an alle übergeordneten Browser-Fenster und im selben Browser-Fenster weitergeleitet |
Sie können ein solches Portal-Ereignis generell überall in Ihrer Web-Dynpro-Anwendung auslösen. Das Ereignis wird mit der nächsten Response zum Client geschickt. Sie können auch mehrere Portal-Ereignisse in einem Request-Response-Zyklus auslösen.
Es ist jedoch üblich, ein Portal-Ereignis in einem Aktionsbehandler einer Web-Dynpro-Anwendung auszulösen. Dies könnte beispielsweise der Aktionsbehandler eines UI-Elements (z.B. eines Buttons) sein. Durch Auslösen eines Portal-Ereignisses wird ein zunächst Anwendungs-internes Ereignis aus dem iView heraus an das Portal übergeben und kann innerhalb eines oder mehrerer andere iViews behandelt werden.
Die erlaubten Zeichen für die Angabe des Namensraum und des Namens einer Ereignis-Definition sind auf die Namensräume des SAP Enterprise Portal - Client Framework beschränkt.
Verwenden Sie daher lediglich die in der folgenden Tabelle aufgelisteten Zeichen.
Erlaubte Zeichen
Großbuchstaben |
"A" - "Z" |
Kleinbuchstaben |
"a" - "z" |
Zahlen |
"0" - "9" |
Sonderzeichen |
"-" "_" "." |
Beachten Sie zusätzlich Folgendes:
Beginnen Sie den Namensraum mit der Zeichenfolge urn:
Die Namensräume com.sapportals.portal.* und com.sapportals.* sind für SAP reserviert und sollten daher nicht von Ihnen für Ihre Anwendungen verwendet werden.
Beachten Sie bei der Schreibweise von Namensraum und Namen die Groß- und Kleinschreibung.
Beispiel
urn:com.sap.webdynpro.testApplications.testEvent
Beispiele finden Sie im System in den Web-Dynpro-Anwendungen: WDR_TEST_PORTAL_EVENT_FIRE
Ereignis auslösen
WDR_TEST_PORTAL_EVENT_FIRE2
Diese Anwendung dient als Testanwendung. Sie können dort den Namen eines Ereignisses aus Ihrer eigenen Anwendung eingeben um das Ereignis separat zu testen.