
Das View-basierte Delta-Rendering dient der Performance-Verbesserung der Benutzerinteraktion komplexer Applikationen, wenn nur ein Teil (View) der angezeigten Seite aktualisiert werden muss. Es wird lediglich die View neu gerendert, die tatsächlich geändert wurde. Wenn mehrere Views geändert wurden, dann wird die View gerendert, die die geänderten Views enthält sowie die darunterliegenden geänderten Views, so dass nur ein Bereich auf der Seite ersetzt wird. Für die Programmierung bedeutet dies, dass Sie unnötige Context-Updates vermeiden sollten und ebenfalls keine unnötigen Änderungen an View-Elementen durchführen sollten.
Das Delta-Rendering bietet somit u.a. die folgenden Vorteile:
Schnelles Öffnen des Kontextmenüs
Schnelles Auslösen von Portal-Navigation und Öffnen eines separaten Fensters
Schnelleres Blättern und schnellere Benutzerinteraktion mit ALV-Tabellen
Beschleunigung von Aktionen, die nur Auswirkungen auf einen Teil des Screens haben
Standardmäßig laufen alle Web-Dynpro-Applikationen ab Enhancement Packagae 2 mit Delta-Rendering ab. Sie können das Delta-Rendering mittels Applikationsparameter wdDeltaRendering für eine individuelle Applikation folgendermaßen aktivieren bzw deaktivieren:
Setzen des Delta-Rendering über den Applikationsparameter WDDELTARENDERING
oder
Setzen des Delta-Rendering über den URL-Parameter sap-wd-DeltaRendering
Vorgehensweisen
Vorgehensweise für den URL-Parameter
Rufen Sie die URL der Anwendung auf, für die Sie das Delta-Rendering aktivieren möchten.
Aktivieren Sie das Delta-Rendering, indem Sie den URL-Parameter sap-wd-DeltaRendering mit dem Wert ON der URL hinzufügen.
Drücken Sie Enter.
Beachten Sie, dass der URL-Parameter sap-wd-DeltaRendering den Applikationsparameter WDDELTARENDERINGübersteuert.
Vorgehensweise für den Applikationsparameter
Rufen Sie im Web Dynpro Explorer die Eigenschaften Ihrer Web-Dynrpo-Anwendung durch Doppelklicken auf die Anwendung auf.
Wechsels Sie auf den Tabreiter Parameter.
Wählen Sie im Änderungsmodus über die F4-Hilfe bei Parameter den Eintrag WDDELTARENDERING aus.
Fügen Sie als dazu gehörigen Wert manuell ON ein.
Sichern Sie Ihre Eingaben.
Einsatz des Delta-Rendering
Generell empfehlen wir, das Delta-Rendering für komplexe Seiten, bei denen häufig nur ein Teil der Seite aktualisiert wird, zu verwenden.
Entscheidend für den Erfolg des Delta-Renderings sind:
der Zuschnitt der einzelnen Views
dass nur auf die zu aktualisierenden Objekte (Context, View-Elemente) schreibend zugegriffen wird
|
Beispiel |
Vorgehen |
|---|---|
|
Eine Seite enthält mehrere große Table s |
Fügen Sie jede Table in eine separate View ein |
|
Eine Seite enthält eine TimedTrigger, der nach Updates polled |
Fügen Sie den TimedTrigger in eine separate View ein. Hinweis
Die Verwendung eines TimedTrigger als Polling-Methode kann zu Performance-Problemen führen. |
|
Eine Seite enthält Elemente, die vom Delta-Rendering nicht unterstützt werden (siehe unten) |
Fügen Sie die nicht vom Delta-Rendering unterstützten Elemente in separate Views ein |
|
Eine Seite enthält einen Bereich, der aufgrund eines InputField onEnter- oder onChange-Events aktualisiert werden soll |
Fügen Sie die zu aktualisierenden Elemente und das auslösende InputField in eine separate View ein |
Funktionalität des Delta-Rendering
Das Delta-Rendering zielt darauf ab, nur den durch die Anwendung geänderten Bereich der dargestellten Seite zu aktualisieren. Die Granularität für diese Updates ist eine View. Es wird immer nur ein Bereich auf einmal aktualisiert, entsprechend wird immer die innerste aller geänderten Views umfassende View neu dargestellt. Im ungünstigsten Fall ist dies die oberste View der Anwendung.
Um zu ermitteln, welche Views aktualisiert werden müssen, werden Änderungsoperationen an der Web-Dynpro-Programmierschnittstelle registriert, die dazu führen können, dass sich die Visualisierung einer View ändert:
Navigation
Änderung am UI-Element-Baum
Änderung der Personalisierung
Änderungen am Context und ContextNodeInfos
Meldungen
Es wird dabei nicht geprüft, ob dies tatsächlich zu einer Wertänderung führt. Der bloße Aufruf einer ändernden Methode führt zum Aktualisieren der View.
Zusätzlich führt auch die Interaktion des Benutzers mit Bildschirmelementen zum Neuzeichnen der View.
Context-Mapping
Beachten Sie bei der Verwendung von Context-Mapping, dass eine Änderungsoperation an einem gemappten Context-Knoten und deren Unterknoten zum Aktualsieren jeder View führt, die auf diesen Knoten mappt. Dabei ist es unerheblich, ob die betreffenden Unterknoten oder Attribute in der Entwicklungsumgebung im Mapping übernommen wurden oder nicht.
Effekt des Delta-Rendering
Da das Delta-Rendering bereits vor dem eher "kostspieligen" Rendering-Vorgang aufsetzt, können in geeigneten Szenarien signifikante Performance-Verbesserungen sowohl im Server als auch im Web Browser erreicht werden.
Einschränkungen
Die folgenden UI-Elemente unterstützen (noch) nicht das Delta-Rendering:
TimedTrigger
Gantt
Network
InteractiveForm
OfficeControl
Daher wird eine View mit einem oder mehrerer dieser UI-Elemente mit dem Roundtrip aktualisiert.
Mögliche Nebenwirkungen
Verwendet eine Anwendung sehr viele fein-granulare Änderungsoperationen (z.B. SET_ATTRIBUTE-Aufrufe für jedes Feld eines Context-Knotens statt BIND_TABLE), so kann es durch das Delta-Rendering zu Performance-Einbußen kommen.
Fehler im Delta-Rendering können sich durch JavaScript-Fehler beim Aufruf von
document.getElementById(...) nach einem Server-Roundtrip ausdrücken oder durch Bildschirmbereiche, die nicht aktualisiert wurden. Beachten Sie in diesen Fällen Hinweis
1021981
.
Tipps und Tricks
Das Delta-Rendering invalidiert infolge einer ändernden Context- oder UI-Element-Operation die betroffene View. Dies geschieht unabhängig davon, ob eine tatsächliche Zustandsänderung herbeigeführt wurde oder nicht. Die Invalidierung führt zum erneuten Rendern der View.
In den folgenden zwei Szenarien wird eine Überprüfung auf eine tatsächliche Zustandsänderung eingeführt:
Prüfung auf Wertänderung bei CL_WD_UIELEMENT=>SET_ENABLED und SET_VISIBLE
Bei Aufruf der Methoden dieser Klasse oder von erbenden Klassen wird die View nur dann invalidiert, wenn der Wert von ENABLED bzw. VISIBLE sich auch wirklich ändert.
Prüfung auf Wertänderung bei IF_WD_CONTEXT_NODE=>SET_ATTRIBUTE und IF_WD_CONTEXT_ELEMENT=>SET_ATTRIBUTE
Bei Aufruf der Methoden wird die View nur dann invalidiert, wenn der Wert sich auch wirklich ändert und folgende Kriterien eingehalten werden:
Es wird ein Wert im Attribut VALUE mitgegeben
Es wird ein statisches Attribut gesetzt
Der ABAP-Typ von VALUE und des Attributs sind identisch oder beide Typen sind C oder STRING.
Informationen über das Delta-Rendering in Verbindung mit dem Trace-Tool finden Sie unter Tuning und Fehlersuche.