Skip to Content
Personal Insights
Author's profile photo Antonio Maradiaga

The importance and value of OData in the SAP ecosystem

In this blog post I will share my personal view on the importance of OData within the SAP ecosystem, how it enables us to easily integrate and extend our systems/applications and how you can produce and consume OData services.

From the OData.org website, OData (Open Data Protocol) is an ISO/IEC approved, OASIS standard that defines a set of best practices for building and consuming RESTful APIs. There are numerous explanations in SAP Commmunity on what OData is, so I will not repeat here what others have explained so well before.

OData%20diagram

OData diagram

If you want to learn a bit about the history and origins of OData, I recommend you reading – Monday morning thoughts: OData blog post by DJ Adams.

As mentioned in the OData website… OData allows the creation and consumption of queryable and interoperable APIs in a simple and standard way. Its metadata, a machine-readable description of the data model of the APIs, enables the creation of powerful generic client applications and tools. Multiple SAP applications/services have OData APIs and it has become the preferred protocol to expose data that lives within SAP applications and make it available for other to use. Personally, I see OData as a “connecting point” that facilitates interoperability between SAP and non-SAP applications.

What I like the most about developing OData services is that they can be consumed by many different application types. It is possible to develop a mobile app, a web app, create a report or use it for integration purposes and all of these use cases communicating with a single OData service.

I highly recommend watching the Back to basics: OData series by DJ Adams. if you want to understand in detail what OData is.

Producing OData services

So, how can you create OData services using SAP technologies/tools and non-SAP tools?

  • SAP Gateway: Exposes data from SAP backend systems in the form of OData services, which can be consumed by mobile/web applications to extend system functionality.
  • Cloud Application Programming (CAP) Model: Services created using the Cloud Application Programming model are OData services. Which means that you can easily create RESTful, queryable APIs by following CAP. Also, OData annotations can be specified in Core Data Services (CDS) models which allows us to specify UI labels/properties that can used by service consumers. See CAP OData documentation.
  • SAP Cloud Integration: You can develop OData APIs that expose existing data sources, such as SOAP, as OData endpoints. These OData APIs can be consumed by SAP Fiori apps, SAP BTP Mobile Services, or any other custom app, to implement user-centric scenarios. See Developing an OData API project.
  • SAP API Management: An API proxy can be created in API Management to expose OData services. This is an interesting approach if you want to expose internal OData services to the outside world by using SAP Cloud Connector. See API Proxy.
  • Not SAP only: Remember that OData is an open standard specification, it is not SAP-specific. You can also create/consume OData services using open source libraries. See the different OData libraries available if you want to learn how to create OData services in your favourite programming language, e.g. Python, .Net, Swift.

Now that you know how you can create OData services, lets see some how you can consume these services.

Consuming OData services

As mentioned previously, OData has become the preferred protocol to expose data that lives within SAP applications. As you can imagine, there are various tools that “understand” OData (by consuming the service metadata) and simplify developing our extensions/integrations.

  • Fiori Elements: We can use SAP Fiori elements to create SAP Fiori applications based on OData services and annotations. See How to use SAP Fiori Elements and SAP Fiori Elements now supports OData v4.
  • SAP Mobile services and mobile products: OData services deliver quality data so they can be consumed by mobile applications directly. Applications developed with SAP AppGyver, SAP Mobile services, the SAP BTP SDK for iOS, SAP BTP SDK for Android can consume OData services. See Mobile Services.
  • SAP Analytics Cloud: You can define OData Services based on SAP S/4HANA, SAP BW systems, SAP HANA systems, and SAP Business Planning and Consolidation (BPC) systems to execute actions on the services. Also consume OData services for reporting purposes. See SAP Analytics Cloud – Using OData and Import Data connection to OData Service.
  • Non-SAP: In the end, an OData service is a RESTful service, meaning that it can be consumed by any application/programming language that is able to communicate via HTTP. For example, you can develop a Python/Go/Rust app/service that communicates with an OData service.

More OData….

Where can you find more about OData?

As you can see, OData is widely used by different SAP products. There are multiple way of producing OData services, lots of SAP applications/services expose OData APIs and also multiple avenues to consume these APIs. I hope this blog post gives you an idea of why OData is important in the SAP ecosystem and the value and flexibility it provides when integrating/extending your SAP applications.

 

Assigned Tags

      9 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Yann MIQUEL
      Yann MIQUEL

      Hi Antonio,

      Thank you for this post 🙂

      Can you elaborate on the use case where you connect SAC to CAP applications instead of HANA Cloud directly ?

      Yann

      Author's profile photo Antonio Maradiaga
      Antonio Maradiaga
      Blog Post Author

      Hi Yann MIQUEL,

      No real reason to access HANA Cloud via  a CAP application instead of directly from SAC. The idea was to illustrate that you can connect SAC to an OData service. The OData service doesn't necessarily need to use HANA Cloud as a database.... it can be a PostgreSQL, MongoDB or even SQLite as a database.

      Author's profile photo Bob Eva
      Bob Eva

      nice info.

      Author's profile photo Antonio Maradiaga
      Antonio Maradiaga
      Blog Post Author

      Thanks!

      Author's profile photo adnan Khan
      adnan Khan

      thanks for the updated information.

      Author's profile photo Saurabh Kumbhare
      Saurabh Kumbhare

      You can develop OData APIs that expose existing data sources, such as SOAP, as OData endpoints

       

      This above statement is interesting regarding exposing SOAP as OData APIs . Any pointers to a blog to achieve this?

       

      Thanks

      Saurabh

      Author's profile photo Ralf Handl
      Ralf Handl

      See CPI OData Calculator: SOAP Source (with Groovy Script on the Message Mapping)

      Author's profile photo Janith Illangakoon
      Janith Illangakoon

      Does an OData filter actually filter records on CDS view level or is it filter data with a pre-fetched data set of the CDS view in HANA?

      Author's profile photo Umang Amrishbhai Mehta
      Umang Amrishbhai Mehta

      Is there any other option available to consume SAP provisioned OData service outside the SAP into the Non-SAP application? For example, earlier there was a service called OData provisioning that I am not able to find anymore in the SAP discovery center.

      Asking this question because we already have a homegrown API management solution that has attained a good level of maturity. So now there are reservations about leveraging API management service on BTP due to the additional cost and redundant governance process that may require to bring the same level of maturity in another API management product.