Andreas Schneider-Neureither, Bernd Noll, Andreas Schlindwein, André Schüngel, Dominik Wittenbeck Java für ABAP-Entwickler Inhalt Vorwort 15 1 Einführung 17 2 Technologie-Überblick 23 2.1 Enterprise Services Architecture.................................................................... 24 2.2 SAP NetWeaver ................................................................................................ 25 2.2.1 People Integration ............................................................................. 26 2.2.2 Information Integration .................................................................... 26 2.2.3 Process Integration............................................................................ 27 2.2.4 Application Integration ..................................................................... 27 2.2.5 Life Cycle Management .................................................................... 27 2.2.6 Composite Application Framework ................................................ 27 2.3 Die Systemarchitektur des SAP Web Application Servers........................ 28 2.3.1 Präsentationsschicht.......................................................................... 29 2.3.2 Anwendungsschicht .......................................................................... 30 2.3.3 Datenbankschicht .............................................................................. 31 2.4 Die wesentlichen Komponenten des SAP Web Application Servers ...... 31 2.4.1 Der Internet Communication Manager (ICM) ............................... 31 2.4.2 Die ABAP-Laufzeitumgebung........................................................... 33 2.4.3 Die J2EE Engine ................................................................................. 33 2.4.4 Die Integration Engine ...................................................................... 35 Die Konnektoren ............................................................................... 35 ALE und EDI....................................................................................... 36 RFC ...................................................................................................... 36 Webservices und SOAP .................................................................... 37 2.5 Datenbankanbindung...................................................................................... 37 2.5.1 Datenbankunabhängigkeit ............................................................... 38 2.5.2 Mandanten-Fähigkeit........................................................................ 38 2.5.3 Caching- und Trace-Mechanismen ................................................. 38 2.5.4 Transaktionsfähigkeit......................................................................... 39 2.5.5 Objektrelationales Mapping............................................................. 39 2.5.6 Native SQL ......................................................................................... 40 2.6 Webservices ...................................................................................................... 40 2.6.1 Was sind Webservices?..................................................................... 40 2.6.2 Das Webservice-Paradigma.............................................................. 41 2.6.3 Der SAP Web Application Server als Webservice-Client ............. 42 2.6.4 Der SAP Web Application Server als Webservice-Provider ......... 43 2.6.5 Ausblick .............................................................................................. 43 Inhalt 5 2.7 Frontends........................................................................................................... 44 2.7.1 SAP GUI für Windows....................................................................... 44 2.7.2 SAP GUI für Java ................................................................................ 45 2.7.3 SAP GUI für HTML ............................................................................ 47 2.7.4 Reine Browseroberfläche (BSP, JSP)................................................ 49 2.7.5 Web Dynpro....................................................................................... 51 2.8 Berechtigungswesen ........................................................................................ 53 2.8.1 Berechtigungen in der ABAP Personality........................................ 53 2.8.2 Berechtigungen in der Java Personality .......................................... 55 2.8.3 Sicherheit von J2EE-Anwendungen ................................................ 59 2.9 Versionierung und Transportwesen .............................................................. 62 2.9.1 Versionierung ..................................................................................... 62 2.9.2 Transportwesen.................................................................................. 63 Maßnahmen bei der Entwicklung.................................................... 64 Transport durch die Systeme............................................................ 64 2.9.3 Versionierung und Transportvorgang unter Java ........................... 65 2.10 Verfügbarkeit, Performance, Skalierbarkeit................................................. 66 2.11 Integrationsmöglichkeiten von ABAP und J2EE ......................................... 67 2.11.1 J2EE ruft ABAP ................................................................................... 68 RFC-Call mit JCo ................................................................................ 68 Webservice mit ABAP-Nutzung aus J2EE....................................... 68 2.11.2 ABAP ruft J2EE ................................................................................... 68 RFC-Server mit JCo ........................................................................... 69 EJB-Proxy-Klasse – Zugriff aus ABAP............................................... 69 Webservice mit Java-Nutzung aus ABAP........................................ 69 3 Das Beispielprojekt »ResMan« 71 3.1 Die Anforderungen........................................................................................... 71 3.1.1 Betriebswirtschaftlicher Nutzen....................................................... 72 3.1.2 Funktionale Anforderungen ............................................................. 72 3.1.3 Technische Anforderungen............................................................... 73 3.2 Das Datenmodell.............................................................................................. 73 3.3 Die technische Umsetzung der Anforderungen .......................................... 77 4 Die Programmiersprachen des SAP Web Application Servers 79 4.1 ABAP und ABAP Objects................................................................................. 79 4.1.1 Typische Aufgabenstellungen........................................................... 79 4.1.2 Grundlegende Konzepte und Begriffe ............................................ 80 Ausführbare Programme................................................................... 80 Modul-Pools....................................................................................... 80 Subroutinen-Pools ............................................................................. 81 Funktionsgruppen.............................................................................. 81 6 Inhalt Interface-Pools ................................................................................... 81 Class-Pools ......................................................................................... 81 Include-Programme........................................................................... 82 4.1.3 Variablen und Datentypen ............................................................... 82 Nicht veränderbare Datenobjekte................................................... 82 Veränderbare Datenobjekte............................................................. 83 Datentypen ........................................................................................ 84 Feldsymbole ....................................................................................... 86 4.1.4 Die wichtigsten Befehle und Sprachkonstrukte............................. 87 Kontrollstrukturen ............................................................................. 87 Schleifen ............................................................................................. 88 Open-SQL-Anweisungen.................................................................. 89 Objektorientierte Programmierung................................................. 92 4.2 Java ..................................................................................................................... 100 4.2.1 Grundlegende Begriffe und Konzepte ............................................ 100 Die Java Virtual Machine (JVM)....................................................... 100 Die Java-Plattform ............................................................................. 101 Die Programmiersprache .................................................................. 101 4.2.2 Objektorientierte Programmierung................................................. 102 4.2.3 Ein erstes Beispielprogramm in Java ............................................... 104 4.2.4 Kommentare ...................................................................................... 105 4.2.5 Bezeichner und Schlüsselwörter ...................................................... 106 4.2.6 Datentypen, Variablen und Konstanten ......................................... 107 Primitive Datentypen ........................................................................ 107 Variablen............................................................................................. 109 Konstanten ......................................................................................... 109 Typkonvertierungen .......................................................................... 110 Arrays .................................................................................................. 110 4.2.7 Operatoren......................................................................................... 112 Arithmetische Operatoren................................................................ 112 Bitweise Operatoren ......................................................................... 113 Relationale Operatoren (Vergleichsoperatoren)............................ 114 Boolesche Operatoren ...................................................................... 115 Zuweisungsoperatoren ..................................................................... 115 Andere Operatoren ........................................................................... 116 Prioritäten........................................................................................... 117 4.2.8 Kontrollstrukturen ............................................................................. 118 {...} ....................................................................................................... 118 If........................................................................................................... 118 Switch ................................................................................................. 119 While................................................................................................... 120 Do........................................................................................................ 120 For ....................................................................................................... 121 Break ................................................................................................... 122 Continue ............................................................................................. 122 Return ................................................................................................. 122 Synchronized...................................................................................... 123 4.2.9 Ausnahmebehandlung ...................................................................... 124 Throw .................................................................................................. 124 Try ... Catch ... Finally ....................................................................... 125 4.2.10 Methoden........................................................................................... 126 Inhalt 7 4.2.11 Klassen und Objekte ......................................................................... 127 Definition einer Klasse ...................................................................... 128 Erzeugung eines Objekts .................................................................. 130 Ansprechen der Methoden und Attribute...................................... 130 Klassen- und Instanzmembers ......................................................... 131 Die main()-Methode ......................................................................... 132 Kopieren und Vergleichen von Objekten und Arrays ................... 133 Garbage Collection und Finalisierung von Objekten .................... 135 4.2.12 Packages.............................................................................................. 135 4.2.13 Vererbung ........................................................................................... 137 Verdecken von Attributen ................................................................ 138 Überschreiben von Methoden......................................................... 138 4.2.14 Verhindern von Überschreibung und Vererbung .......................... 140 4.2.15 Kapselung ........................................................................................... 140 4.2.16 Abstrakte Klassen und Methoden ................................................... 141 4.2.17 Interfaces ............................................................................................ 142 4.2.18 Zusammenfassung der wichtigsten Modifikatoren........................ 143 4.2.19 Programmierkonventionen............................................................... 144 Namenskonventionen ....................................................................... 144 Dokumentationskonventionen ........................................................ 146 5 Entwicklungswerkzeuge und -objekte 151 5.1 ABAP................................................................................................................... 151 5.1.1 Die ABAP-Entwicklungsumgebung ................................................. 152 5.1.2 ABAP Dictionary und Data Modeler ............................................... 155 ABAP Dictionary ................................................................................ 155 Datentypen......................................................................................... 156 Datenbanktabellen ............................................................................ 156 Views ................................................................................................... 157 Domäne .............................................................................................. 157 Suchhilfe ............................................................................................. 158 Sperrobjekt ......................................................................................... 158 5.1.3 Entwicklungsobjekte ......................................................................... 158 Paket.................................................................................................... 158 Reports und Programme................................................................... 158 Funktionsgruppen und Funktionsbausteine................................... 161 Klasse/Interface.................................................................................. 163 Internet Service .................................................................................. 164 BSP-Applikationen ............................................................................. 165 BSP-Extensions................................................................................... 171 MIME Repository............................................................................... 172 Inaktive und aktive Objekte ............................................................. 172 Lokale Objekte ................................................................................... 173 5.1.4 Transportwesen und Versionierung................................................. 173 5.1.5 Testen.................................................................................................. 182 5.2 J2EE..................................................................................................................... 184 5.2.1 Architektur.......................................................................................... 185 Clients ................................................................................................. 185 Komponenten .................................................................................... 187 8 Inhalt Container............................................................................................ 189 Packaging ............................................................................................ 191 J2EE-Spezifikationen und APIs ........................................................ 193 Servlet-Spezifikation.......................................................................... 203 Java-Server-Pages-Spezifikation....................................................... 205 Java-Namens- und Verzeichnisdienst ............................................. 211 Java-Nachrichten-Service ................................................................. 212 J2EE Connector Architecture ........................................................... 216 Java XML API ..................................................................................... 218 Java XML-RPC API............................................................................. 218 SOAP with Attachments API for Java (SAAJ) ................................. 219 Java API für XML-Registrierungsdienste (JAXR)............................. 219 JDBC API............................................................................................. 219 Java Transaction API.......................................................................... 222 Java Authentication and Authorization Services (JAAS) ............... 224 Java Mail API ...................................................................................... 228 Zusammenfassung ............................................................................. 228 5.2.2 Entwicklungsumgebung.................................................................... 229 5.2.3 Entwicklungsobjekte ......................................................................... 240 Perspektiven....................................................................................... 241 5.2.4 Java Dictionary................................................................................... 247 5.2.5 Deploy-Prozess .................................................................................. 259 5.2.6 Werkzeuge zur Kollaboration .......................................................... 263 5.2.7 Versionierung ..................................................................................... 266 5.2.8 Testen.................................................................................................. 275 6 Anwendungsschichten 283 6.1 Beschaffungslogik und Persistenz ................................................................. 283 6.1.1 ABAP ................................................................................................... 283 Open SQL ........................................................................................... 283 Logische Datenbanken...................................................................... 285 Persistente Objekte ........................................................................... 286 6.1.2 Java...................................................................................................... 288 Open SQL for Java............................................................................. 290 JDBC.................................................................................................... 290 SQLJ .................................................................................................... 299 Kombination von SQLJ und JDBC................................................... 306 Objektrelationale Persistenz............................................................. 310 Container Managed Persistence (CMP) .......................................... 311 Bean Managed Persistence (BMP)................................................... 317 Java Data Objects (JDO)................................................................... 318 6.2 Middleware: Konnektivität zwischen Applikationen................................. 329 6.2.1 RFC ...................................................................................................... 330 6.2.2 JCo....................................................................................................... 330 6.2.3 EJB-Proxy-Klasse................................................................................ 345 6.2.4 Weitere Schnittstellen....................................................................... 348 6.2.5 Webservices ....................................................................................... 349 ABAP-Webservices ............................................................................ 349 Java-Webservices............................................................................... 366 Inhalt 9 6.3 Businesslogik .................................................................................................... 382 6.3.1 ABAP ................................................................................................... 382 BAPIs ................................................................................................... 383 Business-Objekte ............................................................................... 384 6.3.2 Java ...................................................................................................... 385 Session Beans ..................................................................................... 385 Message Driven Beans ...................................................................... 393 6.4 Präsentationslogik............................................................................................ 400 6.4.1 ABAP ................................................................................................... 401 Dynpro & Custom Controls.............................................................. 401 Selektionsbilder & Listen .................................................................. 402 BSP....................................................................................................... 403 Web Dynpro....................................................................................... 409 6.4.2 Java ...................................................................................................... 409 JSP........................................................................................................ 410 Web Dynpro....................................................................................... 431 7 Application Design 467 7.1 Typische Problemstellung ............................................................................... 467 7.2 Entwurfsmuster ................................................................................................ 468 7.2.1 MVC .................................................................................................... 469 Sicherheitsaspekte ............................................................................. 469 Validierung.......................................................................................... 470 Hierarchisierung und Verteilung ...................................................... 471 Visualisierung von Daten .................................................................. 472 7.2.2 Fassade................................................................................................ 475 7.2.3 Adapter ............................................................................................... 477 7.2.4 Treiberarchitektur .............................................................................. 478 7.2.5 Späte Initialisierung ........................................................................... 481 7.3 Entwicklung einer ABAP-Webanwendung .................................................. 483 7.4 Entwicklung einer J2EE-Webanwendung .................................................... 486 8 Performanceaspekte 489 8.1 Performance unter ABAP................................................................................. 489 8.1.1 Regeln zur Performancesteigerung.................................................. 490 8.1.2 Werkzeuge zur Performanceanalyse ............................................... 491 8.2 Performance unter Java ................................................................................... 494 8.2.1 Regeln zur Performancesteigerung.................................................. 496 8.2.2 Werkzeuge zur Performanceanalyse ............................................... 499 10 Inhalt 9 Ausblick 503 A Glossar 507 B Quellen und Literaturhinweise 533 C Die Autoren 535 Index 539 Inhalt 11 Tutorials Neues Java-Dictionary-Projekt anlegen ............................................................ 251 Datentypen anlegen ......................................................................................... 253 Datenbanktabellen definieren .......................................................................... 256 Deployment der Datenstrukturen .................................................................... 259 Anlegen der Daten im SQL Studio .................................................................... 261 Persistente Klasse ............................................................................................. 287 SQLJ-Entwicklung ............................................................................................ 304 Container-verwaltete Entity Bean erzeugen ..................................................... 314 JDO-Entwicklungszyklus .................................................................................. 319 Implementierung eines JCo-Clients .................................................................. 333 JCo-Client, Variante mit Connection Pool ........................................................ 337 Implementierung eines JCo-Servers ................................................................. 339 Erstellen und Verwenden eines EJB-Proxy-Klasse ............................................ 346 Webservice-Generierung aus einem Funktionsbaustein ................................... 354 Webservice-Generierung aus einer Java-Anwendung ....................................... 371 Businesslogik implementieren .......................................................................... 389 Ausgabe einer Tabelle im Webbrowser ............................................................ 405 JSP-Einstieg mit dem SAP NetWeaver Developer Studio ................................. 412 Web-Dynpro-Entwicklung ................................................................................ 450 Tutorials 13 Vorwort Die SAP AG hat vor einigen Jahren die parallele Applikationsentwicklung in Java neben ABAP angekündigt. Dieser Paradigmenwechsel für die SAP- Entwicklung wurde mit der Version 6.20 des SAP Web Application Ser- vers erfolgreich eingeleitet, und besonders mit der aktuellen Version 6.40 des SAP Web Application Servers kann man sich auf beide Entwicklungs- schienen gleichermaßen verlassen. Als SAP-Entwickler verfügt man nun über eine Plattform, die ein unvergleichlich reichhaltiges Arsenal an modernen und bewährten Technologien bietet, um professionelle, stabile und leistungsfähige Anwendungen zu entwickeln. Bis dato findet diese zweigleisige Entwicklung insbesondere in Kunden- projekten noch wenig Anwendung, was häufig auf ein Informationsdefizit seitens der ABAP-Entwickler zurückzuführen ist, die noch wenig über Sprache und Konzepte von Java und J2EE, sowie deren konkrete Umset- zung und Integration in den SAP Web Application Server wissen. Diesen Informationsbedarf zu stillen, ist das wesentliche Anliegen dieses Buches. Dabei zeigen wir nicht nur die Vielzahl von Möglichkeiten, die die neuen Technologien des SAP Web Application Servers bieten, detail- liert und praxisnah auf, sondern wir erheben den Anspruch, dem gestan- denen ABAP-Entwickler einen definierten und effizienten Migrationspfad in die neue Welt der SAP-Entwicklung zu liefern. Das Buch wendet sich daher vorwiegend an erfahrene ABAP-Entwickler, aber auch an IT-Verantwortliche, die sich über das große Potenzial der neuen SAP-Technologie informieren möchten, um diese Gewinn brin- gend in die eigene IT-Strategie zu integrieren. Die Autoren gehen dabei durchaus nicht unkritisch mit der Materie um. Als erfahrene Entwickler, die diese Technologien täglich als Berater beim Kunden praktisch anwenden, durchleuchten wir die vorgestellten Kon- zepte und Technologien immer kritisch auf ihre Praxistauglichkeit hin. Ein Buch neben der täglichen Beratungsarbeit fertigzustellen, bedarf eines immensen Kraftaufwandes seitens der Autoren, der aber ohne die Unterstützung einer ganzen Reihe von Kollegen, aber auch unserer Fami- lien, nicht möglich gewesen wäre. Diesen gebührt besonderer Dank. Besonders hervorheben möchten wir Ulrich Klingels aus dem Product Management SAP NetWeaver, der unser Buch mit wertvollen Anmerkun- gen komplettiert hat. Florian Zimniak von Galileo Press, der uns auch Vorwort 15
Description: