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.
Um einen Query-Manager zu erzeugen benötigt man die statische Methode GET_QUERY_MANAGER der allgemeinen Systemdienstklasse CL_OS_SYSTEM.
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 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.
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.
Der Query-Manager verwaltet die objektorientierten Queries des ABAP-Programms und wird über das Interface IF_OS_QUERY_MANAGER bedient.
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.
Queries werden über die Interfaces IF_OS_QUERY und IF_OS_QUERY_EXPR_FACTORY bedient.
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).
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.
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.
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.
Erzeugt die internen Darstellungen der Filterbedingung, der Parameterliste und der Sortierbedingung, falls noch nicht erzeugt bzw. gesetzt.
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.
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.
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.
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.
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.
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.
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.
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.
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.