# Web Dynpro

Web Dynpro (WD) ist eine Technologie, die von SAP im Rahmen der NetWeaver-Strategie eingeführt wurde. Sie dient dem Erstellen von webgestützten Anwendungen, die mit einem SAP ERP und anderen Systemen zusammenarbeiten.

## Allgemein

Es gibt eine Java- und eine ABAP-Version von Web Dynpro. Während die Java-Version bereits seit der NetWeaver-Einführung verfügbar ist, ist die ABAP-Variante erst seit Anfang 2006 verfügbar. Von SAP selbst wird bei Neuentwicklungen aktuell nur noch die ABAP-Version von Web Dynpro verwendet. Unter SAP-Experten ist eine Diskussion im Gange, wann SAP die Java-Variante auslaufen lassen wird.
In den aktuellen Releases (z. B. ab NetWeaver 750, Softwareschicht SAP_UI) orientiert sich die Darstellung der Benutzeroberfläche an den HTML5-Webstandards. Ab Netweaver 754 (Softwareschicht SAP_UI, ABAP Platform 1909) ist eine berührungsfähige Benutzeroberfläche verfügbar. Die aktuellen Versionen folgen üblicherweise den SAP Fiori-Designprinzipien.

## Programmierung

Die Web-Dynpro-Programmierung basiert auf dem MVC-Entwurfsmuster.
* Views beinhalten das Layout und die Darstellung der Daten. Eine View wird ausschließlich aus vorgefertigten Elementen zusammengefügt, so dass keine Kenntnisse zu HTML erforderlich sind. Jede View hat ihren eigenen View-Controller.
* Component-Controller verbinden Models mit View-Controllern und steuern den Ablauf der Applikation.
* Models dienen der Datenbeschaffung z. B. aus SAP-R/3-Systemen via adaptive RFC-Model oder zum Beispiel per Webservices. Models beinhalten einen Model-Kontext, der die Daten des jeweilig letzten Model-Aufrufs enthält.
* Kontexte sind jedem Controller zugeordnete Datenspeicher. Der Kontext eines View-Controllers speichert die Daten, solange die View aktiv ist (vergleichbar dem Request einer Jakarta-EE-Anwendung), der Component-Controller speichert die Daten View-übergreifend, solange die Applikation läuft (vergleichbar der Session).
* Mapping verbindet die Daten der Kontexte und veranlasst einen automatischen Datenabgleich zur Laufzeit.
Im Zusammenspiel werden nun verschiedene Views auf einem Window angeordnet und die Startview wird markiert. Diese wird zur Laufzeit zuerst angezeigt. Durch Interaktion des Benutzers über Bedienelemente werden Events ausgelöst, die Methoden in den Controllern ansprechen. In diesen Methoden programmiert der Entwickler nun z. B. Model-Aufrufe, um Daten aus den Back-End-Systemen zu beschaffen. Über das Mapping der Kontexte werden diese innerhalb der Web-Dynpro-Applikation transportiert, so dass sie in einer View wieder angezeigt werden können.
Die ABAP-Version von Web Dynpro fügt sich nahtloser in das bestehende SAP-System ein als die Java-Version, die außerhalb des SAP-Systems im NetWeaver Developer Studio (basierend auf Eclipse-Workbench) erstellt wird. Unterschiede bestehen auch hinsichtlich der vorhandenen UI-Elemente: Der aus der klassischen ABAP-Entwicklung bekannte ALV-Grid (ALV=ABAP List Viewer) ist in der Java Version (noch) nicht verfügbar. Auch fehlen die in WD-ABAP implementierten Wizards, mit denen oft benutzte Codingstrecken erzeugt werden können. Dafür gestaltet sich die Java-Version flexibler, was die Gestaltung von Oberflächen-Themes betrifft.