report DEMO_QUERY_PERSISTENT.
parameters AIRPFROM type S_FROMAIRP default 'FRA'.
parameters AIRPTO type S_TOAIRP default 'SIN'.
data: QUERY_MANAGER type ref to IF_OS_QUERY_MANAGER,
QUERY type ref to IF_OS_QUERY.
data: CONNECTIONS type OSREFTAB,
CONNECTION type ref to CL_SPFLI_PERSISTENT,
AGENT type ref to CA_SPFLI_PERSISTENT.
data: CARRID type S_CARR_ID,
CONNID type S_CONN_ID.
data: TMP type ref to OBJECT.
data: EXC type ref to CX_ROOT,
TEXT type STRING.
AGENT = CA_SPFLI_PERSISTENT=>AGENT.
try.
QUERY_MANAGER = CL_OS_SYSTEM=>GET_QUERY_MANAGER( ).
QUERY = QUERY_MANAGER->CREATE_QUERY(
I_FILTER = `AIRPFROM = PAR1 AND AIRPTO = PAR2` ).
CONNECTIONS =
AGENT->IF_OS_CA_PERSISTENCY~GET_PERSISTENT_BY_QUERY(
I_QUERY = QUERY
I_PAR1 = AIRPFROM
I_PAR2 = AIRPTO ).
if ( lines( CONNECTIONS ) > 0 ).
read table CONNECTIONS into TMP index 1.
CONNECTION ?= TMP.
CARRID = CONNECTION->GET_CARRID( ).
CONNID = CONNECTION->GET_CONNID( ).
concatenate TEXT-001 CARRID CONNID into TEXT separated by SPACE.
else.
TEXT = TEXT-002.
endif.
message TEXT type 'I'.
catch CX_ROOT into EXC.
TEXT = EXC->GET_TEXT( ).
message TEXT type 'I'.
endtry.
Der Referenzvariablen AGENT wird eine Referenz auf den Klassenakteur der persistenten Klasse CL_SPFLI_PERSISTENT zugewiesen. Dieser wird vom statischen Konstruktor der Klasse CA_SPFLI_PERSISTENT einmalig erzeugt. Mit der Methode GET_QUERY_MANAGER der Systemklasse CL_OS_SYSTEM wird ein Query-Manager geholt und mit der Methode CREATE_QUERY unter Angabe des Filters eine Query erzeugt. Mit der Interface-Methode GET_PERSISTENT_BY_QUERY des Interfaces IF_OS_CA_PERSISTENCY wird die Query ausgeführt und der erste gefundene Flug wird ausgegeben.