Show TOC

Context-Change-Log (Aufzeichung von Benutzereingaben)Locate this document in the navigation structure

Verwendung

In vielen Anwendungen ist es wichtig, Benutzereingaben als solche zu kennzeichnen. Wenn etwa auf einer View viele gebundene UI-Elemente angeordnet sind, sich jedoch nur ein einziger Wert durch eine Benutzereingabe ändert, kann es unnötig zu Lasten der Performance gehen, wenn alle Context-Inhalte erneut durch die Business-Logik bearbeitet werden. Sinnvoller ist es, die Veränderungen, die der Benutzer innerhalb der View vorgenommen hat, zu kennzeichnen und separat zu bearbeiten. Zu den Veränderungen, die ein Benutzer vornehmen kann, gehört neben dem Ändern des Wertes eines Attributs auch das Umsetzen der Selektion oder der Lead-Selection.

Zunächst bietet jeder einzelne Context-Knoten die Möglichkeit, die relevanten Informationen für sich zu speichern. Um jedoch nicht alle vorhandenen Context-Knoten eines Controllers prüfen zu müssen bietet das Web-Dynpro-Framework die Context-Change-Log-Funktionalität an: Innerhalb eines Controllers werden alle Informationen zu vom Benutzer gesteuerten Änderungen an Context-Elementen in nur einer internen Tabelle gespeichert. Die Web-Dynpro-Laufzeit hat auf diese Tabelle Zugriff und kann den Ablauf der Business-Logik den Tabelleneinträgen anpassen.

Hinweis

Die Tabelle erfasst ausschließlich Änderungen, die vom Benutzer vorgenommen wurden - Änderungen an Context-Elementen, die auf programmatischem Wege (z.B. durch dynamische Programmierung) zu Stande gekommen sind, werden nicht aufgelistet.

Achtung

Beachten Sie, dass die Context-Änderungen nur am Originalknoten aufgezeichnet werden, also nicht an gemappten Knoten.

Die Funktionalität des Context-Change-Logs ist in der Voreinstellung eines Controllers ausgeschaltet. Bei Bedarf muss es aktiviert werden. Die geschieht über das Interface IF_WD_CONTEXT des jeweiligen Controllers.

Schnittstelle IF_WD_CONTEXT

Die Schnittstelle IF_WD_CONTEXT stellt eine Referenz auf den Context eines Controllers zur Verfügung.

Achtung

Im Gegensatz zur Schnittstelle IF_WD_CONTEXT_NODE bezieht sich IF_WD_CONTEXT nicht nur auf den Wurzelknoten des Contexts, sondern auf den Context als Ganzes.

Sie erhalten eine Referenz auf IF_WD_CONTEXTüber den Aufruf:

          
MY_CONTEXT = WD_CONTEXT->GET_CONTEXT( )
            

Folgende Methoden stehen mit dem Interface IF_WD_CONTEXT zur Nutzung der Change-Log-Funktion zur Verfügung:

Methode

Beschreibung

ENABLE_CONTEXT_CHANGE_LOG( )

Schaltet die Aufzeichnung der Benutzereinaben für diesen Controller ein

DISABLE_CONTEXT_CHANGE_LOG( )

Schaltet die Aufzeichnung wieder ab

GET_CONTEXT_CHANGE_LOG( and_reset )

Liefert den aktuellen Inhalt der Change-Log-Tabelle und setzt diese automatisch zurück (letztere Eigenschaft ist voreingestellt, kann jedoch auch abgeschaltet werden).

RESET_CONTEXT_CHANGE_LOG( )

Setzt die Change-Log-Tabelle zurück

ADD_CONTEXT_ATTRIBUTE_CHANGE( )

Über diese Methode können Änderungen an einem Context-Attribut in die Change-Log-Tabelle hinein programmiert werden. Dies ist insbesondere wichtig bei der Programmierung von Wertehilfen, da die aus einer Hilfe ausgewählten Daten nicht automatisch in die Change-Log-Tabelle eingetragen werden.

Tabelle der benutzerdefinierten Context-Änderungen

Die Tabelle, in der die benutzerdefinierten Änderungen am Context aufgelistet werden, ist vom Typ WDR_CONTEXT_CHANGE_LIST. Sie enthält neun Spalten mit folgenden Bedeutungen:

Spalte

Beschreibung

NODE_NAME

Name des Knotens, der die Änderung enthält

SEQUENCE

Laufende Nummer des Eintrags

NODE

Referenz auf den Knoten

NODE_PATH

Knotenpfad

CHANGE_KIND

Kategorisiert die Art der Änderung. Für die Werte stehen die Konstanten IF_WD_CONTEXT=>CHANGED_* zur Verfügung.

ELEMENT_INDEX

Index des Context-Elements

ATTRIBUTE_NAME

Name des Attributs, das geändert wurde

OLD_VALUE

Referenz auf den bisherigen Wert

NEW_VALUE

Referenz auf den neuen Wert

Für die Werte der Spalten OLD_VALUE und NEW_VALUE wird zunächst eine Kopie des alten bzw. neuen Attribut-Wertes angelegt. Eine Referenz auf diese Kopie wird dann in der Tabelle gespeichert.

Hinweis

Änderungen der Lead-Selection werden auch als Änderungen der Selektion aufgezeichnet.

Bei OVS-Wertehilfen oder frei programmierten Wertehilfen wird der neue Wert nicht automatisch in die Tabelle eingetragen, sondern muss mit Hilfe der Methode ADD_CONTEXT_ATTRIBUTE_CHANGE des Interfaces IF_WD_CONTEXT aktiv eingetragen werden, sofern ein Eintrag gewünscht wird.

Beispiel

Sie finden die Beispielanwendung DEMO_CONTEXT_CHANGES in Ihrem System im Paket SWDP_DEMO.

Weitere Informationen

Weitere Informationen zum Interface IF_WD_CONTEXT finden Sie im System in der zugehörigen Systemdokumentation.