Show TOC Anfang des Inhaltsbereichs

Daten von Context-Instanzen abfragen  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.

 

Nach dem Versorgen einer Context-Instanz mit Schlüsselwerten, können Sie die davon abhängigen Werte der Context-Instanz abfragen. Hierfür verwenden Sie die Anweisung DEMAND:

Syntax

DEMAND val1 = f1 ... valn = fn FROM CONTEXT inst
                             [MESSAGES INTO itab].

Diese Anweisung füllt die Felder f1fn mit den abgeleiteten Werten val1valn der Context-Instanz inst. Die Felder des Contexts finden Sie in der Tabelle Felder.

Dabei führt das System folgende Schritte aus:

...

       1.      Das System prüft, ob die Context-Instanz schon gültige abgeleitete Werte enthält. Dies ist der Fall, falls diese schon durch eine vorherige DEMAND-Anweisung berechnet wurden und die Instanz zwischenzeitlich nicht über die SUPPLY-Anweisung mit neuen Schlüsselfeldern versorgt wurde. Falls die Instanz gültige Werte enthält, werden diese den Feldern f1fn zugewiesen.

       2.      Falls die Context-Instanz keine gültigen abgeleiteten Werte enthält, werden diese neu erstellt. Hierfür sucht das System erst im Context-Puffer (siehe Contexte puffern) nach Datensätzen mit den derzeitigen Schlüsselfeldern der Context-Instanz. Falls im Context-Puffer entsprechende Werte gefunden werden, überträgt das System diese als gültige Werte in die Context-Instanz und weist sie den Feldern f1fn zu.

       3.      Falls auch der Context-Puffer keine passenden Werte enthält, führt das System die Ableitung gemäß der in der Context-Definition definierten Schemata aus. Auch bei der Ableitung werden Zwischenresultate im Context-Puffer gesucht und gegebenenfalls verwendet. Nach der Neuberechnung speichert das System alle Resultate im Context-Puffer, überträgt die Werte in die Context-Instanz und weist sie den Feldern f1fn zu.

       4.      Falls das System während der Ableitung abhängige Werte nicht bestimmen kann, bricht es die Verarbeitung ab, setzt die Felder f1fn auf ihren Inititialwert und gibt die Benutzernachricht aus, die in der Tabelle Module gepflegt ist. Mit der Option MESSAGESkönnen die Nachrichten programmgesteuert behandeln (siehe Nachrichtenbehandlung in Contexten).

Beispiel

REPORT rsgcon01.

DATA: c_from TYPE spfli-cityfrom,
      c_to   TYPE spfli-cityto,
      c_time TYPE spfli-fltime.

CONTEXTS demo_travel.

DATA: demo_travel_inst1 TYPE context_demo_travel,
      demo_travel_inst2 TYPE context_demo_travel.

SUPPLY carrid = 'LH'
       connid = '400'
       TO CONTEXT demo_travel_inst1.

SUPPLY carrid = 'AA'
       connid = '017'
       TO CONTEXT demo_travel_inst2.

DEMAND cityfrom = c_from
       cityto   = c_to
       fltime   = c_time
       FROM CONTEXT demo_travel_inst1.

WRITE: / c_from, c_to, c_time.

DEMAND cityfrom = c_from
       cityto   = c_to
       fltime   = c_time
       FROM CONTEXT demo_travel_inst2.

WRITE: / c_from, c_to, c_time.

Dieser Programmabschnitt erzeugt zwei Instanzen des Contexts demo_travel, versorgt beide mit Schlüsselwerten und liest jeweils drei abhängige Werte aus.

 

 

Ende des Inhaltsbereichs