Überblick
Das Interface
IF_BSP_NAVIGATION dient der Steuerung des Überganges zwischen BSPs einer BSP-Applikation.Eine entsprechende Interface-Referenz ist in allen Eventhandlern einer BSP über den Parameter
NAVIGATION verfügbar.Die Navigation zwischen BSPs kann auf zwei Arten erfolgen:
Bei der Seitensteuerung über das Navigationsinterface können (und müssen) in einigen Fällen Argumente an
Auto-Seitenattribute der Folgeseite übergeben werden. Hierzu stehen im Navigationsinterface geeignete Methoden zur Verfügung.
Beachten Sie dabei, dass die Menge der zu übergebenden Daten durch Limitationen der Web-Browser begrenzt sind (typischerweise 1 KB). Sie sollten also keinesfalls größere Datenmengen übergeben, sondern nach Möglichkeit eher Selektionsschlüssel, die zu diesen Daten führen.
Sollte dies in einzelnen Fällen nicht möglich sein, können Sie alternativ den Mechanismus des "Auto-Submit-Forms" verwenden (siehe unten unter
Vererbungshierarchie/Interfacekomposition
Implementierende Klassen
CL_BSP_NAVIGATION
Erweitertes Interface
-
Spezialisierende Interfaces
-
Attribute
-
Methoden
Methode call_application
|
Signatur |
method call_application |
|
|
Beschreibung |
Sie können diese Methode verwenden, um eine externe Applikation aufzurufen. Diese Applikation wird über den HTTP-Redirect-Mechanismus angesprungen. Die externe Applikation muss im Parameter URL angegeben werden.Damit aus der externen Applikation wieder zur rufenden Applikation zurückgekehrt werden kann, muss diese 1. geeignet implementiert sein und 2. die nötige Rücksprungadresse übergeben werden. Als Rücksprung-URL wird implizit die aktuelle Seite verwendet, aus der heraus der Aufruf der externen Applikation erfolgt. Über den Parameter return_event_id kann zusätzlich eine Event-ID gewählt werden, der beim Rücksprung als Event-ID im OnInputProcessing-Eventhandler dieser BSP ausgelöst werden soll.Da die Übergabe der Rücksprungadresse bei externen Applikationen nicht immer einheitlich vorausgesetzt werden kann, ist es möglich, diesen über den Parameter return_url_parameter frei zu wählen. Per Default ist der Name sap-exiturl, wodurch sich BSP-Applikationen untereinander einfach aufrufen können. Im Falle einer ITS-basierten Applikation wäre ~exitURL zu verwenden.
Die eigentliche Navigation wird hier noch nicht ausgelöst, sondern erst nach der Rückkehr aus dem BSP-Eventhandler! |
|
|
Parameter |
URL |
URL der externen Applikation |
|
RETURN_EVENT_ID |
Name des Parameters, mit dem die Rücksprungadresse/URL an die gerufene Applikation übergeben werden soll |
|
|
RETURN_URL_PARAMETER |
Event-ID, mit der beim Rücksprung aus der gerufenen Applikation der OnInputProcessing-Eventhandler der rufenden Seite angesprochen werden soll |
|
|
Return-Werte/Ausnahmen |
- |
|
Methode encode_parameters
|
Signatur |
method encode_parameters |
|
|
Beschreibung |
Diese Methode steuert, ob die über set_parameter() definierten Parameter unkodiert, d.h. in Klartext als Name/Wert-Paare im Query-String der URL, oder kodiert, d.h. BASE64-kodiert als Wert des URL-Parameter sap-params, übergeben werden sollen.Per Default werden Parameter kodiert übergeben.
Es handelt sich hierbei lediglich um eine kodierte, keinesfalls eine verschlüsselte Übertragung der Parameterwerte! |
|
|
Parameter |
ENCODED |
0: Parameter wird in Klartext als Name/Wert-Paare übergeben 1: Parameter wird BASE64-kodiert übergeben |
|
Return-Werte/Ausnahmen |
- |
|
Methode exit
|
Signatur |
method exit |
|
|
Beschreibung |
Diese Methode beendet diese BSP-Applikation unabhängig davon, ob diese Applikation stateful oder stateless arbeitet. Es wird insbesondere der Eventhandler if_bsp_application_events~on_stop getriggert, falls das Interface IF_BSP_APPLICATION_EVENTS von der Applikationsklasse implementiert wird.Der optionale Parameter exit_url kann verwendet werden, um per HTTP-Redirect zu einer beliebigen "Endeseite" bzw. URL zu springen.
Die eigentliche Navigation wird hier noch nicht ausgelöst, sondern erst nach der Rückkehr aus dem BSP-Eventhandler! |
|
|
Parameter |
EXIT_URL |
URL, zu der ein HTTP-Redirect als "Endeseite" ausgeführt werden soll. |
|
Return-Werte/Ausnahmen |
- |
|
Methode get_parameter
|
Signatur |
method get_parameter |
|
|
Beschreibung |
Diese Methode liefert den Wert des angeforderten Parameters aus dem Navigationsobjekt.
Im Gegensatz zu set_parameter() liefert diese Methode den Wert immer als String! |
|
|
Parameter |
NAME |
Name des Parameters |
|
VALUE |
Wert des Parameters |
|
|
Return-Werte/Ausnahmen |
- |
|
|
Querreferenz |
set_parameter |
|
Methode goto_page
|
Signatur |
method goto_page |
|
|
Beschreibung |
Diese Methode veranlasst die Navigation zur gegebenen URL. In den meisten Fällen ist diese URL eine relative URL und enthält nur den Namen der Folgeseite, also z.B. navigation->goto_page( 'confirm.htm' ).Im Gegensatz zur Methode next_page() wird hier die Folgeseite direkt angegeben.
Die eigentliche Navigation wird hier noch nicht ausgelöst, sondern erst nach der Rückkehr aus dem BSP-Eventhandler! |
|
|
Parameter |
URL |
URL zur Folgeseite, typischerweise eine relative URL bzw. nur der Seitenname |
|
Return-Werte/Ausnahmen |
- |
|
|
Querreferenz |
next_page |
|
Methode has_parameters
|
Signatur |
method has_parameters |
|
|
Beschreibung |
Diese Methode signalisiert, ob für das aktuelle Navigationsobjekt Paramter gesetzt wurden (0: nein, 1: ja). |
|
|
Parameter |
- |
|
|
Return-Werte/Ausnahmen |
HAS_PARAMETERS |
0: keine Parameter gesetzt 1: Parameter gesetzt |
|
Querreferenz |
set_parameter |
|
Methode next_page
|
Signatur |
method next_page |
|
|
Beschreibung |
Diese Methode definiert die Folgeseite über Angabe eines Seitenausgangs. Seitenausgänge eines Navigationsgraphen können in der Entwicklungsumgebung (Transaktion SE80) zu einer BSP Applikation definiert werden. Dabei wird ausgehend von einer aktuellen Seite über einen Seitenausgang (i.e. eine "Kante", die durch einen eindeutigen Namen identifiziert wird) eine Zielseite zugeordnet. Bei der Navigation zwischen Seiten wird dann nicht direkt die Folgeseite im ABAP-Code definiert, sondern stattdessen eine Indirektion eingeschoben. Es wird der Name des Seitenausgangs verwendet, um die aktuell zum Seitenausgang zugeordnete Folgeseite zu ermitteln. Diese kann dann leicht geändert werden, ohne alle Verwendungstellen im Code anpassen zu müssen.
Die eigentliche Navigation wird hier noch nicht ausgelöst, sondern erst nach der Rückkehr aus dem BSP-Eventhandler! |
|
|
Parameter |
EXIT |
Name des Seitenausgangs im Navigationsgraphen (case-insensitiv) |
|
Return-Werte/Ausnahmen |
- |
|
|
Querreferenz |
goto_page |
|
Methode response_complete
|
Signatur |
method response_complete . |
|
Beschreibung |
Sie können diese Methode verwenden, um der BSP-Laufzeit zu signalisieren, dass nach der Rückkehr aus dem BSP-Eventhandler, in dem sie aufgerufen wurde, keine weiteren Eventhandler/Sektionen mehr angesprochen werden sollen. Vielmehr ist die HTTP-Response bereits vollständig erzeugt und kann an den Client/Browser zurückgesendet werden. Diese Methode wird typischerweise in der OnRequest- oder OnInitialization-Sektion einer BSP gerufen, wenn die HTTP-Response auf anderem Wege als der OnLayout-Sektion erzeugt (z.B. MIME-Objekt aus der Datenbank oder generierter XML-Output) und direkt in das HTTP-Response-Objekt geschrieben wurde. Das Aufrufen der OnLayout-Sektion würde in solchen Fällen leicht unerwünschte Ausgaben an die Antwort anfügen (z.B. Leerzeichen, die bei Binärdokumenten kritisch sind) und kann hiermit unterdrückt werden. |
|
Parameter |
- |
|
Return-Werte/Ausnahmen |
- |
Methode set_parameter
|
Signatur |
method set_parameter |
|
|
Beschreibung |
Diese Methode setzt den gegebenen Parameter für die Übergabe an die Folgeseite. Der Name des Parameters deckt sich in der Regel mit einem Auto-Seitenattribut der Folgeseite. Andernfalls kann er über das Request-Objekt und die Methode if_http_request~get_form_field() in der Folgeseite gelesen werden.Der Wert des Parameters kann unter manchen Umständen entfallen. Dies ist dann der Fall, wenn im aktuellen Request ein gleichnamiges Form-Feld gesendet wurde, welches an die Folgeseite "durchgeschleust" werden soll. Der Parameterwert wird dann einfach auf Grund von Namensgleichheit aus dem aktuellen Request übernommen und an die Folgeseite übergeben. Da beliebige ABAP-Datentypen außer Referenzen übergeben werden können, kann der Parameter VALUE nur untypisiert sein. |
|
|
Parameter |
NAME |
Name des Parameters |
|
VALUE |
Wert des Parameters; falls der Parameter nicht angegeben ist, wird der Wert des gleichnamigen Form-Feldes aus dem HTTP-Request übernommen. |
|
|
Return-Werte/Ausnahmen |
- |
|
|
Querreferenz |
get_parameter, has_parameters |
|
Methode use_auto_submit_form
|
Signatur |
method use_auto_submit_form |
|
|
Beschreibung |
Diese Methode veranlasst, dass bei der Navigation zu einer Folgeseite kein HTTP-Redirect verwendet wird, sondern stattdessen eine HTML-Seite mit eingebettetem Formular eingesetzt wird. Die zu übergebenden Parameter werden in das Formular als verborgene Felder eingemischt, und das Formular wird direkt nach dem Erhalt im Browser automatisch wieder an die Folgeseite abgeschickt (auto-submit). Durch diese Methode können Sie die Datenmengebegrenzung bei Query-String-Parametern im Redirect-Fall umgehen. Beachten Sie jedoch, dass Auto-Submit-Formulare in der Browser-Historie zu Problemen führen können und dieser Mechanismus z.B. mit WAP-Devices nicht verwendet werden kann. Über den Parameter target_frame können Sie steuern, in welchem HTML-Frame (ggfs. neues Browser-Fenster) die Folgeseite zur Anzeige kommen soll. |
|
|
Parameter |
target_frame |
Name des Frames, in dem die Folgeseite angezeigt werden soll. |
|
Return-Werte/Ausnahmen |
cx_bsp_inv_param_type |
Ausnahme: Der Typ des Parameters ist nicht zulässig. |