Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Komponenten des Query-Diensts  Dokument im Navigationsbaum lokalisieren

Eine Query wird durch ein Query-Objekt repräsentiert, das durch einen Query-Manager (ebenfalls ein Objekt) verwaltet wird. Der Query-Manager repräsentiert den Query-Dienst gegenüber dem ABAP-Programm.

Diese Grafik wird im zugehörigen Text erklärt

CL_OS_SYSTEM

Um einen Query-Manager zu erzeugen benötigt man die statische Methode GET_QUERY_MANAGER der  allgemeinen Systemdienstklasse CL_OS_SYSTEM.

IF_OS_QUERY_MANAGER, IF_OS_QUERY und IF_OS_QUERY_FACTORY

Das ABAP-Programm arbeitet nicht über Klassenreferenzvariablen mit dem Query-Manager und der Query, sondern greift über die Interfaces IF_OS_QUERY_MANAGER, IF_OS_QUERY und IF_OS_QUERY_FACTORY auf sie zu (siehe auch Beispiel).

Die relevanten Methoden des Systemdiensts

Die meisten Komponenten der Systemdienstklasse CL_OS_SYSTEM werden von den Object Services intern genutzt. Eine Methoden muss in einem Anwendungsprogramm verwendet werden, um explizit mit objektorientierten Queries arbeiten zu können.

GET_QUERY_MANAGER

Diese statische Methode liefert im Rückgabeparameter RESULT vom Typ IF_OS_QUERY_MANAGER eine Referenz auf den Query-Manager. Der Query-Manager wird bei der Initialisierung der Object Services erzeugt.

Die Methoden des Query-Managers

Der Query-Manager verwaltet die objektorientierten Queries des ABAP-Programms und wird über das Interface IF_OS_QUERY_MANAGER bedient.

IF_OS_QUERY_MANAGER~CREATE_QUERY

Erzeugt eine Query und liefert im Rückgabewert RESULT vom Typ IF_OS_QUERY eine Referenz auf das Query-Objekt.Die Filterbedingung wird an den Parameter I_FILTER vom Typ string, die Sortierbedingung an den Parameter I_ORDERING vom Typ string übergeben. Falls die Parameter der Query über eine Parameterliste angegeben werden sollen, muss dies an den Parameter I_PARAMETERS vom Typ string übergeben werden.

Die Methoden einer Query

Queries werden über die Interfaces IF_OS_QUERY und IF_OS_QUERY_EXPR_FACTORY bedient.

Methoden des Interfaces IF_OS_QUERY

IF_OS_QUERY~GET_EXPR_FACTORY

Liefert im Rückgabeparameter RESULT vom Typ IF_OS_QUERY_EXPR_FACTORY eine Referenz auf eine Query-Expression-Factory (Technisch gesehen ist eine Query-Expression-Factory ein Teil eines Query-Objekts, wird aber über das Interface _OS_QUERY_EXPR_FACTORY wie ein eigenes Objekt bedient).

IF_OS_QUERY~SET_FILTER_EXPR

Setzt die Filterbedingung. Die mit einer Query-Expression-Factory erzeugte interne Darstellung der Filterbedingung wird an den Parameter I_FILTER_EXPR vom Typ IF_OS_QUERY_FILTER_EXPR übergeben.

IF_OS_QUERY~SET_PARAMETERS_EXPR

Setzt die Parameterliste der Filterbedingung. Die mit einer Query-Expression-Factory erzeugte interne Darstellung der Parameterliste wird an den Parameter I_PARAMETERS_EXPR vom Typ IF_OS_QUERY_PARAMETERS_EXPR übergeben.

IF_OS_QUERY~SET_ORDERING_EXPR

Setzt die Sortierbedingung. Die interne Darstellung mit einer Query-Expression-Factory erzeugte der Sortierbedingung wird an den Parameter I_ORDERING_EXPR vom Typ IF_OS_QUERY_ORDERING_EXPR übergeben.

IF_OS_QUERY~PARSE

Erzeugt die internen Darstellungen der Filterbedingung, der Parameterliste und der Sortierbedingung, falls noch nicht erzeugt bzw. gesetzt.

Methoden des Interfaces IF_OS_QUERY_EXPR_FACTORY

IF_OS_QUERY_EXPR_FACTORY~CREATE_OPERATOR_EXPR

Erzeugt entweder eine Filterbedingung der Form

attr1 operator attr2,

wobei attr1, operator und attr2 die Werte der Parameter I_ATTR1, I_OPERATOR und I_ATTR2 sind, oder eine Filterbedingung der Form

attr1 operator 'val' oder attr1 operator val_w_quotes,

wobei val und val_w_quotes die Werte der Parameter I_VAL und I_VAL_W_QUOTES sind.

Wird der Parameter I_IDX vom Typ i übergeben, wird für val der Wert des Parameters aus der Parameterliste verwendet, dessen Index zum Ausführungszeitpunkt der Query durch den Wert des Parameters I_IDX bestimmt wird.

