Web Dynpro for Java - Amazon S3Bertram Ganz, Jochen Gürtler, Timo Lakner Praxisbuch Web Dynpro for...
Transcript of Web Dynpro for Java - Amazon S3Bertram Ganz, Jochen Gürtler, Timo Lakner Praxisbuch Web Dynpro for...
Bertram Ganz, Jochen Gürtler, Timo Lakner
PraxisbuchWeb Dynpro for Java
5Inhalt
Inhalt
1 Einleitung 13
2 Web-Dynpro-Architekturkonzepte 17
2.1 Architekturkonzepte ........................................................................................ 18
2.2 SAP NetWeaver-Systemlandschaft ............................................................... 21
2.3 Zusammenfassung und Ausblick ................................................................... 23
3 Web-Dynpro-GameStation 25
3.1 Komponentisierung am Beispiel der Web-Dynpro-GameStation ........... 25
3.2 Mit Komponenten zur Anwendungsarchitektur ......................................... 283.2.1 Grobstruktur der Benutzeroberfläche ............................................. 283.2.2 Nachteile großer Web-Dynpro-Komponenten ............................. 293.2.3 Entwurf einer einfachen Komponenten-Architektur .................... 30
3.3 Erweiterbarkeit durch Komponenten-Interfaces ........................................ 343.3.1 Komponenten-Interface einer Spiel-Komponente ........................ 363.3.2 Deklaration eines Komponenten-Interfaces in den
Web-Dynpro-Werkzeugen ............................................................... 373.3.3 Component-Usages ........................................................................... 403.3.4 Component-Usages und Komponenten-Interfaces ...................... 433.3.5 Einbettung der Interface-Definition einer Spiel-Komponente
in die Wurzel-Komponente ............................................................. 46
3.4 Einbettung der GameStation in Web-Dynpro-DCs ................................... 473.4.1 Web-Dynpro-Development-Components ..................................... 473.4.2 DC-Separation der GameStation im
NWDI-Komponentenmodell ........................................................... 503.4.3 Verwendungsbeziehung zwischen DCs definieren ....................... 51
3.5 Implementierung eines Komponenten-Interfaces ...................................... 553.5.1 Neue Web-Dynpro-Komponente erzeugen .................................. 553.5.2 Implementierungsbeziehung definieren ......................................... 563.5.3 Komponente vollständig implementieren ...................................... 58
3.6 Erzeugung von Spiel-Komponenten zur Laufzeit ........................................ 613.6.1 IWDComponentUsage-API .............................................................. 623.6.2 DeploymentManager-Komponente ................................................ 653.6.3 Endgültige Architektur der GameStation-Anwendung ................. 663.6.4 Implementierung zur Erzeugung von
Spiel-Komponenteninstanzen .......................................................... 68
Inhalt6
3.7 Komponentenübergreifendes Context-Mapping ........................................ 723.7.1 Internes Interface-Context-Mapping .............................................. 733.7.2 Externes Interface-Context-Mapping .............................................. 753.7.3 Deklaration des externen Interface-Context-Mappings ............... 77
3.8 Komponentenübergreifendes Eventing nutzen .......................................... 823.8.1 Serverseitiges Eventing zwischen Kind- und Vater-Komponente 833.8.2 Dynamische Event-Subscription ...................................................... 873.8.3 Methodenaufrufe als Ersatz für serverseitiges Eventing ............... 89
3.9 Verwendung von Component-Interface-Views ........................................... 923.9.1 Component-Interface-Views ............................................................ 933.9.2 Einbettung von Component-Interface-Views in
ViewContainer-UI-Elemente ............................................................ 933.9.3 Mit Start-View und URL-Parameter zur initialen
View-Assembly navigieren ................................................................ 993.9.4 Alternative Lösungen für das Default-View-Problem ................... 1043.9.5 Inter-Komponenten-Navigation zwischen Component-
Interface-Views .................................................................................. 107
3.10 Zusammenfassung ............................................................................................ 113
4 Web-Dynpro-Google-Suche 115
4.1 Google-Webservice .......................................................................................... 115
4.2 Erzeugen des Google-Webservice-Models .................................................. 1174.2.1 Einschränkungen des Webservice-Models ..................................... 1204.2.2 Neugenerierung des Webservice-Models ...................................... 120
4.3 Verwendung des Google-Models .................................................................. 1214.3.1 Verwendung einer Model-Komponente ........................................ 1214.3.2 Verknüpfung des Models mit einer Web-Dynpro-
Komponente ...................................................................................... 122
4.4 Realisierung der Suchoberfläche und Definition des Anwendungsrahmens ...................................................................................... 1264.4.1 Deklaratives Erzeugen der Benutzeroberfläche ............................. 1264.4.2 Dynamisches Erzeugen der Benutzeroberfläche ............................ 1274.4.3 Realisierung der Suchmaske ............................................................. 1284.4.4 Anstoßen der Google-Suche ............................................................ 1304.4.5 Erstellung der Navigationsleiste ....................................................... 131
4.5 Definition der initialen Darstellung einer Web-Dynpro-Applikation ..... 1344.5.1 Mehrere Darstellungsvarianten für eine Web-Dynpro-
Applikation ......................................................................................... 1354.5.2 Mehrere Web-Dynpro-Applikationen für mehrere
Darstellungsvarianten ........................................................................ 139
4.6 Visualisierung der Ergebnisliste ..................................................................... 1404.6.1 View TableResultListView ................................................................. 1404.6.2 View DeclaredResultListView ........................................................... 1434.6.3 View DynamicResultListView ........................................................... 1464.6.4 Anzeige von HTML-basierten Suchergebnissen ............................. 147
4.7 Zusammenfassung ............................................................................................ 151
7Inhalt
5 Web Dynpro und SAP NetWeaver Portal 153
5.1 SAP NetWeaver Portal .................................................................................... 1535.1.1 Content-Modell ................................................................................. 1545.1.2 Benutzeroberfläche ........................................................................... 156
5.2 Erzeugen von Portal-Inhalten ........................................................................ 1605.2.1 Anlegen eines Systems in der Portal Landscape ............................ 1605.2.2 Erzeugen eines Web-Dynpro-iViews .............................................. 1675.2.3 Editieren der Eigenschaften eines Web-Dynpro-iViews ............... 1735.2.4 Definition einer Rolle ........................................................................ 1825.2.5 Zuweisung einer Rolle zu einem Benutzer ..................................... 187
5.3 Verfügbare Web-Dynpro-Anwendungen ..................................................... 1895.3.1 Administrationswerkzeuge ............................................................... 1895.3.2 Testanwendungen ............................................................................. 190
5.4 SAP Application Integrator ............................................................................. 1915.4.1 Starten einer Web-Dynpro-Anwendung im
SAP NetWeaver Portal ...................................................................... 1925.4.2 Erweiterung des URL-Templates ..................................................... 1945.4.3 Definition von URL-Template-Variablen ........................................ 1965.4.4 Debugging des SAP Application Integrators .................................. 198
5.5 Zusammenfassung ............................................................................................ 201
6 Web-Dynpro-NavigationTester 203
6.1 Web-Dynpro-NavigationTester ..................................................................... 2036.1.1 Bestimmung der Laufzeitumgebung ............................................... 2056.1.2 Auswahl des Navigationszieles ........................................................ 2066.1.3 Bestimmung des Navigationsverhaltens ......................................... 207
6.2 Navigation außerhalb des SAP NetWeaver Portal ..................................... 2086.2.1 Zusammenfassung von Web-Dynpro-Applikationen .................... 2086.2.2 Berechnung einer Web-Dynpro-Applikations-URL ...................... 2096.2.3 Übergabe von Parametern ............................................................... 2136.2.4 Auslesen von Parametern ................................................................. 2146.2.5 Verwendung des Exit-Plugs .............................................................. 2186.2.6 Starten der Web-Dynpro-Zielapplikation in einem
zusätzlichen Fenster .......................................................................... 223
6.3 Encodierung von Übergabeparametern ....................................................... 2256.3.1 Einbindung der Web-Dynpro-Entwicklungskomponente
tc~utils ................................................................................................ 2256.3.2 Beschreibung der Datei portalapp.xml ........................................... 2306.3.3 Encodierung der Parameterwerte .................................................... 231
6.4 Navigation innerhalb des SAP NetWeaver Portal ...................................... 2336.4.1 Anstoßen einer Portal-Navigation ................................................... 2346.4.2 Absolute Portal-Navigation .............................................................. 2356.4.3 Relative Portal-Navigation ................................................................ 236
Inhalt8
6.4.4 Definition des Navigationsverhaltens .............................................. 2376.4.5 Direkte Navigation zu einer Web-Dynpro-Applikation ................ 2436.4.6 Gemeinsame Nutzung großer Datenmengen ................................ 246
6.5 Visualisierung der Navigationsziele .............................................................. 2476.5.1 Abbildung von hierarchischen Strukturen im
Web-Dynpro-Context ....................................................................... 2496.5.2 Anzeige eines hierarchischen Web-Dynpro-Contexts .................. 2566.5.3 Einlesen der vorhandenen Web-Dynpro-Applikationen .............. 2606.5.4 Optimierte Darstellung der Hierarchieebenen .............................. 2666.5.5 Auswahl eines Navigationszieles ...................................................... 2696.5.6 Ausführung eines JNDI-Lookups aus einer
Web-Dynpro-Applikation ................................................................. 270
6.6 Zusammenfassung ............................................................................................ 271
7 Web-Dynpro-OBNTester 273
7.1 Object-based Navigation ................................................................................ 274
7.2 Verwendung von Portal-Services ................................................................... 2757.2.1 Abhängigkeiten bei der Verwendung von Portal-Services ........... 2767.2.2 Benutzung eines Portal-Service ........................................................ 2777.2.3 Zugriff auf einen Portal-Service ........................................................ 2807.2.4 Einlesen der definierten Systeme .................................................... 282
7.3 Anstoßen einer Object-based Navigation .................................................... 2827.3.1 Definition von Übergabeparametern .............................................. 2837.3.2 Weiterleitung von OBN-Metadaten ................................................ 284
7.4 Definition von Business-Objekten ................................................................ 2857.4.1 Anlegen von Business-Objekten ...................................................... 2857.4.2 Definition von Operationen ............................................................. 2877.4.3 Definition der Implementierung einer Operation ......................... 2897.4.4 Mapping von Übergabeparametern ................................................ 291
7.5 Einlesen der benötigten Daten ...................................................................... 292
7.6 Zusammenfassung ............................................................................................ 298
8 Web-Dynpro-MusicBox 299
8.1 Aufbau der MusicBox ...................................................................................... 299
8.2 Verwendete Komponenten-Interfaces ......................................................... 3008.2.1 Komponenten-Interface MusicStoreCompI ................................... 3018.2.2 Komponenten-Interface DetailsViewerCompI ............................... 3038.2.3 Komponenten-Interface PerspectiveConfigurationCompI ........... 304
8.3 Web-Dynpro-Komponente MusicBoxComp ............................................... 3088.3.1 Grundsätzliche Strukturierung ......................................................... 3098.3.2 Bereitstellung des Daten-Models .................................................... 3118.3.3 Definition des Layouts ...................................................................... 313
9Inhalt
8.4 Implementierung eines Detail-Viewers ........................................................ 3168.4.1 Web-Dynpro-Komponente CoverComp ........................................ 3178.4.2 Definition der Cover-Größe ............................................................. 320
8.5 Anpassung von Web-Dynpro-iViews ........................................................... 3228.5.1 Rollenspezifische Anpassungen vs. Benutzer-Personalisierung ... 3228.5.2 Einbinden des Public Parts P13NUtils ............................................ 3238.5.3 Definition von anwendungsspezifischen iView-Eigenschaften .... 3258.5.4 Java-Klasse P13nHelper .................................................................... 3318.5.5 Erzeugen von personalisierbaren Web-Dynpro-iViews ................ 3348.5.6 Anwendungsspezifische Personalisierungsdialoge ........................ 336
8.6 Realisierung einer kontextsensitiven Navigationsleiste ............................ 3398.6.1 Erweiterung des Navigation Panels ................................................. 3398.6.2 Contextual-Navigation-Panel ........................................................... 342
8.7 Weitere Ergänzungen ...................................................................................... 3498.7.1 Schließen eines Fensters ................................................................... 3498.7.2 Drucken des Fensterinhaltes ............................................................ 352
8.8 Web-Dynpro-Anwendungen im SAP NetWeaver Portal ........................... 3538.8.1 Aktuelle Einschränkungen ................................................................ 3538.8.2 Nächste Schritte ................................................................................ 354
8.9 Zusammenfassung ............................................................................................ 355
9 Generische Entwicklungskomponenten 357
9.1 Entwicklungskomponente tc~utils ............................................................... 3579.1.1 Definition der Entwicklungskomponente tc~utils ......................... 3589.1.2 Definition des Public Parts Utils ...................................................... 362
9.2 Web-Dynpro-DeploymentManager .............................................................. 3689.2.1 Definition der bereitgestellten Informationen ............................... 3689.2.2 Beschreibung der bereitgestellten Informationen ......................... 370
9.3 Entwicklungskomponente tc~pplibs ............................................................ 3729.3.1 Bereitstellung der benötigten JAR-Archive .................................... 3729.3.2 Lokalisierung der benötigten JAR-Archive ..................................... 375
9.4 Grundsätzliche Unterteilung der Entwicklungskomponenten ................. 376
9.5 Zusammenfassung ............................................................................................ 377
10 Tipps zur Installation, Konfiguration und Administration 379
10.1 Überblick ........................................................................................................... 379
10.2 Installation und Wartung der Web-Dynpro-Laufzeit ................................ 37910.2.1 Grundlegende Architektur des SAP Web Application Servers ..... 38010.2.2 Laufzeitkomponenten von Web Dynpro ........................................ 391
Inhalt10
10.2.3 Installation der Web-Dynpro-Laufzeit und Einspielen von Service Packs ...................................................................................... 395
10.2.4 Remote Debugging ............................................................................ 409
10.3 Technische Konfiguration der Web-Dynpro-Laufzeit ................................ 41310.3.1 Grundlegende Konfiguration der Web-Dynpro-Laufzeit ............. 41410.3.2 Anwendungsspezifische Definition von
Konfigurationsparametern ................................................................ 43510.3.3 Konfiguration des SAP Web Application Server mit
Auswirkungen auf Web Dynpro ...................................................... 437
10.4 Werkzeuge zur Administration und zum Monitoring ................................ 45510.4.1 Web Dynpro Content Administrator .............................................. 45610.4.2 Web Dynpro Console ....................................................................... 47010.4.3 Werkzeuge für Logging und Tracing ............................................... 482
10.5 Zusammenfassung ............................................................................................ 488
A Web-Dynpro-Komponentisierung 489
A.1 Web-Dynpro-Komponentendiagramme ...................................................... 489
A.2 Web-Dynpro-Komponentenmodell .............................................................. 492A.2.1 Komponentenarchitektur ................................................................. 492A.2.2 Schnittstellen einer Web-Dynpro-Komponente ............................ 492A.2.3 Definition von Komponenten-Interfaces ........................................ 493A.2.4 Wiederverwendbarkeit ..................................................................... 494A.2.5 Modularisierung ................................................................................. 494
A.3 Klassifikation von Web-Dynpro-Komponenten .......................................... 494A.3.1 User-Interface-Komponenten .......................................................... 495A.3.2 Nicht visuelle Komponenten ............................................................ 496
A.4 SAP NetWeaver Development Infrastructure ............................................. 496A.4.1 Komponentenmodell der NWDI ..................................................... 498A.4.2 Benennung von Web-Dynpro-DCs ................................................. 501
B Web Dynpro im SDN 503
B.1 Informationsportal ........................................................................................... 503
B.2 Web-Dynpro-Feature2Sample-Matrix .......................................................... 505
B.3 Web-Dynpro-Lernprozess ............................................................................... 507B.3.1 Erlernen der Grundlagen .................................................................. 508B.3.2 User-Interface und UI-Elemente ...................................................... 508B.3.3 Backend-Zugang ................................................................................ 509B.3.4 Komponentisierung ........................................................................... 510B.3.5 Generische Services ........................................................................... 510B.3.6 Adobe Integration ............................................................................. 510B.3.7 Portal- und Integrationsszenarien .................................................... 510
11Inhalt
C Die Autoren 511
Index 513
13Einleitung
1 Einleitung
PraxisnäheWir waren uns von Anfang an einig, dass wir kein weiteres Referenzhand-buch zu Web Dynpro for Java schreiben wollten. Stattdessen werden wir indiesem Buch anhand eingängiger Beispiele die vielfältigen Möglichkeitenaufzeigen, die Ihnen bei und mit der Verwendung von Web Dynpro forJava zur Verfügung stehen. Vielleicht überrascht Sie das eine oder andereBeispiel auf den ersten Blick – denn normalerweise werden Sie mithilfevon Web Dynpro keine Spiele oder CD-Verwaltungen entwickeln. Nichts-destotrotz veranschaulichen die Beispiele aber sehr viele Best Practices,die Ihnen in Ihrer täglichen Arbeit mit Web Dynpro hilfreich sein werden.
Und obwohl wir statt der ursprünglich geplanten 350 Seiten mit nunrund 500 Seiten einen »echten Wälzer« geschaffen haben, haben wirwährend der Arbeit an diesem Buch sehr schnell erkannt, dass wir keines-falls alle Möglichkeiten beschreiben können. Zum einen ist dies für unsein Zeichen für den enormen Leistungsumfang von Web Dynpro, zum an-deren ist dies vielleicht auch Motivation für einen zweiten Band.
EinführungBevor wir in den folgenden Kapiteln anhand vieler Beispiele die unter-schiedlichen Möglichkeiten von Web Dynpro diskutieren, geben wir Ih-nen in Kapitel 2 einen grundsätzlichen Einstieg in das Web-Dynpro-Pro-grammiermodel. Wir befassen uns dabei insbesondere mit der internenStrukturierung der Web-Dynpro-Laufzeitumgebung sowie deren Einbet-tung in SAP NetWeaver.
Komponenti-sierung
Ein wesentliches Anliegen war uns die konsequente Komponentisierungder Web-Dynpro-Beispielanwendungen. Gerade im Zusammenspiel mitder SAP NetWeaver Development Infrastructure (NWDI) erhalten Sie einesehr mächtige Funktionalität, Ihre Web-Dynpro-Anwendung aus wieder-verwendbaren Einheiten zusammenzubauen. Wir beschreiben die Ver-wendung von Web-Dynpro-Komponenten vor allem anhand der Web-Dynpro-GameStation (siehe Kapitel 3) und der Web-Dynpro-MusicBox(siehe Kapitel 8). In Kapitel 9 gehen wir zudem auf diejenigen generi-schen Web-Dynpro-Entwicklungskomponenten ein, die wir in den Bei-spielen im Buch an mehreren Stellen wiederverwenden.
Da spätestens mit Einführung der Enterprise Services Architecture (ESA)serviceorientierte Anwendungen en vogue sind, gehen wir anhand derWeb-Dynpro-Google-Suche (siehe Kapitel 4) ausführlich auf die Verwen-dung von Webservices innerhalb Ihrer Web-Dynpro-Applikation ein. Dar-über hinaus diskutieren wir anhand der Visualisierung der Suchergebnisse
Einleitung14
die Unterschiede von deklarativer und dynamischer Erstellung von Web-Dynpro-UIs.
Ein weiterer Schwerpunkt liegt in der Beschreibung des Zusammenspielszwischen Ihren Web-Dynpro-Anwendungen und dem SAP NetWeaverPortal. Obwohl Web-Dynpro-Applikationen grundsätzlich auch außer-halb des SAP NetWeaver Portal lauffähig sind, ergibt sich eine Vielzahlneuer Möglichkeiten, sobald Sie Ihre Web-Dynpro-Anwendungen inner-halb des SAP NetWeaver Portal starten. Erweiterte Navigationsmöglich-keiten (siehe Kapitel 6 und Kapitel 7) oder die Möglichkeiten der Perso-nalisierung (siehe Kapitel 8) sind nur zwei Beispiele, die wir vor allem beider Web-Dynpro-MusicBox in – wie wir finden – sehr anschaulicher Artund Weise einsetzen. Neben der Beschreibung dieser Funktionalitätenbeschreiben wir in Kapitel 5 ganz allgemein die nötigen Schritte, wie SieIhre Web-Dynpro-Anwendung innerhalb des SAP NetWeaver Portal star-ten können.
Beispiele Alle Beispiele haben wir auf Basis von SAP NetWeaver 2004 (SP14) er-stellt und nach bestem Wissen und Gewissen getestet. Wir haben uns da-bei sehr um Konsistenz bezüglich der Strukturierung und Namenskonven-tionen bemüht – urteilen Sie selbst, wie weit uns dies gelungen ist. InAnhang A geben wir zudem einige Empfehlungen, wie Sie speziell beimEinsatz von Web-Dynpro-Komponenten und Web-Dynpro-DCs eine ein-heitliche und verständliche Beschreibung Ihrer Web-Dynpro-Anwendun-gen erhalten.
Alle Beispiele in diesem Buch können von Ihnen erweitert und modifiziertwerden. Auch die generischen Funktionalitäten können Sie in Ihren eige-nen Web-Dynpro-Anwendungen wiederverwenden – allerdings könnenwir in diesem Fall keinen Support bei Problemen leisten. Wir verweisenSie aber auf das Web-Dynpro-Forum im SAP Developer Network (sieheAnhang B). In diesem Teil des Anhangs finden Sie zudem nähere Informa-tionen zur Feature2Sample-Matrix, die Ihnen bei der Auswahl von Bei-spiel- und Tutorial-Anwendungen im SAP Developer Network hilft. Hierfinden Sie eine große Fülle von Materialien zur Web-Dynpro-Technologie,die eine ideale Ergänzung zu den in diesem Buch enthaltenen Inhaltendarstellt.
Da wir aus unserer täglichen Arbeit an und mit Web Dynpro nur zu gutwissen, dass neben der eigentlichen Anwendungsentwicklung in der Pra-xis auch die Administration und Konfiguration der Web-Dynpro-Laufzeit-umgebung immer wieder Anlass für Fragen, Probleme und Diskussionen
15Einleitung
gibt, widmen wir auch diesem Thema in Kapitel 10 den dafür nötigenPlatz.
DanksagungWir wollen uns an dieser Stelle besonders bei Manohar Sreekanth bedan-ken, der uns beim Aufsetzen der NWDI-Landschaft geholfen hat. Darüberhinaus hat uns Udo Offermann mit seinem detaillierten Wissen über dasSAP NetWeaver Portal unterstützt. Des Weiteren hat uns Reiner Hamme-rich die zukünftige UI-Strategie von SAP näher gebracht, in der Web Dyn-pro (for Java) natürlich auch eine sehr zentrale Rolle spielen wird. Last butnot least wollen wir uns bei Karin Schattka, Thomas Chadzelek, Jens Ittel,Markus Cherdron und Alfred Barzewski bedanken. Ein spezieller Dank giltauch dem Verlag Galileo Press, der uns die Möglichkeit gegeben hat, die-ses Buch zu schreiben. Insbesondere Stefan Proksch aus dem Lektorat SAPPRESS stand uns mit seiner Erfahrung jederzeit hilfreich zur Seite.
Nun bleibt uns nur noch, Ihnen viel Spaß beim Schmökern und Testen derBeispiele zu wünschen. Wir freuen uns über Ihr Feedback.
Walldorf, im März 2006Bertram Ganz ([email protected])Jochen Gürtler ([email protected])Timo Lakner ([email protected])
203Web-Dynpro-NavigationTester
6 Web-Dynpro-NavigationTester
In diesem Kapitel werden wir die verschiedenen Möglichkeiten besprechen, um zwischen Web-Dynpro-Anwendungen zu navigieren. Wir werden dabei insbesondere auf die Unter-schiede eingehen, die sich ergeben, wenn die Web-Dynpro-Anwendung innerhalb des SAP NetWeaver Portal gestartet wird, und werden auf die Visualisierung von sehr großen hier-archischen Datenmengen eingehen.
6.1 Web-Dynpro-NavigationTester
Mithilfe des Web-Dynpro-NavigationTesters können Sie unterschiedlicheNavigationsmöglichkeiten zwischen zwei Web-Dynpro-Applikationendurchspielen und testen. Darüber hinaus bietet er Ihnen die Möglichkeit,auf komfortable Art und Weise die gewünschte Web-Dynpro-Applikationzu selektieren und das gewünschte Navigationsverhalten zu bestimmen.
Wie alle Beispiele dieses Buches ist der NavigationTester auch ohne SAPNetWeaver Portal lauffähig. In Zusammenhang mit dem SAP NetWeaverPortal aber bietet er wesentlich mehr Möglichkeiten, das Navigationsver-halten zu beeinflussen. Sie finden den NavigationTester in der Web-Dyn-pro-Komponente NavigationTesterComp, die im Web-Dynpro-ProjektMAIN_WD-BOOK_D~tc~navtes~sap.com abgelegt ist. Die entsprechendeWeb-Dynpro-Entwicklungskomponente heißt tc\navtes.
Abbildung 6.1 zeigt den Web-Dynpro-NavigationTester innerhalb desSAP NetWeaver Portal. Der NavigationTester setzt sich im Wesentlichenaus zwei Bereichen zusammen: Links können Sie das gewünschte Naviga-tionsziel auswählen, also entweder eine Web-Dynpro-Anwendung odereinen iView bzw. eine Portal Page, rechts können Sie das gewünschte Na-vigationsverhalten genauer definieren.
Grundsätzliche Strukturierung des Navigation-Testers
Abbildung 6.2 zeigt die Web-Dynpro-Komponente NavigationTester-Comp im Web Dynpro Data Modeler, in dem wir die grundsätzliche Struk-turierung sehr gut erkennen können.
Web-Dynpro-NavigationTester204
Abbildung 6.1 NavigationTester im SAP NetWeaver Portal
Abbildung 6.2 Strukturierung der Web-Dynpro-Komponente NavigationTesterComp
Für die Visualisierung verwenden wir insgesamt drei Web-Dynpro-Views:Der BrowserView zeigt dabei die vorhandenen Navigationsziele an. DerNavigationDataView erlaubt die Definition des gewünschten Navigati-onsverhaltens und der FrameView fügt die beiden Views zusammen.
205Web-Dynpro-NavigationTester
Im Data Modeler können Sie auch die Verwendung der Component-UsageDeploymentManager erkennen, mit deren Hilfe wir die vorhandenenWeb-Dynpro-Anwendungen ermitteln werden (siehe Abschnitt 6.5.3).
6.1.1 Bestimmung der Laufzeitumgebung
Wie erwähnt, ist der Web-Dynpro-NavigationTester sowohl außerhalb alsauch innerhalb des SAP NetWeaver Portal lauffähig. Da aber gerade hin-sichtlich der Navigation zwischen Web-Dynpro-Anwendungen viele De-tails zu beachten sind, in denen sich die jeweilige Laufzeitumgebung un-terscheidet, wird innerhalb des NavigationTesters an vielen Stellengeprüft, in welcher Laufzeitumgebung (innerhalb oder außerhalb des SAPNetWeaver Portal) er gestartet wurde.
Verwendung von WDPortalUtils
Grundsätzlich können Sie diese Information über die Hilfsklasse WDPor-talUtils ermitteln. Über die isRunningInPortal()-Methode könnenSie bestimmen, ob Ihre Web-Dynpro-Applikation innerhalb des SAP Net-Weaver Portal gerufen wird. Der dabei zurückgelieferte Bool'sche Wert istan vielen Stellen ausreichend. Sollen aber abhängig von der Laufzeitum-gebung einzelne Bereiche der Anwendung sichtbar bzw. unsichtbar ge-macht werden, bietet sich die Verwendung eines calculated-Attributesan, das in Abhängigkeit von isRunningInPortal() den entsprechendenWert für IWDVisibility zurückliefert.
Mapping auf IWDVisibility
Im NavigationTester definieren wir solch ein calculated-Attribut innerhalbdes View-Controller-Contexts des Views NavigationDataView. DasContext-Attribut IsRunningInPortalVisibility des RuntimeEnvi-ronment-Context-Knotens mappt den Bool'schen Wert auf den entspre-chenden IWDVisibility-Wert, wie die Implementierung der MethodegetRuntimeEnvironmentIsRunningInPortalVisibility()(siehe Lis-ting 6.1).
return WDPortalUtils.isRunningInPortal() ? WDVisibility.VISIBLE : WDVisibility.NONE;
Listing 6.1 Berechnung von IWDVisibility abhängig von der Laufzeitumgebung
Durch dieses Mapping können Sie rein deklarativ beliebige UI-ElementeIhrer Anwendung durch Binden der Visibility-Eigenschaft der entspre-chenden UI-Elemente gegen das IsRunningInPortalVisibility-At-tribut in Abhängigkeit der Laufzeitumgebung sichtbar oder unsichtbarschalten.
Web-Dynpro-NavigationTester206
Im NavigationTester haben wir uns aber dazu entschieden, die entspre-chenden UI-Elemente nicht auszublenden, sondern zu enablen oder zudisablen. Dadurch erhalten wir unabhängig von der gewählten Laufzeit-umgebung ein konsistentes UI-Design. Wir verwenden dazu das Context-Attribut EnabledInPortal des Context-Knotens RuntimeEnvironment,gegen das die Enabled-Eigenschaft des entsprechenden UI-Elementes ge-bunden ist, wie Sie beispielhaft für das IWDInputField-UI-Element Con-textInputField in Abbildung 6.3 erkennen können.
Abbildung 6.3 Verwendung des EnabledInPortal-Context-Attributs
6.1.2 Auswahl des Navigationszieles
Auch bei der Darstellung der möglichen Navigationsziele berücksichtigenwir die vorhandene Laufzeitumgebung. Starten Sie den NavigationTesteraußerhalb des SAP NetWeaver Portal, zeigen wir nur die verfügbarenWeb-Dynpro-Applikationen an (siehe Abbildung 6.4).
Abbildung 6.4 Darstellung der Navigationsziele außerhalb des SAP NetWeaver Portal
Innerhalb des SAP NetWeaver Portal zeigen wir auch die verfügbareniViews und Portal Pages an, die dann ebenfalls als Navigationsziele dienenkönnen (siehe Abbildung 6.5).
207Web-Dynpro-NavigationTester
Abbildung 6.5 Darstellung der Navigationsziele innerhalb des SAP NetWeaver Portal
In Abschnitt 6.6 werden wir detaillierter auf die hierarchische Darstellungder vorhandenen Navigationsziele eingehen.
6.1.3 Bestimmung des Navigationsverhaltens
Neben der Definition des Navigationszieles bietet der NavigationTesterauch umfangreiche Möglichkeiten, das gewünschte Navigationsverhaltengenauer zu definieren. Außerhalb des SAP NetWeaver Portal beschränkensich diese Möglichkeiten auf die Unterscheidung zwischen relativen undabsoluten Applikations-URLs, die definiten von weiteren Übergabepara-metern sowie die Festlegung, ob das Navigationsziel im gleichen oder ineinem neuen Fenster des Webbrowsers gestartet werden soll.
Abbildung 6.6 zeigt die möglichen Einstellungen – beachten Sie hierbei,dass diejenigen Optionen, die nur innerhalb des SAP NetWeaver Portalverfügbar sind, über den beschriebenen Mechanismus disabled wurden.
Tipp
Auch wenn wir grundsätzlich die Verwendung des SAP NetWeaverPortal empfehlen, sollten Sie immer darauf achten, dass Sie Ihre Web-Dynpro-Anwendung grundsätzlich so bauen, dass beide Laufzeitumge-bungen berücksichtigt werden – zum Beispiel durch die beschriebenenMechanismen, einzelne UI-Elemente zu disablen oder unsichtbar zumachen.
Web-Dynpro-NavigationTester208
Abbildung 6.6 Definition des Navigationsverhaltens außerhalb des SAP NetWeaver Portal
Im Folgenden nun wollen wir ausführlich auf die Möglichkeiten der Na-vigation zwischen zwei Web-Dynpro-Anwendungen eingehen. Am Endedes Kapitels werden wir dann die hierarchische Visualisierung der vorhan-denen Navigationsziele (Web-Dynpro-Anwendungen bzw. iViews oderPortal Pages) besprechen.
6.2 Navigation außerhalb des SAP NetWeaver Portal
Starten Sie Ihre Web-Dynpro-Anwendung außerhalb des SAP NetWeaverPortal, können Sie auf einfache Art und Weise zwischen zwei Web-Dyn-pro-Applikationen navigieren.
6.2.1 Zusammenfassung von Web-Dynpro-Applikationen
Bedenken Sie dabei aber immer, dass Sie in vielen Szenarien eine wesent-lich effizientere Navigation erreichen, wenn Sie Ihre Web-Dynpro-Appli-kationen zu einer einzigen Web-Dynpro-Applikation zusammenfassen,indem Sie die entsprechenden Root-Components der jeweiligen Applika-tionen über eine weitere (dritte) Web-Dynpro-Komponente zusammen-fassen. Diese Web-Dynpro-Komponente dient dabei letztendlich nur alsgemeinsamer Rahmen für die beteiligten Komponenten.
209Navigation außerhalb des SAP NetWeaver Portal
Zusammenfassen von Web-Dynpro-Applikationen
Da bei dieser Vorgehensweise die entsprechenden Web-Dynpro-Kompo-nenten innerhalb einer Web-Dynpro-Applikationsinstanz gestartet wer-den, erreichen Sie eine wesentlich engere Integration der beteiligtenKomponenten, die zum Beispiel vor allem dann Sinn ergibt, wenn die be-teiligten Web-Dynpro-Applikationen bzw. Web-Dynpro-Komponentengroße Datenmengen gemeinsam nutzen wollen.
Das Verschmelzen mehrerer Web-Dynpro-Komponenten innerhalb einerWeb-Dynpro-Applikation ist auch dann möglich, wenn die unterschiedli-chen Komponenten in unterschiedlichen Teams gebaut werden. DurchVerwendung entsprechender Web-Dynpro-Component-Interfaces errei-chen Sie zudem eine große Flexibilität und reduzieren direkte und wo-möglich nicht gewünschte Abhängigkeiten.
Diese Vorgehensweise wird in den Kapiteln zur Web-Dynpro-GameSta-tion (siehe Kapitel 3) und zur Web-Dynpro-MusicBox (siehe Kapitel 8)diskutiert.
6.2.2 Berechnung einer Web-Dynpro-Applikations-URL
Verwendung von WDURLGenerator
Möchten Sie außerhalb des SAP NetWeaver Portal zwischen zwei Web-Dynpro-Applikationen navigieren, müssen Sie das Ziel dieses Navigations-schrittes in Form einer Web-Dynpro-Applikations-URL definieren. Da dieseApplikations-URL bestimmten Randbedingungen genügen muss, solltenSie diese URL immer mithilfe der Hilfsklasse WDURLGenerator erzeugen.Grundsätzlich müssen Sie hierbei zwischen relativen und absoluten Appli-kations-URLs unterscheiden.
Definition einer relativen Applikations-URL
Relative Applikations-URLs können Sie immer dann verwenden, wennentweder die Zielapplikation auf dem gleichen Serverknoten Ihrer SAPNetWeaver-Installation ausgeführt werden soll, oder aber die Applikati-ons-URL nicht als Bookmark verwendet werden soll oder anderweitigpersistierbar sein muss (um sie beispielsweise später in einer Mail zu ver-schicken).
Das folgende Listing 6.2 zeigt die Berechnung einer relativen Applikati-ons-URL für den Web-Dynpro-NavigationTester.
Web-Dynpro-NavigationTester210
try {
// Option 1String navigationTesterUrl =WDURLGenerator.getApplicationURL("sap.com/tc~navtes","NavigationTesterApp");
// Option 2WDDeployableObjectPart navigationTesterApp =WDDeployableObject.getDeployableObjectPart("sap.com/tc~navtes","NavigationTesterApp",WDDeployableObjectPartType.APPLICATION);
navigationTesterUrl =WDURLGenerator.getApplicationURL(navigationTesterApp);
} catch (WDURLException e) {wdComponentAPI.getMessageManager().reportException("Failed to get application URL -
please check the defined parameters",true)
} catch (WDDeploymentException e) {wdComponentAPI.getMessageManager().reportException("Failed to load deployable object'sap.com/tc~navtes'",true);
}
Listing 6.2 Erzeugen einer relativen Applikations-URL
In diesem Beispiel ermitteln wir die relative Applikations-URL auf zweiunterschiedliche Arten: Im ersten Fall geben wir die benötigten Namender Web-Dynpro-Entwicklungskomponente und der Applikation direktan. Im zweiten Fall erzeugen wir für den NavigationTester zuerst eine In-stanz des entsprechenden WDDeployableObjectPart. Letztendlich lie-fern natürlich beide Möglichkeiten die gleiche navigationTesterUrl:
../../../sap.com/tc~navtes/NavigationTesterApp
211Navigation außerhalb des SAP NetWeaver Portal
Bestandteile einer relativen Applika-tions-URL
Eine relative Applikations-URL stellt sich somit aus den folgenden Be-standteilen zusammen:
../../../<Vendor>/<DC-Name>/<Applikationsname>
<Vendor>, <DC-Name> und <Applikationsname> werden von Ihnen de-finiert. Bei der Verwendung von lokalen Web-Dynpro-Eclipse-Projektenhat <Vendor> immer den Wert local. Der <DC-Name> ist der Name Ihreslokalen Web-Dynpro-Eclipse-Projektes. Bei Verwendung von Web-Dyn-pro-Entwicklungskomponenten definieren Sie den <Vendor> als Teil derBeschreibung der Entwicklungskomponente. Der <DC-Name> ist derName der verwendeten Entwicklungskomponente.
Definition einer absoluten Applikations-URL
Sobald Sie eine Applikations-URL benötigen, die persistierbar sein soll,müssen Sie eine absolute Applikations-URL erzeugen, wie Listing 6.3zeigt. Der wesentliche Unterschied zur Berechnung relativer Applikations-URLs ist die Verwendung der Methode getWorkloadBalancedApplica-tionURL()von WDURLGenerator.
try {
// Option 1String navigationTesterUrl =WDURLGenerator.getWorkloadBalancedApplicationURL("sap.com/tc~navtes","NavigationTesterApp");
// Option 2WDDeployableObjectPart navigationTesterApp =WDDeployableObject.getDeployableObjectPart("sap.com/tc~navtes","NavigationTesterApp",WDDeployableObjectPartType.APPLICATION);
navigationTesterUrl =WDURLGenerator.getWorkloadBalancedApplicationURL(
navigationTesterApp);
} catch (WDURLException e) {wdComponentAPI.getMessageManager().reportException(
Web-Dynpro-NavigationTester212
"Failed to get application URL -please check the defined parameters",
true);} catch (WDDeploymentException e) {wdComponentAPI.getMessageManager().reportException("Failed to load deployable object'sap.com/tc~navtes'",true);
}
Listing 6.3 Erzeugen einer absoluten Applikations-URL
Im Beispiel enthält navigationTesterUrl nach Aufruf des WDURLGene-rator die folgende URL – eine entsprechende Web-Dispatcher-Konfigu-ration vorausgesetzt:
http://wdhost.wdf.sap.corpt:50000/webdynpro/dispatcher/sap.com/tc~navtes/NavigationTesterApp
Bestandteile einerabsoluten URL
Eine absolute Web-Dynpro-Applikations-URL stellt sich somit aus denfolgenden Bestandteilen zusammen:
<Protokoll>://<Servername>.<Domain>:<Port>/webdynpro/dis-
patcher/<Vendor>/<DC-Name>/<Applikationsname>
<Protokoll>, <Servername>, <Domain> und <Port> hängen natürlichvon Ihrer vorhandenen SAP NetWeaver-Installation ab. Die Angabe der<Domain> ist dabei optional, wir empfehlen aber vor allem beim Startender Web-Dynpro-Applikation innerhalb des SAP NetWeaver Portal dieVerwendung des voll qualifizierten Servernamens, also mit Angabe der<Domain>.
<Vendor>, <DC-Name> und <Applikationsname> werden wie bei relati-ven Applikations-URLs von Ihnen definiert. Bei Verwendung von lokalenWeb-Dynpro-Eclipse-Projekten hat <Vendor> immer den Wert local.Der <DC-Name> ist dabei der Name Ihres lokalen Web-Dynpro-Eclipse-Projektes. Bei Verwendung von Web-Dynpro-Entwicklungskomponentendefinieren Sie den <Vendor> als Teil der Beschreibung der Entwicklungs-komponente. Der <DC-Name> ist der Name der verwendeten Entwick-lungskomponente.
213Navigation außerhalb des SAP NetWeaver Portal
Definition von URL-Aliassen
Eine oft gestellte Frage im Zusammenhang mit Web-Dynpro-Applikati-ons-URLs wollen wir Ihnen an dieser Stelle nicht vorenthalten: Da vor al-lem bei der Verwendung von Web-Dynpro-Entwicklungskomponentendie resultierende Applikations-URL sehr schnell recht kryptisch werdenkann, stellt sich die Frage, ob und wie man kürzere und sinnigere URL-Aliasse definieren kann. Leider ist dies nur durch die Verwendung einesweiteren Servlets möglich, in dem Sie dann auf die entsprechende Web-Dynpro-Applikations-URL redirecten.
Natürlich können Sie aber die gewünschten (absoluten) Applikations-URLs in Ihrem Browser als Lesezeichen speichern, sodass Sie nicht bei je-dem Aufruf Ihrer Web-Dynpro-Anwendung die komplette Applikations-URL im Kopf behalten und eintippen müssen.
6.2.3 Übergabe von Parametern
Möchten Sie zwischen Web-Dynpro-Anwendungen navigieren, werdenSie typischerweise zusätzliche Parameter definieren wollen, um be-stimmte Informationen von der einen zur anderen Web-Dynpro-Applika-tion zu transportieren. Dies ist durch die Ergänzung der entsprechendenApplikations-URL der Zielapplikation leicht möglich, wie das folgendeBeispiel zeigt:
http://wdhost.wdf.sap.corp:50000/webdynpro/dispatcher/sap.com/tc~search/GoogleSearchApp?query=Web%20Dynpro&viewModeSwitch=true
Tipp
Verwenden Sie ausschließlich die Methode getWorkloadBalanced-ApplicationURL(), um eine absolute Applikations-URL zu berech-nen. Damit stellen Sie sicher, dass die berechnete URL auch dann gültigist, wenn Sie für Ihre SAP NetWeaver-Installation einen Web Dispat-cher verwenden. In Kapitel 10 beschreiben wir ausführlich, welcheKonfigurationen nötig sind, um Ihre Web-Dynpro-Applikationen kor-rekt über einen Web Dispatcher aufzurufen. Sollten Sie diese Konfigu-rationen nicht ausgeführt haben, liefert getWorkloadBalanced-ApplicationURL() die gleiche (relative) Applikations-URL wie getApplicationURL().
Web-Dynpro-NavigationTester214
Hierbei rufen wir die Web-Dynpro-Anwendung GoogleSearchApp unterVorbelegung des gewünschten Suchbegriffs auf, indem wir den query-Pa-rameter mit dem gewünschten Wert übergeben. Zusätzlich definieren wirmithilfe des viewModeSwitch-Parameters, dass die Auswahl der ge-wünschten Darstellungsvariante angezeigt wird.
Wie Sie erkennen können, werden die gewünschten Parameter als Query-Strings an die berechnete (absolute) Applikations-URL angehängt. Hierbeiist zu beachten, dass Sie die gewünschten Parameterwerte gegebenenfallsURL-encodieren müssen (siehe Abschnitt 6.3).
6.2.4 Auslesen von Parametern
Die Web-Dynpro-Entwicklungskomponente tc\navtes enthält nebendem Web-Dynpro-NavigationTester eine zweite Web-Dynpro-Applika-tion, anhand der wir die Möglichkeiten diskutieren wollen, wie Sie über-gebene Parameter innerhalb der Web-Dynpro-Zielapplikation wieder ein-lesen können.
Abbildung 6.7 zeigt die Web-Dynpro-Applikation NavigationDestina-tionApp, die als Root-Component die Web-Dynpro-Komponente Navi-gationDestinationComp verwendet.
Abbildung 6.7 Web-Dynpro-Applikation NavigationDestinationApp
Grundsätzlich haben Sie zwei Möglichkeiten, innerhalb Ihrer Web-Dyn-pro-Applikation auf die übergebenen Parameter zuzugreifen. Entwederdefinieren Sie explizit die gewünschten Parameter als Parameter des Start-up-Plugs der verwendeten Root-Component oder Sie greifen generischauf alle übergebenen Parameter durch die Verwendung des WDWebCon-textAdapter zu.
Die Anwendung NavigationDestinationApp veranschaulicht beideVorgehensweisen, wie Sie in Abbildung 6.8 erkennen können: Links zeigtsie zwei explizit definierte Parameter Parameter1 und Parameter2, rechts
215Navigation außerhalb des SAP NetWeaver Portal
werden alle übergebenen Parameter in einer Tabelle angezeigt. Sie kön-nen dabei zusätzlich noch entscheiden, ob Sie die automatisch übergebe-nen Systemparameter anzeigen wollen oder nicht.
Abbildung 6.8 Übertragene Systemparameter außerhalb des SAP NetWeaver Portal
Übertragene Systemparameter
Abbildung 6.8 zeigt die Systemparameter, die übertragen werden, wennSie die Anwendung außerhalb des SAP NetWeaver Portal starten. sap-wd-cltnwndid und sap-wd-appwndid werden von der Web DynproRuntime benötigt, um die richtige Applikationsinstanz zu ermitteln. sap-wd-norefresh signalisiert, dass es sich nicht um den initialen Requesthandelt, der die Web-Dynpro-Applikationsinstanz startet.
Übertragene Systemparameter innerhalb des SAP NetWeaver Portal
Sobald Sie Ihre Web-Dynpro-Anwendung innerhalb des SAP NetWeaverPortal starten, werden etliche weitere Systemparameter übertragen, wieAbbildung 6.9 zeigt. Letztendlich wird mit diesen zusätzlichen Systempa-rametern die aktuelle Portal-Umgebung definiert.
Abbildung 6.9 Übertragene Systemparameter innerhalb des SAP NetWeaver Portal
Tipp
Grundsätzlich sollten Sie die übertragenen Systemparameter, also alleParameter, die mit sap-wd beginnen, nicht ändern oder löschen, dasonst Ihre Web-Dynpro-Anwendung nicht korrekt ablaufen kann.
Web-Dynpro-NavigationTester216
So definiert beispielsweise sap-locale die gewählte Portal-Sprache odersap-rtl, ob der Benutzer im Portal die Left-To-Right-Unterstützung ein-gestellt hat oder nicht. Die Web Dynpro Runtime übernimmt diese (Por-tal-)Einstellungen automatisch – und zeigt dann Ihre Web-Dynpro-Appli-kation unter Berücksichtigung der richtigen Sprache oder der gewähltenLeft-To-Right-Einstellung. In Kapitel 5 finden Sie weitere Details zu deneinzelnen Systemparametern innerhalb des SAP NetWeaver Portal.
Explizite Definition von Startup-Plug-Parametern
Wenn Sie genau wissen, auf welche Parameter Ihre Web-Dynpro-Appli-kation zugreifen muss – um z.B. eine bestimmte Darstellungsvariante zubestimmen, wie wir es bei der Web-Dynpro-Google-Suche beschriebenhaben (siehe Kapitel 4) –, können Sie diese Parameter explizit als Parame-ter des verwendeten Startup-Plugs definieren. In der Anwendung Navi-gationDestinationApp sind dies die Parameter Parameter1 undParameter2.
Abbildung 6.10 zeigt die Definition des Default-Startup-Plugs mit denentsprechenden Parametern. Beachten Sie, dass die Startup-Plug-Para-meternamen und die Namen der Übergabeparameter exakt übereinstim-men müssen. Darüber hinaus müssen die Startup-Plug-Parameter vomTyp string sein.
Abbildung 6.10 Definition der Startup-Plug-Parameter
Beim Starten der Web-Dynpro-Applikation werden diese Default-Start-up-Plug-Parameter automatisch gefüllt, und stehen Ihnen im Event-Handler onPlugDefault() zur Verfügung. In unserem Beispiel schreibenwir die Werte in den vom Interface-Component-Controller der Root-Component bereitgestellten Context, wie Listing 6.4 zeigt.
217Navigation außerhalb des SAP NetWeaver Portal
wdThis .wdGetNavigationDestinationCompInterfaceController() .wdGetContext() .currentParametersElement() .setParameter1(Parameter1);
wdThis .wdGetNavigationDestinationCompInterfaceController() .wdGetContext() .currentParametersElement() .setParameter2(Parameter2);
Listing 6.4 Verwendung der explizit definierten Startup-Plug-Parameter
Generischer Zugriff auf alle Parameter
Neben dieser expliziten Möglichkeit, auf Übergabeparameter zuzugrei-fen, können Sie auch ganz generisch auf alle übertragenen Parameter mit-hilfe des WDWebContextAdapter zugreifen.
In unserer Anwendung NavigationDestinationApp benutzen wir denWDWebContextAdapter, um alle übergebenen Parameter einzulesen unddiese in den entsprechenden Context-Knoten zu kopieren. Mithilfe desIWDTable-UI-Elementes werden die Parameter dann in einem letztenSchritt visualisiert.
Die updateParameterList()-Methode im View-Controller des Web-Dynpro-Views DestinationView liest alle übergebenen Parameter einund füllt den Context-Knoten RequestParameter, wie Listing 6.5 zeigt:
Tipp
Wie in Kapitel 2 dargestellt, ist eine der Stärken von Web Dynpro dieUnabhängigkeit von einem bestimmten Protokoll oder einem be-stimmten Darstellungs-Client. Die gleiche Web-Dynpro-Anwendungkann ohne jegliche Änderung sowohl auf HTTP basierend in einem her-kömmlichen Webbrowser angezeigt werden als auch auf einem SmartClient, der ein beliebiges (auch proprietäres) Protokoll verwendenkönnte. Um diese so genannte Web Dynpro Client Abstraction nicht zubrechen, sollten Sie immer über den WDWebContextAdapter auf Über-gabeparameter zugreifen.
Web-Dynpro-NavigationTester218
IPrivateDestinationView.IGenericParametersElement parameter = null;
wdContext.nodeGenericParameters().invalidate();
// Einlesen der ÜbergabeparameterMap parameters =WDWebContextAdapter.getWebContextAdapter().getRequestParameterMap();
for (Iterator paras = parameters.keySet().iterator();paras.hasNext();) {String key = (String) paras.next();
if (!key.startsWith("sap-wd") ||wdContext.currentContextElement().getShowSAPParameters()) {
if (key.equals("eventQueue")) {continue;
}
String value =WDWebContextAdapter.getWebContextAdapter().getRequestParameter(key);
wdContext.nodeGenericParameters().createGenericParametersElement();
parameter.setValue(value);parameter.setName(key);
wdContext.nodeGenericParameters().addElement(parameter);
}}
Listing 6.5 Einlesen aller Übergabeparameter
6.2.5 Verwendung des Exit-Plugs
Nachdem wir die gewünschte Applikations-URL mitsamt der benötigtenÜbergabeparameter definiert haben, müssen Sie nun die gewünschte Na-
219Navigation außerhalb des SAP NetWeaver Portal
vigation anstoßen, indem Sie die ursprüngliche Web-Dynpro-Applikationunter Verwendung des so genannten Exit-Plugs verlassen.
Exit-PlugsDer Exit-Plug stellt dabei das Pendant zum Startup-Plug dar, über den dieApplikationsinstanz ursprünglich gestartet wurde. Neben der Verwen-dungsmöglichkeit eines parameterlosen Exit-Plugs können Sie bei ent-sprechender Erweiterung des Exit-Plugs die Ziel-URL definieren, die nachVerlassen der Web-Dynpro-Applikation aufgerufen werden soll. Dabeikönnen Sie grundsätzlich jede beliebige URL verwenden – bei der Navi-gation zu einer weiteren Web-Dynpro-Applikation aber müssen Sie einegültige Web-Dynpro-Applikations-URL angeben.
Wie der Startup-Plug wird auch der Exit-Plug als Teil des Interface-View-Controllers einer Web-Dynpro-Komponente definiert. Dies geschieht mitden folgenden Schritten:
1. Navigieren Sie im Web Dynpro Explorer zum gewünschten Interface-View-Controller und öffnen Sie durch einen Doppelklick den entspre-chenden Editor, der Ihnen durch Selektion der Registerkarte Plugs dieDefinition des gewünschten Exit-Plugs ermöglicht. Klicken Sie hierzuauf den New-Button neben der Liste der Outbound-Plugs.
2. Abbildung 6.11 zeigt den dadurch erscheinenden Dialog, in dem Sieden in unserem Beispiel benötigten Exit-Plug NavigationToApplica-tion definieren. Achten Sie darauf, durch Auswahl der entsprechen-den Checkbox den Outbound-Plug als Exit Plug zu kennzeichnen.
Abbildung 6.11 Definition des Exit-Plugs
Web-Dynpro-NavigationTester220
URL-Parameter imExit-Plug
3. Um den gewünschten Exit-Plug-Parameter zu definieren, klicken Sieauf Next. Abbildung 6.12 zeigt die Definition des Url-Parameters. Da-mit die URL beim Anstoßen des Exit-Plugs als Ziel-URL erkannt wird,müssen Sie den Parameter Url nennen.
Abbildung 6.12 Definition des URL-Parameters
4. In unserem NavigationTester-Beispiel ist der benötigte Exit-Plug Navi-gateToApplication im Interface-View-Controller NavigationTes-terInterfaceView der Komponente NavigationTesterComp defi-niert (siehe Abbildung 6.13).
Abbildung 6.13 Exit-Plug NavigationToApplication
221Navigation außerhalb des SAP NetWeaver Portal
5. Der letzte Schritt ist nun das Anstoßen des Exit-Plugs. Dazu müssen Siedie entsprechende wdFirePlugNavigateToApplication()-Me-thode des Component-Interface-View-Controllers rufen.
Controller-Usage anlegen
Da wir in unserem NavigationTester-Beispiel die Navigation aus demWeb-Dynpro-View NavigationDataView anstoßen wollen, müssen Siezuerst eine so genannte Controller-Usage anlegen, um den Component-Interface-View-Controller NavigationTesterInterfaceView innerhalbdes View-Controllers zu rufen.
1. Öffnen Sie dazu den View Editor durch einen Doppelklick auf denWeb-Dynpro-View NavigationDataView im Web Dynpro Explorer(siehe Abbildung 6.14). Alternativ können Sie im Kontextmenü desWeb-Dynpro-Views den Edit-Eintrag wählen.
Abbildung 6.14 NavigationDataView im Web Dynpro Explorer
2. Wählen Sie im View Editor die Registerkarte Properties und klicken Sieauf den Add-Button. Abbildung 6.15 zeigt den dadurch geöffneten Di-alog, in dem Sie den Interface-View-Controller NavigationTester-InterfaceView auswählen.
Abbildung 6.15 Definition der Controller-Usage
3. Nach dem erfolgreichem Anlegen der benötigten Controller-Usagewird diese auf der Registerkarte Properties im View Editor angezeigt.
Web-Dynpro-NavigationTester222
Abbildung 6.16 zeigt die definierten Controller-Usages des Web-Dyn-pro-Views NavigationDataView.
Abbildung 6.16 Liste der definierten Controller-Usages im View Editor
4. Neben der Verwendung des View Editors können Sie die definiertenController-Usages auch direkt im Web Dynpro Explorer anzeigen, in-dem Sie die entsprechenden Views expandieren, wie Abbildung 6.17zeigt.
Abbildung 6.17 Liste der definierten Controller-Usages im Web Dynpro Explorer
Aufruf desExit-Plugs
Nachdem Sie die Controller-Usage angelegt haben, können Sie im View-Controller direkt auf den Interface-View-Controller zugreifen und mithilfeder wdFirePlugNavigateToApplication()-Methode den Exit-Pluganstoßen, wie Listing 6.6 zeigt, das Teil des Event-Handlers onActionNa-vigate() ist.
// Navigate to the selected Web Dynpro application// using the Exit-Plug wdThis .wdGetNavigationTesterInterfaceViewController() .wdFirePlugNavigateToApplication( wdContext
223Navigation außerhalb des SAP NetWeaver Portal
.currentNavigationDataElement() .getFullNavigationTargetString());
Listing 6.6 Aufruf des Exit-Plugs
Zuerst greifen wir über wdThis.wdGetNavigationTesterInterface-ViewController() auf den benötigten Interface-View-Controller zu.Die benötigte Applikations-URL ermitteln wir über das Context-AttributFullNavigationTargetAsString des NavigationData-Context-Kno-tens.
Das FullNavigationTargetAsString-Context-Attribut ist hierbei einschönes Beispiel, wie Sie mithilfe eines calculated-Attributes den benö-tigten Wert in Abhängigkeit anderer Context-Attribute ermitteln können.Listing 6.7 zeigt die Berechnung der kompletten Applikations-URL, alsoinklusive eventueller Übergabeparameter, als Teil der Methode getNavi-gationDataFullNavigationTargetString().
fullNavigationTarget.append( wdContext.currentNavigationDataElement(). getAbsoluteTarget());
String businessParameters = wdContext.currentNavigationDataElement() .getBusinessParameterString();
if (!StringUtil.isEmpty(businessParameters)) { fullNavigationTarget.append('?') .append(businessParameters);}
Listing 6.7 Ermittlung der vollständigen Applikations-URL
6.2.6 Starten der Web-Dynpro-Zielapplikation in einem zusätzlichen Fenster
Durch die Verwendung des Exit-Plugs wird die Web-Dynpro-Applikation,die die Navigation angestoßen hat, beendet, sobald zur gewünschtenZielapplikation navigiert wurde. Sobald Sie aber die navigierende Web-Dynpro-Applikation nicht beenden, sondern parallel weiter benutzenmöchten, muss die gewünschte Zielapplikation in einem neuen Fensterdes Webbrowsers geöffnet werden. Durch Verwendung des IWDWindow-Manager ist dies ohne große Probleme möglich, wie Listing 6.8 zeigt.
Web-Dynpro-NavigationTester224
IWDWindow browserWindow = wdComponentAPI.getWindowManager(). createNonModalExternalWindow( wdContext.currentNavigationDataElement() .getFullNavigationTargetString(), wdContext.currentNavigationDataElement() .getTargetTitle());
browserWindow.open();
Listing 6.8 Starten der Zielanwendung in einem neuen Fenster
Verwendung desLinkToURL-UI-
Elementes
Zu guter Letzt wollen wir Ihnen eine weitere Möglichkeit nicht vorenthal-ten, wie Sie die Zielanwendung in einem neuen Fenster starten können:Bei der Verwendung des IWDLinkToURL-UI-Elementes können Sie überdas target-Attribut definieren, in welchem Fenster des Webbrowsers dieangegebene URL aufgerufen werden soll. Bei Verwendung des _BLANK-Wertes, der als Standardwert angeboten wird, wird die URL in einemneuen Fenster angezeigt.
Abbildung 6.18 zeigt die Definition eines IWDLinkToURL-UI-Elementes.Als URL wird die weiter oben ermittelte Applikations-URL verwendet.
Abbildung 6.18 Verwendung des LinkToURL-UI-Elementes
Nachdem wir nun eingehend die Navigation zwischen Web-Dynpro-Ap-plikationen außerhalb des SAP NetWeaver Portal besprochen haben, wer-den wir im nächsten Abschnitt auf die Encodierung der Übergabeparame-ter eingehen. Danach werden wir die Möglichkeiten beleuchten, dieIhnen zur Verfügung stehen, sobald Ihre Web-Dynpro-Anwendungen in-nerhalb des SAP NetWeaver Portal aufgerufen werden.
225Encodierung von Übergabeparametern
6.3 Encodierung von Übergabeparametern
Um die korrekte Übertragung der definierten Übergabeparameter sicher-zustellen, müssen die entsprechenden Parameterwerte encodiert werden.
Verwendung der JDK-1.3-encode()-Methode
Da das SAP NetWeaver Developer Studio auf Basis des Java DevelopmentKit 1.3 (JDK) arbeitet, steht hierfür nur der standardmäßige URLEnco-der.encode()-Aufruf zur Verfügung, der keine Definition der gewünsch-ten Code-Page ermöglicht. Da Ihre Installation von SAP NetWeaver 2004aber auf Basis des JDK 1.4 arbeitet, können wir mittels Java-Reflexion dieerweiterte encode()-Methode rufen, die die Definition der gewünschtenCode-Page erlaubt.
Da wir diese Funktionalität an verschiedenen Stellen (und in verschiede-nen Beispielen dieses Buches) benötigen, haben wir die Hilfsklassecom.sap.wdbp.encode.URLEncode definiert, die allen Beispielen in die-sem Buch über die Web-Dynpro-Entwicklungskomponente tc~utilszur Verfügung steht. In Anhang A erklären wir ausführlich, was Sie bei derDefinition dieser Entwicklungskomponente beachten müssen.
An dieser Stelle wollen wir nun als Erstes die Schritte beschreiben, die Siebenötigen, um die URLEncode-Hilfsklasse zu verwenden. Danach werdenwir auf ihre konkrete Verwendung – das Encodieren der Parameterwerte– eingehen.
6.3.1 Einbindung der Web-Dynpro-Entwicklungs-komponente tc~utils
Um eine bestimmte Funktionalität aus einer anderen (Web-Dynpro-)Ent-wicklungskomponente zu nutzen, müssen Sie eine entsprechende Ver-knüpfung zwischen der Entwicklungskomponente definieren, die dieseFunktionalität bereitstellt, und derjenigen, die diese Funktionalität nutzenwill.
Definition von Public Parts und Public Part Entities
Eine Entwicklungskomponente stellt die von anderen Entwicklungskom-ponenten nutzbare Funktionalität über Public Parts zur Verfügung. EinPublic Part wiederum definiert über die so genannten Public Part Entitiesdiejenigen Objekte bzw. Funktionen, die nach außen für andere Entwick-lungskomponenten sichtbar sein sollen.
Abhängig vom Typ der Entwicklungskomponente können die unter-schiedlichsten Typen von Public Part Entities definiert werden. Eine Web-Dynpro-Entwicklungskomponente kann unter anderem Public Part Enti-ties für Web-Dynpro-Komponenten oder Web-Dynpro-Komponenten-
Web-Dynpro-NavigationTester226
Interfaces definieren. Neben diesen Web-Dynpro-Entitäten kann eineWeb-Dynpro-Entwicklungskomponente aber auch einfache Java-Klassenüber einen Public Part bereitstellen. Genau dies tut der Public Part Utilsder Entwicklungskomponente tc~utils, den wir nun im Web-Dynpro-NavigationTester benutzen wollen. Dazu müssen wir eine Referenz, die sogenannte Used-DC-Beziehung, für den Public Part Utils erzeugen.
1. Navigieren Sie im Web Dynpro Explorer zum Verzeichnis Used DCs,das sich unterhalb von DC MetaData • DC Definition im Navigation-Tester-Projekt befindet. Durch den Befehl Add Used DC… im Kontext-menü von Used DCs starten Sie die Definition dieser Referenz (sieheAbbildung 6.19).
Abbildung 6.19 Hinzufügen einer Referenz zu einer Entwicklungskomponente
2. Im folgenden Dialog wählen Sie den Public Part Utils innerhalb dertc~utils-Entwicklungskomponente, die hier als tc/utils angezeigtwird. Wie Sie in Abbildung 6.20 sehen, können Sie einen Public Partgrundsätzlich innerhalb der Registerkarte Active oder der RegisterkarteInactive auswählen.
Aktive undinaktive Entwick-
lungskompo-nenten
Sobald Sie die Entwicklung einer (Web-Dynpro-)Entwicklungskompo-nente abgeschlossen haben, können Sie diese aktivieren und somit of-fiziell für eine Verwendung in anderen Entwicklungskomponenten frei-geben. Im Regelfall sollten Sie nur auf aktive (also freigegebene) PublicParts bzw. Entwicklungskomponenten zugreifen, da Sie ansonsten beieventuellen Änderungen des verwendeten inaktiven Public Parts Ihreeigene (Web-Dynpro-)Entwicklungskomponente anpassen müssen. Inunserem Beispiel wählen wir den Public Part Utils aus der Liste derinaktiven Entwicklungskomponenten, da wir alle an unseren Beispielenbeteiligten Entwicklungskomponenten selbst entwickeln.
227Encodierung von Übergabeparametern
Abbildung 6.20 Definition des Public Parts Utils
Bei der Definition einer Used-DC-Beziehung sollten Sie immer den ge-wählten Dependency Type beachten. Da wir in unserem Beispiel dieURLEncode-Hilfsklasse verwenden wollen, die Teil des Public PartsUtils ist, müssen wir hierfür Build Time und Run Time wählen. Damitstellen Sie sicher, dass die URLEncode-Hilfsklasse während der Kompi-lierung des NavigationTester-Projektes verfügbar ist.
3. Nach einem Klick auf die Finish-Taste wird die benötigte Referenz er-zeugt. Abbildung 6.21 zeigt einen Ausschnitt der definierten Referen-zen. Wie Sie erkennen können, wird dabei eine Used-DC-Beziehungimmer in der Form
<DC-Name> (<Public Part Name>)
angezeigt; in unserem Beispiel also tc/utils (Utils).
Web-Dynpro-NavigationTester228
Abbildung 6.21 Definierte Public Parts
Verwendung einerSharing Reference
Um zur Laufzeit sicherzustellen, dass der Public Part Utils bzw. die darinenthaltenen Java-Klassen wie zum Beispiel die URLEncode-Hilfsklassevom NavigationTester auch benutzt werden kann, müssen Sie nun eine sogenannte Sharing Reference definieren. Eine Sharing Reference definierteine Laufzeitabhängigkeit zu einer bestimmten (Web-Dynpro-)Entwick-lungskomponente, zu einer bestimmten Webapplikation oder zu einembestimmten Portal-Service.
Zusammenhangmit den verwen-
deten Java-Class-loadern
Aus technischer Sicht bedeutet eine Sharing Reference zu einer der obengenannten Entitäten immer eine Referenz auf den entsprechenden Java-Classloader der (Web-Dynpro-)Entwicklungskomponente, der Webappli-kation oder des Portal-Service. Ohne diese Classloader-Referenz kannzum Beispiel die NavigationTester-Anwendung keine Klassen aus demPublic Part Utils laden und somit auch nicht benutzen.
Ohne die korrekte Definition der benötigten Sharing Reference erhaltenSie zur Laufzeit eine ClassNotFound-Exception, sobald Sie eine Klasseaus der – nicht korrekt referenzierten – (Web-Dynpro-)Entwicklungskom-ponente, der Webapplikation oder dem Portal-Service benutzen wollen.
1. Um für das NavigationTester-Projekt die benötigte Sharing Referencezu definieren, öffnen Sie das Eigenschaftenfenster des Projektes überden Properties-Eintrag im Kontextmenü des Projektes (siehe Abbil-dung 6.22).
Abbildung 6.22 Editieren der Web-Dynpro-Projekteigenschaften
229Encodierung von Übergabeparametern
Anlegen einer Sharing Reference
2. Im darauf folgenden Dialog wählen Sie links Web Dynpro Referencesund dann die Registerkarte Sharing references (siehe Abbildung 6.23).Mit einem Klick auf den Add-Button können Sie die neue Sharing Re-ference anlegen.
Abbildung 6.23 Eigenschaftenfenster eines Web-Dynpro-Projektes
3. Abbildung 6.24 zeigt die Definition der Sharing Reference für den Pub-lic Part Utils der tc~utils-Entwicklungskomponente. Wie Sie er-kennen können, referenzieren Sie immer die entsprechende Entwick-lungskomponente (oder Webapplikation) und nicht denentsprechenden Public Part. Sharing References auf Portal-Services ha-ben eine besondere Syntax, die wir in Kapitel 7 besprechen werden.
Abbildung 6.24 Definition einer Sharing Reference
Web-Dynpro-NavigationTester230
4. Mit einem Klick auf OK wird die gewünschte Sharing Reference ange-legt und, wie Sie in Abbildung 6.25 erkennen können, auch im Eigen-schaftenfenster des Projektes angezeigt.
Abbildung 6.25 Definierte Sharing References
6.3.2 Beschreibung der Datei portalapp.xml
Bevor wir auf die konkrete Verwendung der URLEncode-Hilfsklasse einge-hen werden, die Teil des Public Part Utils ist, möchten wir Ihnen an die-ser Stelle nicht vorenthalten, wie und wo die definierten Sharing Refe-rences in Ihrem Web-Dynpro-Projekt abgelegt werden.
1. Wechseln Sie hierzu in den Navigator und öffnen Sie das Navigation-Tester-Projekt. Im Verzeichnis gen_wdp finden Sie die generierten Da-teien Ihres Web-Dynpro-Projektes. Neben den benötigten Java-Klas-sen im Unterverzeichnis packages finden Sie dort auch die Dateiportalapp.xml (siehe Abbildung 6.26).
Abbildung 6.26 Erzeugte Datei portalapp.xml
2. Um die Datei portalapp.xml anzuzeigen, wählen Sie in ihrem Kontext-menü Open With • Text Editor (siehe Abbildung 6.27).
231Encodierung von Übergabeparametern
Abbildung 6.27 Anzeigen der Datei portalapp.xml
3. Abbildung 6.28 zeigt einen Ausschnitt aus der Datei portalapp.xml desNavigationTester-Projektes. Wie Sie erkennen können, taucht die ebendefinierte Sharing Reference für sap.com/tc~utils in der Liste derdefinierten Sharing References auf.
Abbildung 6.28 Definierte Sharing References
Standardmäßig definierte Sharing References
Neben den von Ihnen definierten Sharing References sind für jedes Web-Dynpro-Projekt automatisch zwei Sharing References definiert, ohne diekeine Web-Dynpro-Anwendung erfolgreich ausgeführt werden kann.sap.com/tc~wd~dispwda zeigt dabei grundsätzlich benötigte Ressour-cen, wie zum Beispiel die verschiedenen Dateien der unterschiedlichenThemes. sap.com/tc~wd~corecomp enthält wichtige generische Web-Dynpro-Komponenten, beispielsweise für unterschiedliche Wertehilfen,die jeder Web-Dynpro-Anwendung zur Verfügung stehen.
In Kapitel 10 gehen wir ausführlicher auf die einzelnen Bestandteile dieserbeiden (generischen) Web-Dynpro-Entwicklungskomponenten ein.
6.3.3 Encodierung der Parameterwerte
Verwendung der UTF-8-Encodierung
Nachdem wir nun durch Verwendung des Public Parts Utils dertc~utils-Entwicklungskomponente die Hilfsklasse URLEncode in unse-rem NavigationTester verwenden können, wollen wir mit dessen Hilfe dieentsprechenden Parameterwerte der Übergabeparameter encodieren.
Web-Dynpro-NavigationTester232
Die URLEncode-Hilfsklasse benutzt dabei grundsätzlich die UTF-8-Enco-dierung.
Definition vonÜbergabe-
parametern imNavigation Tester
Wie weiter oben schon angesprochen, können Sie mithilfe des Web-Dyn-pro-NavigationTesters sehr einfach beliebige Übergabeparameter definie-ren. Abbildung 6.29 zeigt die Definition der applikationsspezifischen Pa-rameter Parameter1 und AnotherParameter. Über die Buttons Add undDelete können Sie beliebige weitere Parameter definieren bzw. wieder lö-schen. Unterhalb der Tabelle mit der Definition der unterschiedlichen Pa-rameter zeigt der NavigationTester zudem die sich aus der aktuellen Para-meterdefinition ergebende URL-konforme Darstellung.
Abbildung 6.29 Definition von Übergabeparametern
Diese URL-konforme Darstellung wird über das calculated-AttributBusinessParameterAsString des NavigationData-Context-Knotensdefiniert. Damit stellen Sie auf einfache Weise sicher, dass der entspre-chende Wert bei jeder Änderung der einzelnen Parameter automatischangepasst wird.
Listing 6.9 zeigt die Implementierung der getNavigationDataBusi-nessParameterString()-Methode der Web-Dynpro-Komponente Na-vigationTesterComp, in der die URL-konforme Darstellung berechnetwird.
businessParameters.setLength(0);for (int i = 0;
i < wdContext.nodeBusinessParameter().size();i++) {
IPublicNavigationTesterComp.IBusinessParameterElementparameter = wdContext.nodeBusinessParameter()
.getBusinessParameterElementAt(i);
if ((parameter.getName() != null)&& (parameter.getValue() != null)) {
businessParameters
233Navigation innerhalb des SAP NetWeaver Portal
.append(parameter.getName())
.append('=')
.append(urlEncode.encode(parameter.getValue()));
if (i < wdContext.nodeBusinessParameter().size() - 1) {businessParameters.append('&');
}}
}return businessParameters.toString();
Listing 6.9 Encodierung der Übergabeparameter
Wie Sie erkennen können, werden alle Parameterwerte über den Aufrufder encode()-Methode der URLEncode-Hilfsklasse erzeugt. Die benö-tigte urlEncode-Instanz erzeugen wir im Übrigen während der Initialisie-rung der Komponente NavigationTesterComp.
Im Beispiel aus Abbildung 6.29 entspricht die URL-konforme Darstellungdem definierten Übergabeparameter:
Parameter1=Web+Dynpro+Best+Practices &AnotherParameter=A+value+containing+some+special +characters+like+%C3%84%C3%96%C3%9C%C3%A4%C3%B6%C3%BC %29%28%26%C2%A7%3F
Die Encodierung der Übergabeparameter ist unabhängig davon, ob SieIhre Web-Dynpro-Anwendung innerhalb oder außerhalb des SAP Net-Weaver Portal starten.
6.4 Navigation innerhalb des SAP NetWeaver Portal
In Kapitel 5 haben wir die grundsätzlichen Möglichkeiten besprochen, dieIhnen das SAP NetWeaver Portal bietet, um Ihre Web-Dynpro-Anwen-dungen im Portal in Form eines Web-Dynpro-iViews aufzurufen, in Work-sets oder Rollen zu gruppieren, bestimmten Benutzergruppen zuzuord-nen oder die gewünschte Navigationsstruktur zu definieren, über diedann der Benutzer mithilfe der Top-Level-Navigation und/oder der De-tail-Navigation zwischen den einzelnen Applikationen navigieren kann.
513Index
Index
AAccess List 497Activity 359Adobe Document Service (ADS) 421Anwendungsarchitektur 25, 28Anwendungsprojekt 502Anwendungsschicht eines Server-
Knotens 388Anwendungsspezifische Konfigu-
ration 435Authentifizierung 437Expiration time 436Logoff-URL 436Standard-Locale 436
Anwendungsspezifische Personali-sierung 179
Application properties 435Application Server 380Applikationsname 211, 212Applikations-URL 211
absolute 211Aufrufen des Exit-Plugs 222Auslesen von Parametern 214Austauschbarkeit 34Authentifizierung 437
Webservice-Aufrufe 120
BBenutzermanagement 165Benutzerpersonalisierung 323Business Object Editor 287Business-Client-Protokoll 419Business-Objekte 234, 346
Ccalculated-Contextattribut 134Categories 163CBS 23Change Management Service 498Classloader-Referenz 387, 389, 459
Sharing Reference 405Classloading-Konzept 389ClassNotFound-Exception 228Client Abstraction 172Cluster
Debugging-Knoten 409
Cluster-Systemlandschaft 380CMS 23Component-Build-Service 498Component-Interface-Controller 34,
493Context-Mapping 60
Component-Interface-Definition 34Delegation an Component-
Controller 59Component-Interface-View 30, 31, 92,
136, 493Component-Usage 40, 262
Referencing Mode 43, 63Component-Usage-Lifecycle
createOnDemand 42, 64manual 42, 45
Configuration Tool 382offline 382online 382
Configuration-Adapter-Service 414Content Administrator 456Content Area 157Context-Mapping 72, 129, 263
bidirektionales 370Contextual-Navigation-Panel 342Controller-Usage 221Custom Coding Area 18
DData Link 370Data Modeler 79, 370Data-Link 122DC-Archiv 54DC-Build 49DC-Name 211, 212DC-Separation 50Debugging 409Debugging-Knoten 409Debug-Informationen 200Debug-Modus 199, 383
eines Server-Knotens 396Default-View-Problem 100, 104Definition von Operations 287Deklaration
Data-Link 79
Index514
Einbettung eines Component-Interface-Views 97
Event 83Externes Interface-Context-
Mappings 79Interface-Context-Mapping 77Komponenten-Interface 37Komponenten-Interface-Implemen-
tierung 55, 57Layout-View 95Startup-Plug-Parameter 101ViewContainer-UI-Element 95View-ID 105Web Dynpro-Komponente 55
deklarative UIs 126Deklaratives Programmiermodell 18Delta-Link 183, 290Deployable Object 63DeploymentManagerComp 260Design Time Repository 497Detail-Navigation 159, 233, 237, 339Detail-Viewer 301Development-Component 497, 499Development-Configuration 497Development-Object 499Dialog-Instanz 380DTR 23dynamische Event-Subskription 87dynamische Parameter-Mappings 132dynamische Programmierung 127dynamisches UI 126
Eencode() 225End-User-Personalization 198, 323Enge Kopplung 43Enqueue Server 381Enterprise Services Architecture 24
Enterprise Service 24Enterprise Service Repository 24UI-Pattern 24
Entwicklungsgeschwindigkeit 29Erweiterung des Navigation-Panels
159Event Listener 343Eventing 82
dynamische Subskription 87
Event-Handler subskribieren 85Event-Parameter 83Expiration Time 426External-Library-Entwicklungskompo-
nente 372Externes Interface-Context-Mapping
27
FFaceless Component 261Feature2Sample-Matrix 504, 505File-Upload 316fire() 345
GGameStation-Anwendung 25
Anwendungsarchitektur 66Deployment-Manager-Kompo-
nente 45, 65, 74Spiel-Komponente 61Spiel-Komponenteninstanz 62, 69,
71Spiel-Komponenten-Interface 36Toolbar-Komponente 71
Google Web APIs Developer's Kit 115Google-Suche 116
HHard Reference 391Hauptkomponenten des Web AS 380hierarchischen Context-Knoten 251HTTP Provider Service 447HTTP-Session 442HTTP-Session-Timeout 442
IiFrames 192, 234IGS 416Implementierung
Dynamische Event-Subskription 88Erzeugung von Spiel-Komponenten-
instanzen 69Importieren von Business Objects 286Inbound-Plugs 136
Dispatching in Component-Interface-Views 108
Dispatching in Interface-Views 108
515Index
Infrastrukturschicht eines Server-Knotens 386Anwendungscontainer 386Interfaces 386Libraries 386Services 387
initiale Darstellungen 136Inner Node 251Inner Page 157Input Element 369Interface-Context-Mapping 27
Deklaration 77externes 75, 76, 79internes 74isInputElement-Eigenschaft 75, 78Mapping-Kette 82
Interface-Komponente eines Server-Knotens 386
Inter-Komponenten-Navigation 107, 108
Internet Graphics Server 416isolierte iViews 192, 343isRunningInPortal() 205iView 154, 169iView Editor 154, 173iView Tray 177iView Wizard 167iView-Template 335IWDComponentUsage-API 42, 62, 87
Referencing Mode 89IWDInputField 206IWDLinkToAction 348IWDLinkToURL 224IWDTable 140, 217IWDTextView 148IWDTransparantContainer 148IWDTree 255, 266IWDViewContainerUIElement 127IWDVisibility 205IWDWindowManager 223
JJ2EE Dispatcher 380J2EE Telnet Console 383J2EE-Entwicklungskomponente 359Java VM-Parameter 438Java-Classloader 228
Java-DC 49JCo 430JCo Pool 430JCo-Destination 189, 465, 466, 467
Administration und Konfiguration 465
Testen einer JCo-Verbindung 466JNDI-Lookups 270JVM-Thread-Dumps 383
KKategorien 163Kernel-Schicht 385Klassifikation von Komponenten 494
Library-Komponenten 496Model-Komponenten 496UI-Komponenten 495Visuelle Komponenten 495Wurzel-Komponenten 495
Komponentendiagramm 31Komponenteninstanz 40Komponenten-Interface 25, 34, 44
Component Usage 43Definition 35, 493Deklaration 37Implementierung 35, 55, 491
KomponentisierungArchitektur 492Benutzeroberfläche 28Beschleunigter Entwicklungs-
prozess 50Component-Interface-View 93Data Modeler 66DC-Separation 50Deploy&Play-Konzept 25Enge Kopplung 29Interface-Context-Mapping 27, 36,
72Klassifikation von Komponenten
494Lose Kopplung 25, 44, 46, 61Nachteile großer Komponenten 29Navigation 107, 108
Konfigurationanwendungsspezifische Eigen-
schaften 435Entwicklungsmodus 418
Index516
ExpirationTime 426Komprimierung übertragener Daten
447Komprimierung von Response-
Daten 429Logs und Traces 448Propertysheet default 415sap.systemLocale 420Security Session 444Session Management 442sessionübergreifende Daten 427SLD-Service 450SSL und SNC 451SSO Login-Ticket 446Standard-Theme 420Stylesheets 435Text-Mappings 422Trace-Level 448Validierungsverhalten beim Rendern
434
LLaufzeitarchitektur des Web AS 384Laufzeitkomponenten der Web-
Dynpro-Laufzeit 392Laufzeit-Metadaten von Web Dynpro
393Laufzeitumgebung 205Layout-View 95Library-Komponente 386, 496Log Configurator 483, 486
Category 483Destination 485Formatter 485Location 484Severity Level 483
Log Viewer 456, 487Logoff-URL 419lose Kopplung 343
MMapping von Übergabeparametern
291Message-Server 381Meta-Attribute 197, 325MIME-Cache 429Model 34Model-Binding 123
Model-Components 301Model-Klassen 119Model-Komponente 121, 301Model-Typ 117Model-View-Controller-Pattern 19Mögliche Fehlerquellen 198Music Store 301
NnavigateAbsolute() 235navigateRelative() 236navigateToObject 282Navigation zwischen Komponenten
107Navigation-Dispatcher-View 109Navigation-Modeler 94, 97Navigation-Panel 157, 159, 181, 339Navigations-Context 240Navigationslink 93Navigationsstruktur 183Navigationsverhalten 237Netzwerkverbindung 452
OObject-based Navigation 234, 273,
284, 345onLoadChildren 266Operations 346Outbound-Plugs 136
PPage Editor 155Page Header 157Parameter 213Parameter-Mapping 267Persistenz 393Personalisierung 196, 323Phasenmodell 18Port 489Portal Content Catalog 167Portal Content Directory 235, 270Portal Eventing 191Portal Landscape 160Portal Pages 155
geschachtelte 158Portal Runtime 275Portal Themes 157Portal-Components 275
517Index
Portal-Einstellungen 193Portal-Eventing 343, 351Portal-Events 343Portal-Historie 239Portal-Navigation 236
absolute 235Portal-Personalisierung 323Portal-Services 276Portal-Themes 157, 175Programmier-Hooks 18Programmiermodell
Custom Coding Area 18deklarativer Ansatz 18Hook-Methoden 18modellgetriebene Entwicklung 18Phasenmodell 18
Property-Editor 163Propertysheet default 415Public Part 47, 225, 362, 497, 499
Archiv 48Definition 26, 47, 49Deklaration 52Dependency Type 54Entities 225Purpose 48, 52
RReferencing Mode 43, 63, 89rekursiver Context-Knoten 251Relative Applikations-URL 209Remote Debugging 409repeatedNode 252Resource-Bundle-Mechanismus 463Reverse-Context-Mapping 369Role-Editors 156Rolle 155Root-Component 135
SSAP Application Integrator 191, 199,
242SAP Developer Network 503SAP Logon-Ticket 165SAP Management Console 383SAP NetWeaver Administrator 382SAP NetWeaver Development Infra-
structure 496
SAP NetWeaver Development Infra-structure (NWDI) 23, 496CBS 23CMS 23DTR 23Komponentenmodell 26, 47, 497,
498SAP NetWeaver Portal 153SAP Web AS
Application Server 21Cluster 21J2EE Dispatcher 21zentrale Services 22
SAP Web Dispatcher 380SAP_LocalSystem 171schwache Referenz 391SDM 382, 398Security Service 418Serverseitiges Eventing 27, 82, 102
Methodenaufrufe als Ersatz 89Service Pack 398Service-Komponenten 387Session-Locale 462Session-Management 427
Scopes 427Session-Sprache 462Sharing Reference 228, 229, 279, 405SLD-Daten 433Software Deployment Manager 398Software-Components 376, 497, 499Sprachermittlung 462
Beispiel 464Sprachressourcen 460SSL 452starke Referenz 391Startup-Plug 136Startup-Plug-Parameter 216Statische Web-Ressourcen 393Struktur-Bindung 70Stylesheet 435Supply-Function 338System Editor 163System Landscape Directory 23, 433,
450, 498System-Alias 166Systeminformation 395
Index518
TTableCellEditors 142Table-Data-Bindings 141Terminologien 422Text Mapping 422Theme 420, 435Thread-Dump 408Top-Level-Navigation 156, 233, 237Tray-Eigenschaften 196Tree-Items 258Tree-Nodes 258Tree-Node-Type 258Tutorials 504
UÜbergabeparameter 172, 175UI-Elemente
Adobe InteractiveForm 421, 429IWDInputField 206IWDLinkToAction 348IWDLinkToURL 224IWDTable 140, 217IWDTextView 148IWDTransparantContainer 148IWDTree 255, 266IWDViewContainerUIElement 127IWDVisibility 205WDTextViewDesign 149
UI-Komponente 30, 89, 495UI-Service-Komponente 496unsubscribe() 344URL-Alias 213URL-Generierung 417URL-Parameter 99, 137, 220Used-DC-Beziehung 226, 261User Coding Area 70User-Interface-Komponente 495UTF-8 232
VVendor 211, 212Versionsinformation 397, 481Verwendungsbeziehung
Web-Dynpro-DC 52zwischen Komponenten 82
View Area 93, 109View Assembly 97, 108
View Designer 94View Set 93, 109View-Composition 35, 97, 109ViewContainer-UI-Element 31, 93, 94,
109View-Designer 256View-Navigation
eventbasiert 102Visual Administrator 382Visuelle Komponente 495VM Heap Size 438VM-Parameter 438
WWDConfiguration 125, 236WDDeployableObjectPart 210WDPortalNavigation 234, 236, 282WDPortalNavigationMode 237WDPortalUtils 205, 281WDTextViewDesign 149WDURLGenerator 209WDWebContextAdapter 137, 214, 217Weak Reference 391Web Dynpro Console 456, 470
Backend-Performance 478Client-Performance 474JARM-Instrumentierung 472Performance-Instrumentierung 475Request-Monitoring 477Sanity Checks 480Server-Performance 471Session-Monitor 481Versionsinformation 481
Web Dynpro Content Administrator 189, 455, 456Aktivieren/Deaktivieren von
Anwendungen 458Browsen von Inhalten 457Classloader-Referenzen 459JCo-Destinationen 465Language Resources 460
Web Dynpro Data Modeler 309Web Dynpro Explorer 117Web Dynpro Foundation Runtime 19
Architekturüberblick 19Client-Abstraktion 20Common Model Interface 20
519Index
generische UI-Services 20Programmiermodell 20Server-Abstraktion 20
Web Dynpro-Komponente 261Web-Dynpro-API
IWDComponentUsage 62IWDEventHandlerId 88IWDEventId 88IWDViewUsageInfo 105IWDWindowInfo-API 105
Web-Dynpro-Applikation 135Web-Dynpro-Building-Blocks
Client-Abstraction-Layer 20Common-Model-Interface 20Generische UI-Services 20Programmiermodell 20Server Abstraction Layer 20UI-Elemente 20
Web-Dynpro-Client-Abstraction 217Web-Dynpro-Container 392Web-Dynpro-Context 249Web-Dynpro-Core-Components 394Web-Dynpro-DC 26, 47, 499, 500
voll qualifizierter Name 63Web-Dynpro-Entwicklungskompo-
nente 359Web-Dynpro-Exit-Plug 219Web-Dynpro-Forum 505Web-Dynpro-iView 154, 160, 233, 334Web-Dynpro-iView-Template 168Web-Dynpro-Komponente 500
Schnittstellen 492voll qualifizierter Name 63Wiederverwendbarkeit 494
Web-Dynpro-Komponentendia-gramm 489Ball-Symbol 490Component Interface-View 489Component-Interface-Controller
490Connector 490Komponenten-Interface 491Socket-Symbol 490
Web-Dynpro-Learning-Map 507Web-Dynpro-NavigationTester 203Web-Dynpro-OBNTesters 274Web-Dynpro-Phasenmodell 18Web-Dynpro-Programmiermodell 20
Web-Dynpro-Projekt 500Web-Dynpro-Service 392Web-Dynpro-Systemkomponenten
394Web-Dynpro-URL-Template 192Web-Dynpro-View 136Web-Dynpro-View-Designers 127Web-Dynpro-Werkzeuge 94Webservice-Model 115Wertehilfe 433Window 32, 93Working Area 157, 159, 238, 339Worksets 155WSDL-Datei 118Wurzel-Komponente 30, 33, 89, 495
XX.509-Client-Zertifikat 165
Zzentrale Cluster-Administration 382zentrale Systemdatenbank 381zentrales Deployment 382, 398Zieladresse
absolute 235