Die Reihe Xpert - Springer978-3-642-11387-1/1.pdf · außergewöhnlichen Menschen: Octavian...

14

Transcript of Die Reihe Xpert - Springer978-3-642-11387-1/1.pdf · außergewöhnlichen Menschen: Octavian...

Die Reihe Xpert.press vermittelt Professionalsin den Bereichen Softwareentwicklung,Internettechnologie und IT-Management aktuellund kompetent relevantes Fachwissen überTechnologien und Produkte zur Entwicklungund Anwendung moderner Informationstechnologien.

Ulrich Gellert · Ana Daniela Cristea

Praxishandbuch Web DynproABAP

123

Ulrich Gellertc/o S+P LION AGRobert-Bosch-Str. 968542 [email protected]

Ana Daniela Cristeac/o S+P LION AGRobert-Bosch-Str. 968542 [email protected]

ISSN 1439-5428ISBN 978-3-642-11386-4 e-ISBN 978-3-642-11387-1DOI 10.1007/978-3-642-11387-1Springer Heidelberg Dordrecht London New York

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

© Springer-Verlag Berlin Heidelberg 2011Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die derÜbersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, derFunksendung, der Mikroverfilmung oder der Vervielfältigung auf anderen Wegen und der Speicherungin Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. EineVervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzender gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9.September 1965 in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungspflichtig.Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes.Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werkberechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne derWarenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermannbenutzt werden dürften.

Einbandentwurf: KuenkelLopka GmbH, Heidelberg

Gedruckt auf säurefreiem Papier

Springer ist Teil der Fachverlagsgruppe Springer Science+Business Media (www.springer.com)

Vorwort

Getreu Albert Einsteins Motto „Example isn’t another way to teach, it is theonly way to teach“ haben wir uns das Ziel gesetzt, mit diesem Buch dem LeserWeb Dynpro ABAP Schritt für Schritt zu erklären. Anhand von praktischen Bei-spielen tauchen Sie von Kapitel zu Kapitel tiefer in die Web-Dynpro-ABAP-Weltein. Aber auch Zusammenhänge mit anderen Bereichen werden Ihnen in Beispielennahegebracht.

In Kap. 1 erklären wir, was Web Dynpro, integriert in der SAP-NetWeaver-Plattform, eigentlich ist.

Kapitel 2 beschäftigt sich mit dem einfachen Einstieg „Easy Access“ in SAP.In Kap. 3 beschreiben wir den Modus anhand eines Beispiels in dem eine Web-

Dynpro-Component erstellt wird, erklären alle Elemente einer View und zeigen,wie man mit dem ABAP Debugger Anwendungen diagnostiziert.

Kapitel 4 behandelt das ABAP Dictionary in dem alle Entwicklungsobjekteerstellt werden, die wir als Basis für unsere Beispiele benutzen. Sie können schnelldie nötigen Kenntnisse erwerben, wie Ihnen Entwicklungsobjekte (die im ABAPDictionary erstellt sind) bei der Erstellung von Web-Dynpro-Applikationen helfenkönnen.

In Kap. 5 präsentieren wir Context-Knoten und Context-Attribute und er-klären deren Wichtigkeit für Web Dynpro. Wir erörtern die Möglichkeiten derErstellung, Benutzung, des Ausfüllens mit Werten und des Lesens der Inhalte.

In Kap. 6 gehen wir auf Datenbindung, Context-Mapping und Interface-Methoden ein. Zu diesem Zweck zeigen wir in einfachen Beispielen die Daten-bindung. Dieses Beispiel wandeln wir stufenweise um, damit der Leser ein klaresBild vom Context-Mapping erhält (sowohl in interner als auch in externer Form –Direct Mapping und Reverse Mapping).

Das Kap. 7 behandelt die View-Controller-Methoden, beginnend mit Beispie-len einiger Hook-Methoden bis zu den Benutzerdefinierten Methoden und denEventhandler-Methoden. Jede Methode wird durch ein Beispiel erläutert.

Kapitel 8 widmet sich dem Layout der UI-Elemente.Im größten Kapitel (Kap. 9) werden die UI (User-Interface)-Elemente ausgie-

big beschrieben. Jedes UI-Element wird durch ein Beispiel erläutert. Gleichzeitigzeigen wir für jedes UI-Element die dynamische Programmierung. Wir stellen

v

vi Vorwort

jedoch nicht nur die UI-Elemente vor, sondern bieten dem Leser weitere Zusatz-informationen.

