Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
22,519
Description: The blog post is about to understand the startswith and endswith filter concept in OData framework.

Prerequisite: To know the behaviour of startswith and endswith in OData framework before we
needs to know about  the GET_ENTITYSET method and parameters.

Introduction: $filter query option is the most used query option while accessing OData service.The
framework does not provide default filtering.We need to implement it ourself.$filter query option
allows us to filter the result set of GET_ENTITYSET implementation.

we are having multiple filter options such as :

  • startswith

  • endswith

  • substringof

  • count

  • exclusive


Here in this blog i will be explaining you about startswith and endswith,

startswith: If we want to fetch data based on a particular starting value we can use startswith.

Below is the example for fetching data based on ‘CARRID’ startswithA’ from ‘SFLIGHT’ database table.

Redefine GET_ENTITYSET methiod in DPC_EXT class and write the below logic,

method SFLIGHTSET_GET_ENTITYSET.

DATA: LT TYPE ZCL_ZBP_FLIGHT_MPC_EXT=>TT_SFLIGHT.

READ TABLE IT_FILTER_SELECT_OPTIONS INTO DATA(LS_FILTER)

WITH KEY PROPERTY = 'Carrid'.

LOOP AT LS_FILTER-SELECT_OPTIONS INTO DATA(LS_FILTER_SOPTION).

IF  LS_FILTER_SOPTION IS NOT INITIAL.

REPLACE ALL OCCURRENCES OF '*' IN LS_FILTER_SOPTION-LOW WITH '%'.

SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE LT
WHERE PLANETYPE LIKE LS_FILTER_SOPTION-LOW.

IF SY-SUBRC = 0.

ET_ENTITYSET = LT.

ENDIF.

ENDIF.

ENDLOOP.

endmethod.

 

Now we can test our $filter startswith query option in gateway client by using below URL.

URL:

/sap/opu/odata/SAP/ZBP_FLIGHT_SRV/sflightSet?$filter=startswith(Carrid,'A')


Image source :Damodar ,SAP ABAP technical consultant


Fig1:- You can see in the above picture the records are fetched from the database with starting value ‘A’.

 

Endswith:- If we want to fetch data based on a particular ending value we can use Ends with.

Below is the example for fetching data based on ‘CARRID’ endswith ‘L’ from ‘SFLIGHT’ database table.

Redefine GET_ENTITYSET methiod in DPC_EXT class and write the below logic,

method SFLIGHTSET_GET_ENTITYSET.

DATA: LT TYPE ZCL_ZBP_FLIGHT_MPC_EXT=>TT_SFLIGHT.

READ TABLE IT_FILTER_SELECT_OPTIONS INTO DATA(LS_FILTER)

WITH KEY PROPERTY = 'Carrid'.

LOOP AT LS_FILTER-SELECT_OPTIONS INTO DATA(LS_FILTER_SOPTION).

IF  LS_FILTER_SOPTION IS NOT INITIAL.

REPLACE ALL OCCURRENCES OF '*' IN LS_FILTER_SOPTION-LOW WITH '%'.

SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE LT
WHERE PLANETYPE LIKE LS_FILTER_SOPTION-LOW.

IF SY-SUBRC = 0.

ET_ENTITYSET = LT.

ENDIF.

ENDIF.

ENDLOOP.

endmethod.

 

Now we can test our $filter endswith query option in gateway client by using below URL.

URL:  /sap/opu/odata/SAP/ZBP_FLIGHT_SRV/sflightSet?$filter=endswith(Carrid,'L')

 


Image source: Damodar, SAP ABAP technical consultant


Fig2:- You can see in the above picture the records are fetched from the database with ending value ‘L’.

Conclusion: This is how startswith and endswith works in ODATA. Hope this document will help for those who are new to ODATA.

 

Thank You 🙂
2 Comments
Labels in this area