Show TOC Anfang des Inhaltsbereichs

Was ist ein Context?  Dokument im Navigationsbaum lokalisieren

 

Achtung Contexte sind obsolet und sollten nicht verwendet werden. Contexte wurden zu Release 4.0 für performante Zugriffe auf häufig benötigte abgeleitete Daten eingeführt. Seit der Einführung von ABAP Objects zu Release 4.5 werden Contexte nicht weiterentwickelt. Seit Release 6.40 können Contexte durch Shared Objects ersetzt werden.

 

In der Gesamtmenge der Daten, die in der Datenbank des SAP-Systems abgespeichert sind, gibt es immer relativ kleine Mengen von Grunddaten, aus denen Sie weitere Informationen gewinnen können. Im relationalen Datenbankmodell sind dies z.B. die Schlüsselfelder der Datenbanktabellen.

In der Anwendungsprogrammierung werden oft aus solchen wenigen Grunddaten, die z.B. vom Benutzer beim Benutzerdialog eingegeben werden, die weiteren Informationen für den Fortgang des Programms bestimmt. Zu diesem Zweck werden entweder die relationalen Beziehungen der Daten in der Datenbank verwendet, um basierend auf den Grunddaten weitere Daten zu lesen, oder es werden aus den Grunddaten abgeleitete Werte durch ABAP-Anweisungen berechnet.

Dabei kommt es häufig vor, dass in einem Programm oder sogar über mehrere Programme hinweg bestimmte Beziehungen zwischen Daten immer in der gleichen Form zur Datenbeschaffung verwendet werden. Somit werden die gleichen Datenbankzugriffe oder Berechnungen immer wieder neu ausgeführt, obwohl das Ergebnis im System schon einmal vorhanden war. Dies führt zu einer unnötigen Systembelastung, die durch den Einsatz von Contexten vermindert werden kann.

Contexte sind Objekte der Entwicklungsumgebung, die aus einzugebenden Schlüsselfeldern, aus Beziehungen zwischen diesen Feldern und daraus ableitbaren weiteren Feldern bestehen. Contexte können die abgeleiteten Felder über Fremdschlüsselbeziehungen zwischen Tabellen, über Funktionsbausteine oder aus anderen Contexten beziehen.

 

Contexte werden in der ABAP Development Workbench (Transaktion SE33) abstrakt definiert und in ABAP-Programmen als Laufzeitobjekte (Instanzen) verwendet. Contexte werden im Werkzeug Context Builder der ABAP Workbench definiert. Sie bestehen aus einzugebenden Schlüsselfeldern, aus Beziehungen zwischen diesen Feldern und daraus ableitbaren weiteren Feldern. Contexte können die abgeleiteten Felder über Fremdschlüsselbeziehungen zwischen Tabellen, über Funktionsbausteine oder aus anderen Contexten beziehen.

 

Diese Grafik wird im zugehörigen Text erklärt

 

In der Development Workbench besteht ein Context aus Feldern und Modulen. Die Felder eines Contexts sind aufgeteilt in Schlüsselfelder und abgeleitete Felder. Die Module beschreiben die Beziehungen zwischen den Feldern.

Technisch gesehen sind Contexte spezielle ABAP-Programme (Context-Programme). Dabei sind zu unterscheiden die Speicherung des Contexts in

·        einem nichtausführbaren Programm, dessen Name sich aus dem Präfix CONTEXT_S_ und dem Context-Namen zusammensetzt (für den Beispiel-Context DEMO_TRAVEL also CONTEXT_S_DEMO_TRAVEL).

·        einem aufrufbarem generierten Programm, dessen Name sich aus dem Präfix CONTEXT_X_ und dem Context-Namen zusammensetzt (für den Beispiel-Context DEMO_TRAVEL also CONTEXT_X_DEMO_TRAVEL).

In einem Anwendungs-Programm arbeiten Sie mit den Instanzen eines Contexts. Es können mehrere Instanzen zu einem Context verwendet werden. Das Anwendungs-Programm versorgt die Instanzen von Contexten mit Eingabewerten für die Schlüsselfelder (Anweisung SUPPLY) und kann die abhängigen Felder aus den Instanzen von Contexten abfragen (Anweisung DEMAND).

Zu jedem Context gehört ein transaktionsübergreifender Puffer auf dem Anwendungsserver. Bei der Abfrage einer Instanz nach Werten sucht das Context-Programm zuerst im zugehörigen Puffer nach einem Datensatz mit den entsprechenden Schlüsselfeldern. Falls vorhanden, wird die Instanz mit diesen Daten versorgt, ansonsten leitet das Context-Programm die abhängigen Daten aus den eingegebenen Schlüsselfeldern ab und schreibt den Datensatz in den Puffer.

Wenn in einem Programm neue Schlüsselfelder in eine bereits versorgte Instanz eingegeben werden, so invalidiert das System alle bereits abgeleiteten betroffenen Werte. Diese Werte werden erst bei der nächsten Abfrage neu versorgt.

Ende des Inhaltsbereichs