Die erzeugte Filterbedingung wird im Rückgabewert RESULT vom TYP IF_OS_QUERY_FILTER_EXPR zurückgegeben.

IF_OS_QUERY_EXPR_FACTORY~CREATE_LIKE_EXPR

Erzeugt abhängig vom Wert der Parameters I_NOT eine Filterbedingung der Form

attr [NOT] LIKE 'pattern' bzw. attr [NOT] LIKE pattern_w_quotes,

wobei attr, pattern und pattern_w_quotes die Werte der Parameter I_ATTR, I_PATTERN und I_PATTERN_W_QUOTES sind.

Wird der Parameter I_IDX vom Typ iübergeben, wird für pattern der Wert des Parameters aus der Parameterliste verwendet, dessen Index zum Ausführungszeitpunkt der Query durch den Wert des Parameters I_IDX bestimmt wird.

Durch Übergabe einer der Parameter I_ESCAPE bzw. I_ESCAPE_W_QUOTES wird an die Filterbedingung die Definition eines Fluchtsymbols in der Form

... ESCAPE 'escape' bzw.  ... ESCAPE escape_w_quotes

angehängt, wobei escape und escape_w_quotes die Werte der Parameter I_ESCAPE und I_ESCAPE_W_QUOTES sind.

Die erzeugte Filterbedingung wird im Rückgabewert RESULT vom TYP IF_OS_QUERY_FILTER_EXPR zurückgegeben.

IF_OS_QUERY_EXPR_FACTORY~CREATE_ISNULL_EXPR

Erzeugt abhängig vom Wert der Parameters I_NOT eine Filterbedingung der Form

attr IS [NOT] NULL,

wobei attr der Wert des Parameters I_ATTR ist.

Die erzeugteFilterbedingung wird im Rückgabewert RESULT vom TYP IF_OS_QUERY_FILTER_EXPR zurückgegeben.

IF_OS_QUERY_EXPR_FACTORY~CREATE_REF_EXPR

Erzeugt eine Filterbedingung der Form

attr EQUALSREF ref,

wobei attr der Wert des Parameters I_ATTR ist und ref der Wert des  Parameters aus der Parameterliste ist, dessen Index zum Ausführungszeitpunkt der Query durch den Wert des Parameters I_IDX bestimmt wird.

Statt durch einen Parameter kann die persistente Objektreferenz auch durch Angabe von Instanz-GUID und Klassen-GUID mit den Parametern I_GUID und I_CLSGUID vom Typ OS_GUID gesetzt werden.

Die erzeugte Filterbedingung wird im Rückgabewert RESULT vom TYP IF_OS_QUERY_FILTER_EXPR zurückgegeben.

IF_OS_QUERY_EXPR_FACTORY~CREATE_NOT_EXPR

Erzeugt eine Filterbedingung der Form

NOT ( expr ),

wobei expr eine an den Parameter I_EXPR übergebene bereits erzeugte Filterbedingung ist.

Die erzeugte Filterbedingung wird im Rückgabewert RESULT zurückgegeben.

IF_OS_QUERY_EXPR_FACTORY~CREATE_AND_EXPR

Erzeugt eine Filterbedingung der Form

( expr1 ) AND ( expr2 ),

wobei expr1 bzw. expr2 an die Parameter I_EXPR1 bzw. I_EXPR2 übergebene bereits erzeugte Filterbedingungen sind.

Die erzeugte Filterbedingung wird im Rückgabewert RESULT zurückgegeben.

IF_OS_QUERY_EXPR_FACTORY~CREATE_OR_EXPR

Erzeugt eine Filterbedingung der Form

( expr1 ) OR ( expr2 ),

wobei expr1 bzw. expr2 an die Parameter I_EXPR1 bzw. I_EXPR2 übergebene bereits erzeugte Filterbedingungen sind.

Die erzeugte Filterbedingung wird im Rückgabewert RESULT zurückgegeben.

IF_OS_QUERY_EXPR_FACTORY~CREATE_PARAMETERS_EXPR

Erzeugt eine Parameterliste. Die erzeugte Parameterliste wird im Rückgabewert RESULT vom TYP IF_OS_QUERY_PARAMETERS_EXPR zurückgegeben.

Die Parameter werden durch Aufrufe der Methode APPEND eines weiteren Interfaces IF_OS_QUERY_PARAMETERS_EXPR nacheinander hinzufügt. Der jeweilige Parametername wird dabei an den Parameter I_PAR übergeben.

IF_OS_QUERY_EXPR_FACTORY~CREATE_ORDERING_EXPR

Erzeugt eine Sortierbedingung. Die Sortierbedingung wird im Rückgabewert RESULT vom TYP IF_OS_QUERY_ORDERING_EXPR zurückgegeben.

Die Attribute, nach denen sortiert werden soll, werden durch Aufrufe der Methoden APPEND_ASCENDING bzw. APPEND_DESCENDING der weiteren Interfaces IF_OS_QUERY_ORDERING_EXPR nacheinander hinzufügt. Der jeweilige Attributname wird dabei an den Parameter I_ATTR übergeben.

 

 

Ende des Inhaltsbereichs