Das Kap. 10 beinhaltet Nachrichten und Ausnahmen. Wir beginnen mitder Schaffung der nötigen Klassen (Nachrichtenklassen, Ausnahmeklassenund Assistance-Klassen) und zeigen, wie sie im Rahmen der Web-Dynpro-Komponenten zu benutzen sind und wie damit solide Applikationen erstellt werden.

Kapitel 11 beschäftigt sich mit dem Erstellen von mehrsprachigen Applikatio-nen auf der Ebene der Interfaces und der Ebene der Stammdaten. Wir präsentierenauch den Modus, mit dem wir mit diesen Daten in Web-Dynpro-Komponentenarbeiten können.

In Kap. 12 werden verschiedene Web-Dynpro-Modelle vorgestellt. Wir zeigennicht nur die Art, in der eine Assistance-Klasse, ein Web Service und ein BAPI alsModell verwendet wird, sondern auch den Modus, in dem man Multi ComponentApplikationen erstellen kann.

Das Kap. 13 widmet sich dem ALV (ABAP List Viewer) und den SO (Se-lect Options). Wir fangen wieder mit einfachen Beispielen an und bauen diesestufenweise bis zu einer ALV-Output-Konfiguration und der Kombination mitSOs aus.

In Kap. 14 wird die Integration der Web-Dynpro-Applikationen in dasSAP-NetWeaver-Portal beschrieben. Wir präsentieren die Verbindung mit demBackend-ABAP-System und kommen bis zu WD-Applikationen, die ein PortalEvent senden und auf ein Portal Event reagieren können.

Das vorletzte Kapitel (Kap. 15) handelt von Web Dynpro und Berechtigungen.Wir präsentieren kurz RBAC (Role Based Access Control) und beschreiben dasSAP-NetWeaver-Berechtigungskonzept.

Im letzten Kapitel (Kap. 16) präsentieren wir, wie ein Mind Map uns helfenkann Web Dynpro schneller zu lernen. Wir haben ein Mind Map entworfen, das allelernenden Web-Dynpro-Elemente enthält und sich weiterentwickeln lässt.

Die Beispiele für unser Buch wurden auf einem SAP System mit SAP Net-Weaver 7.00 mit Support Package 17 erstellt. Bei SDN (www.sdn.sap.com) gibtes eine SAP-NetWeaver-Trial-Version mit ABAP und mit SAP GUI, die kostenfreifür Testzwecke genutzt werden kann. Die meisten Übungen lassen sich damit ma-chen. Die Konfigurations-Steps sind auch bei SDN zu finden. Um mit dem SAPInteracktive Forms by ADOBE zu arbeiten, braucht man beide NetWeaver-Trial-Versionen (ABAP und Java), da ADS integraler Bestandteil der SAP-NetWeaver-Java-Version ist. Zusätzlich braucht man auch den ADOBE LiveCycle Designer ausdem SAP-Service-Marktplatz. Die Konfigurations-Steps sind im SAP Press-BuchSAP Interactive Forms by Adobe (Hauser et al.) beschrieben. Um mit dem Por-tal arbeiten zu können braucht man die SAP-NetWeaver-Java-Trial-Version. AlleSoftware- und Hardwareanforderungen und die Konfigurations-Steps sind im SAPPress Buch Developer’s Guide to SAP NetWeaver Portal Applications (Banner et al.)beschrieben.

Die Erstellung eines Buches ist ein weiter Weg. Viele Diskussionen mit Studen-ten und Entwicklern haben bei uns die Idee reifen lassen, ein Praxisbuch zum ThemaWeb Dynpro ABAP zu erarbeiten. Wichtigster Punkt war dabei, die Leserin oder

Vorwort vii

den Leser Schritt für Schritt anhand von praktischen Beispielen in das Themenge-biet einzuarbeiten. Viele Wochenenden, Urlaube und Abende wurden investiert unddie positive Unterstützung unserer Kollegen hat uns immer wieder neue Energiegegeben.

Danksagung

Bedanken wollen wir uns vor allem bei unseren Korrekturlesern Dieter Schmitt undHeinz-Jürgen Gebhardt, die uns durch ihre Hinweise und Anmerkungen eine großeHilfe waren.

