ARTICLE
Query Service Components
A query is represented by a query object, which is managed by a Query
Manager (also an object). The Query Manager represents the query service
with respect to the ABAP program.
To create a Query Manager, you need the static method
GET_QUERY_MANAGER of the general system service class
CL_OS_SYSTEM .
An ABAP program does not work with the Query Manager and queries by
using class reference variables. Instead, it uses the interfaces
IF_OS_QUERY_MANAGER ,
IF_OS_QUERY , and
IF_OS_QUERY_FACTORY .
A query is not executed directly, but using the method
GET_PERSISTENT_BY_QUERY of the interface
IF_OS_CA_PERSISTENCY of a class agent. This means a search is
carried out for persistent objects of the associated persistent class
that match the filter condition.
The options for executing a query are controlled using the interface
IF_OS_QUERY_OPTIONS . To enable
this, a structure of type IF_OS_QUERY_OPTIONS= OPTIONS can be
passed to method GET_PERSISTENT_BY_QUERY .
Relevant Method of the System Service
Most of the components of the system service class
CL_OS_SYSTEM are used internally by
the Object Services. A method must be used in an application program to
be able to work explicitly with object-oriented queries.
GET_QUERY_MANAGER
This static method returns the return value RESULT of type
IF_OS_QUERY_MANAGER containing a reference to the Query Manager. The
Query Manager is created when you initialize the Object Services.
Methods of the Query Manager
The Query Manager manages the object-oriented queries of the ABAP
program and is executed from interface
IF_OS_QUERY_MANAGER .
IF_OS_QUERY_MANAGER~CREATE_QUERY
Creates a query and returns a reference to the query object in return
value RESULT of type IF_OS_QUERY . The filter condition is
passed to the parameter I_FILTER of type string . The sort
condition is passed to the parameter I_ORDERING of type
string . If the query�s parameters are specified using a parameter
list, this must be passed to the parameter I_PARAMETERS of type
string .
Methods of a Query
Queries are executed from interfaces
IF_OS_QUERY and
IF_OS_QUERY_EXPR_FACTORY .
Methods of the Interface IF_OS_QUERY
IF_OS_QUERY~GET_EXPR_FACTORY
Returns a reference to a query expression factory in the return
parameter RESULT of type IF_OS_QUERY_EXPR_FACTORY .
Technically speaking, a query expression factory is part of a query
object, although it is executed using the interface
IF_OS_QUERY_EXPR_FACTORY , like a separate object.
IF_OS_QUERY~SET_FILTER_EXPR
Sets the filter condition. The internal display of the filter condition
that is created with a query expression factory is passed to parameter
I_FILTER_EXPR of type IF_OS_QUERY_FILTER_EXPR .
IF_OS_QUERY~SET_PARAMETERS_EXPR
Sets the parameter list of the filter condition. The internal display of
the parameter list that is created with a query expression factory is
passed to parameter I_PARAMETERS_EXPR of type
IF_OS_QUERY_PARAMETERS_EXPR .
IF_OS_QUERY~SET_ORDERING_EXPR
Sets the sort condition. The internal display of a sort condition
created with the query expression factory is passed to parameter
I_ORDERING_EXPR of type IF_OS_QUERY_ORDERING_EXPR .
IF_OS_QUERY~PARSE
Creates the internal displays of the filter condition, the parameter
list, and the sort term if these have not yet been created or set.
Methods of the Interface IF_OS_QUERY_EXPR_FACTORY
IF_OS_QUERY_EXPR_FACTORY~CREATE_OPERATOR_EXPR
Creates either a filter condition in the form
attr1 operator attr2 ,
where attr1 , operator , and attr2 are the values of
parameters I_ATTR , I_OPERATOR and I_ATTR2 .
attr1 operator 'val' or
attr1 operator val_w_quotes
where val and val_w_quotes are the values of parameters
I_VAL and I_VAL_W_QUOTES .
If parameter I_IDX of type i is passed, val is the
value of the parameter from the parameter list, for which the index when
the query is executed is determined by the value of parameter I_IDX
.
The filter condition that is created is returned in the return value
RESULT of type IF_OS_QUERY_FILTER_EXPR .
IF_OS_QUERY_EXPR_FACTORY~CREATE_LIKE_EXPR
Creates a filter condition in the following form (depends on the value
of I_NOT parameter)
attr [NOT] LIKE 'pattern' or
attr [NOT] LIKE pattern_w_quotes ,
where attr , pattern , and pattern_w_quotes are the
values of the parameters I_ATTR , I_PATTERN and
I_PATTERN_W_QUOTES .
If parameter I_IDX of type i is passed, pattern
is the value of the parameter from the parameter list, for which the
index when the query is executed is determined by the value of parameter
I_IDX .
Specifying parameter I_ESCAPE or I_ESCAPE_W_QUOTES appends
the definition of an escape character in form ... ESCAPE 'escape' or
. ... ESCAPE escape_w_quotes , where escape and
escape_w_quotes are the values of parameters I_ESCAPE and
I_ESCAPE_W_QUOTES .
The filter condition that is created is returned in the return value
RESULT of type IF_OS_QUERY_FILTER_EXPR .
IF_OS_QUERY_EXPR_FACTORY~CREATE_ISNULL_EXPR
Creates a filter condition in the following form (depends on the value
of I_NOT parameter)
attr IS [NOT] NULL ,
where attr is the value of parameter I_ATTR .
The filter condition that is created is returned in the return value
RESULT of type IF_OS_QUERY_FILTER_EXPR .
IF_OS_QUERY_EXPR_FACTORY~CREATE_REF_EXPR
Creates a filter condition in the form
attr EQUALSREF ref ,
where attr is the value of parameter I_ATTR and ref
is the value of the parameter from the parameter list whose index when
the query is executed is determined by the value of parameter I_IDX
.
Instead of using a parameter to set the persistent object reference, you
can specify the instance GUID and class GUID using
parameters I_GUID and I_CLSGUID of type OS_GUID .
The filter condition that is created is returned in the return value
RESULT of type IF_OS_QUERY_FILTER_EXPR .
IF_OS_QUERY_EXPR_FACTORY~CREATE_NOT_EXPR
Creates a filter condition in the form
NOT ( expr ),
where expr is a filter condition that has already been created
and passed to parameter I_EXPR .
The filter condition that is created is returned in return value
RESULT .
IF_OS_QUERY_EXPR_FACTORY~CREATE_AND_EXPR
Creates a filter condition in the form
( expr1 ) AND ( expr2 )
where expr1 or expr2 are filter conditions that have
already been created and passed to parameter I_EXPR1 or
I_EXPR2 .
The filter condition that is created is returned in return value
RESULT .
IF_OS_QUERY_EXPR_FACTORY~CREATE_OR_EXPR
Creates a filter condition in the form
( expr1 ) OR ( expr2 )
where expr1 or expr2 are filter conditions that have
already been created and passed to parameter I_EXPR1 or
I_EXPR2 .
The filter condition that is created is returned in return value
RESULT .
IF_OS_QUERY_EXPR_FACTORY~CREATE_PARAMETERS_EXPR
Creates a parameter list. The paremeter list that is created is returned
in return value RESULT of type IF_OS_QUERY_PARAMETERS_EXPR
.
The parameters are appended in succession when method APPEND of a
further interface
IF_OS_QUERY_PARAMETERS_EXPR is called. The parameter name is
passed to parameter I_PAR .
IF_OS_QUERY_EXPR_FACTORY~CREATE_ORDERING_EXPR
Creates a sort condition. The sort condition is returned in the return
value RESULT of type IF_OS_QUERY_ORDERING_EXPR .
The attributes that you are sorting by are appended one after the other
when you call method APPEND_ASCENDING or APPEND_DESCENDING
of additional interface
IF_OS_QUERY_ORDERING_EXPR . The parameter name is passed to
parameter I_ATTR .
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved