Skip to content

ABAP Keyword Documentation →  ABAP − Reference →  Processing External Data →  ABAP Database Access →  Object Services →  Query Service 

Query Service

This example demonstrates how an object-oriented query is used.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    DATA: airpfrom TYPE s_fromairp VALUE 'FRA',
          airpto   TYPE s_toairp   VALUE 'SIN'.

    cl_demo_input=>new(
      )->add_field( CHANGING field = airpfrom
      )->add_field( CHANGING field = airpto )->request( ).

    TYPES: BEGIN OF result,
             carrid TYPE s_carr_id,
             connid TYPE s_conn_id,
           END OF result,
           results TYPE TABLE OF result WITH EMPTY KEY.

    TRY.
        DATA(query) = cl_os_system=>get_query_manager( )->create_query(
          i_filter   = `AIRPFROM = PAR1 AND AIRPTO = PAR2`
          i_ordering = `CARRID ASCENDING CONNID ASCENDING` ).

        DATA(agent) = ca_spfli_persistent=>agent.
        cl_demo_output=>display(
          VALUE results(
            FOR <connection>
            IN agent->if_os_ca_persistency~get_persistent_by_query(
              i_query   = query
              i_par1    = airpfrom
              i_par2    = airpto )
              ( carrid = CAST cl_spfli_persistent(
                               <connection> )->get_carrid( )
                connid = CAST cl_spfli_persistent(
                               <connection> )->get_connid( ) ) ) ).
      CATCH cx_root INTO DATA(exc).
        cl_demo_output=>display( exc->get_text( ) ).
    ENDTRY.

Description

A query manager is called using the method GET_QUERY_MANAGER of the class CL_OS_SYSTEM and a query created using the method CREATE_QUERY and a specified filter and sort conditions. The query is executed using the interface method GET_PERSISTENT_BY_QUERY of the interface IF_OS_CA_PERSISTENCY and the flights found are displayed.

Since the predefined parameters PAR1, PAR2 from a parameter list are used here, an SQL injection is not possible in this example.