Ulrich Gellert möchte sich zuerst bei allen Kollegen der S + P LION AG be-danken, die ihn stets unterstützt haben. Danken will ich meinem leider viel zu frühverstorbenen Vater Gerhard Gellert, der mich 1983 in die Welt der IT eingeführt hatund ohne den unsere Firma nie das geworden wäre, was sie heute ist. Auch meinerMutter, Gabriele Gellert, gilt mein besonderer Dank, da sie mich bis heute aktivunterstützt und die gute Seele unseres Unternehmens ist. Ich danke meiner liebenFrau Carmen und meinen Kindern Alexa und Marc ohne ihre Unterstützung hätteich dieses Buch nie mitgestalten können.

Ana Daniela Cristea bedankt sich zuerst bei NWCON Technology Consul-ting, vor allem bei Thomas Muschalik, und der S + P LION AG, die mir geholfenund mich unterstützt haben. Bei dieser Gelegenheit möchte ich jenen danken, diemeine Schritte während meiner Doktorarbeit begleitet haben, insbesondere zweiaußergewöhnlichen Menschen: Octavian Prostean und Mircea Vladutiu.

Nicht vergessen will ich auch diejenigen, die mich ermutigt haben meine erstenBücher und Artikel zu veröffentlichen: Poanta Aron und Panoiu Caius, denen ichauf diesem Weg für ihre wertvollen Ratschläge danke.

Nicht zuletzt will ich mich bei meiner Familie und Freunden bedanken. Beson-ders bei meiner Mutter Sabina Cristea und bei Susanne und Edgar Hammes, diemich nach Kräften unterstützt haben, damit ich die nötige Zeit hatte dieses Buchmitzugestalten.

Heidelberg, Deutschland Ulrich GellertJuli 2010 Ana Daniela Cristea

ix

Inhaltsverzeichnis

1 Was ist Web Dynpro? . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 SAP Easy Access . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1 Ändern des SAP Easy Access . . . . . . . . . . . . . . . . . . 62.2 Favoriten-Liste . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Festlegen einer Transaktion als Starttransaktion . . . . . . . . 82.4 Erstellen einer Verknüpfung . . . . . . . . . . . . . . . . . . 9

3 Designen einer Web-Dynpro-Komponente . . . . . . . . . . . . . 113.1 View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1.1 View-Layout . . . . . . . . . . . . . . . . . . . . . . 143.1.2 Context-View . . . . . . . . . . . . . . . . . . . . . 173.1.3 Aktionen . . . . . . . . . . . . . . . . . . . . . . . . 183.1.4 Methoden . . . . . . . . . . . . . . . . . . . . . . . 203.1.5 Eigenschaften . . . . . . . . . . . . . . . . . . . . . 213.1.6 Attribute . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2 Componentcontroller . . . . . . . . . . . . . . . . . . . . . . 233.3 Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4 Web-Dynpro-Anwendung . . . . . . . . . . . . . . . . . . . . 253.5 ABAP Debugger . . . . . . . . . . . . . . . . . . . . . . . . 283.6 Konfiguration der Web Dynpro Anmeldeseite . . . . . . . . . 31

4 ABAP Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.1 Datenelement . . . . . . . . . . . . . . . . . . . . . . . . . . 364.2 Domäne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.3 Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.4 Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.5 Suchhilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.6 Datenbank-View . . . . . . . . . . . . . . . . . . . . . . . . . 504.7 Tabellentyp . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.8 Sperrobjekt . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5 Context-Knoten und Context-Attribute zum Entwicklungszeitpunkt 575.1 Context-Attribute . . . . . . . . . . . . . . . . . . . . . . . . 585.2 Context-Knoten . . . . . . . . . . . . . . . . . . . . . . . . . 61

xi

xii Inhaltsverzeichnis

5.2.1 Erzeugen eines Knotens unter Verwendungeines ABAP-Dictionary-Repository-Objekts . . . . . 61

5.2.2 Arbeiten mit Kindknoten . . . . . . . . . . . . . . . 67

6 Datenbindung, Context-Mapping und Interface-Methoden . . . . 716.1 Datenbindung (Data binding) . . . . . . . . . . . . . . . . . . 726.2 Context-Mapping . . . . . . . . . . . . . . . . . . . . . . . . 76

6.2.1 Internes Context-Mapping . . . . . . . . . . . . . . . 776.2.2 Externes Context-Mapping . . . . . . . . . . . . . . 80

6.3 Interface-Methoden . . . . . . . . . . . . . . . . . . . . . . . 88

