Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Processing External Data →  ABAP - Database Accesses →  Object Services →  Query Service 

Query Service

This example demonstrates the use of an object oriented query.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    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( ).
          text = |{ text-001 } { carrid } { connid }|.
        ELSE.
          text = text-002.
        ENDIF.
        MESSAGE text TYPE 'I'.
      CATCH cx_root INTO exc.
        text = exc->get_text( ).
        MESSAGE text TYPE 'I'.
    ENDTRY.

Description

A reference is assigned a reference to the class actor of the persistent class CL_SPFLI_PERSISTENT is assigned to the reference variable agent. It is created once using the static constructor of the CA_SPFLI_PERSISTENT class. Using the method GET_QUERY_MANAGER of the CL_OS_SYSTEM class, a Query Manager is called, and with the CREATE_QUERY method and stating the filter, a query is created. The query is executed using the interface method GET_PERSISTENT_BY_QUERY of the IF_OS_CA_PERSISTENCY interface and the first flight that is found is displayed.