7 View-Controller-Methoden . . . . . . . . . . . . . . . . . . . . . . 937.1 Hook-Methoden . . . . . . . . . . . . . . . . . . . . . . . . . 93

7.1.1 wdDoInit . . . . . . . . . . . . . . . . . . . . . . . . 947.1.2 wdDoExit . . . . . . . . . . . . . . . . . . . . . . . 977.1.3 wdDoModifyView . . . . . . . . . . . . . . . . . . . 987.1.4 wdDoBeforeAction . . . . . . . . . . . . . . . . . . 1047.1.5 wdDoOnContextMenu . . . . . . . . . . . . . . . . . 105

7.2 Supply-Funktion-Methoden . . . . . . . . . . . . . . . . . . . 1107.3 Benutzerdefinierte Instanzmethoden . . . . . . . . . . . . . . 1107.4 Fire-Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . 1137.5 Eventhandler-Methoden . . . . . . . . . . . . . . . . . . . . . 116

8 Layout-UI-Elemente . . . . . . . . . . . . . . . . . . . . . . . . . 1218.1 FlowLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . 1228.2 GridLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248.3 MatrixLayout . . . . . . . . . . . . . . . . . . . . . . . . . . 1268.4 RowLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

9 User-Interface-Elemente (UI-Elemente), statische unddynamische Programmierung . . . . . . . . . . . . . . . . . . . . 1319.1 Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

9.1.1 TimedTrigger . . . . . . . . . . . . . . . . . . . . . 1329.1.2 ButtonChoice – Druckknopfauswahl . . . . . . . . . 135

9.2 Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1419.2.1 DropDownByKey . . . . . . . . . . . . . . . . . . . 1419.2.2 DropDownByIndex . . . . . . . . . . . . . . . . . . 1449.2.3 RadioButtonGroupByIndex . . . . . . . . . . . . . . 147

9.3 Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1499.3.1 ViewContainerUIElement . . . . . . . . . . . . . . . 1509.3.2 TabStrip . . . . . . . . . . . . . . . . . . . . . . . . 1569.3.3 PageHeader . . . . . . . . . . . . . . . . . . . . . . 1609.3.4 ContextualPanel . . . . . . . . . . . . . . . . . . . . 1649.3.5 Tray-UI-Element . . . . . . . . . . . . . . . . . . . . 1659.3.6 MessageArea . . . . . . . . . . . . . . . . . . . . . . 171

9.4 Complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1749.4.1 Table . . . . . . . . . . . . . . . . . . . . . . . . . . 174

Inhaltsverzeichnis xiii

9.4.2 RoadMap . . . . . . . . . . . . . . . . . . . . . . . . 1839.4.3 PhaseIndicator . . . . . . . . . . . . . . . . . . . . . 1919.4.4 Tree – Sequentielle Implementierung . . . . . . . . . 1989.4.5 DateNavigator . . . . . . . . . . . . . . . . . . . . . 203

9.5 Graphic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2119.5.1 Image . . . . . . . . . . . . . . . . . . . . . . . . . . 2129.5.2 BusinessGraphics . . . . . . . . . . . . . . . . . . . 215

9.6 Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2209.6.1 InteractiveForms . . . . . . . . . . . . . . . . . . . . 2209.6.2 FileUpload . . . . . . . . . . . . . . . . . . . . . . . 229

10 Nachrichten, Ausnahmen und Web Dynpro ABAP . . . . . . . . . 23510.1 Nachrichtenbehandlung . . . . . . . . . . . . . . . . . . . . . 236

10.1.1 Dynamische Texte – gespeichert im Textpoolder Assistance-Klasse . . . . . . . . . . . . . . . . . 236

10.1.2 Text aus der Datenbanktabelle T100 . . . . . . . . . . 23910.2 Ausnahmebehandlung . . . . . . . . . . . . . . . . . . . . . . 242

10.2.1 Ausnahmeklasse mit OTR Text . . . . . . . . . . . . 24310.2.2 Ausnahmeklasse mit Text aus der Nachrichtenklasse . 247

11 Erstellen mehrsprachiger Applikationen . . . . . . . . . . . . . . 25111.1 Erstellung von mehrsprachigen User Interfaces . . . . . . . . 253

11.1.1 Internationalisierung der in ABAP Dictionarydefinierten Datenelemente . . . . . . . . . . . . . . . 254

11.1.2 Internationalisierung von in ABAP Dictionarydefinierten Domänen . . . . . . . . . . . . . . . . . . 255

11.1.3 Internationalisierung von Text aus OTR . . . . . . . . 25511.1.4 Internationalisierung von Texten einer

Assistance-Klasse . . . . . . . . . . . . . . . . . . . 25811.1.5 Internationalisierung von Meldungen . . . . . . . . . 260

11.2 Mehrsprachige Datensätze in der Datenbank . . . . . . . . . . 26211.2.1 Unser Beispiel . . . . . . . . . . . . . . . . . . . . . 26211.2.2 Erstellung von Tabellen-Strukturen

und Internationalisierung von Datensätzen . . . . . . 26411.2.3 Verwendung von internationalisierten

Datensätzen in Web Dynpro . . . . . . . . . . . . . . 269

12 Web-Dynpro-Modell . . . . . . . . . . . . . . . . . . . . . . . . . 27312.1 Assistance-Klasse als Modell für eine

Multikomponenten-Applikation . . . . . . . . . . . . . . . . 27412.2 BAPI als Modell . . . . . . . . . . . . . . . . . . . . . . . . . 289

12.2.1 Erzeugen eines BAPI . . . . . . . . . . . . . . . . . 28912.2.2 Verwenden des erzeugten BAPI als Modell . . . . . . 294

12.3 Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . 29712.3.1 Erstellen des Web Service . . . . . . . . . . . . . . . 30012.3.2 Web-Service-Konfiguration . . . . . . . . . . . . . . 302

xiv Inhaltsverzeichnis

12.3.3 Testen des Web Service . . . . . . . . . . . . . . . . 30412.3.4 Inanspruchnahme des Web Service in Web Dynpro . . 305

13 ALV und Select Options . . . . . . . . . . . . . . . . . . . . . . . 31113.1 SAP List Viewer . . . . . . . . . . . . . . . . . . . . . . . . . 311

13.1.1 Einfaches ALV Beispiel . . . . . . . . . . . . . . . . 31113.1.2 ALV-Konfigurationsmodell . . . . . . . . . . . . . . 314

13.2 Select Options . . . . . . . . . . . . . . . . . . . . . . . . . . 32313.3 ALV und Select Options . . . . . . . . . . . . . . . . . . . . 330

14 Integration einer Web-Dynpro-ApplikationSAP-NetWeaver-Portal . . . . . . . . . . . . . . . . . . . . . . . . 33314.1 Anlegen eines Ordners . . . . . . . . . . . . . . . . . . . . . 33414.2 Verbindung zum Backend-ABAP-System . . . . . . . . . . . 33514.3 Anlegen einer iView . . . . . . . . . . . . . . . . . . . . . . . 33814.4 Anlegen einer Rolle und Rollenzuordnung . . . . . . . . . . . 34014.5 Ausführen der Applikation innerhalb des Portals . . . . . . . . 34214.6 Triggern eines Portalereignisses . . . . . . . . . . . . . . . . 34314.7 Reaktion auf ein Portalereignis . . . . . . . . . . . . . . . . . 34714.8 Anlegen einer Seite (Page) . . . . . . . . . . . . . . . . . . . 34814.9 Ausführen der Anwendung, die die Portalereignisse verarbeitet 350

15 Web Dynpro und Berechtigung . . . . . . . . . . . . . . . . . . . 35315.1 Rollenbasierte Zugriffskontrollmodell – RBAC . . . . . . . . 35515.2 Berechtigung Objektklasse . . . . . . . . . . . . . . . . . . . 35615.3 Berechtigungsobjekt . . . . . . . . . . . . . . . . . . . . . . 35715.4 Berechtigungsfeld . . . . . . . . . . . . . . . . . . . . . . . . 35715.5 Erzeugen einer Einzelrolle und ändern seiner Berechtigungdaten 36215.6 Anlegen der Web-Dynpro-Component . . . . . . . . . . . . . 363

15.6.1 Prüfen der Autorisierung des aktuellen Benutzers . . . 36615.6.2 Anbinden der Benutzer-Rolle und Ausführen

der Applikation . . . . . . . . . . . . . . . . . . . . 368

16 Web Dynpro ABAP Mind Map . . . . . . . . . . . . . . . . . . . . 37116.1 Erstellung einer Mind Map . . . . . . . . . . . . . . . . . . . 37116.2 Web Dynpro ABAP Mind Map . . . . . . . . . . . . . . . . . 372

Abkürzungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

Die Autoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

Sachverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379