OData (Open Data Protocol) est un protocole courant pour échanger des données. Il fonctionne avec des options que l’on ajoute à une URL lors de l’appel à un service OData, donnant ainsi une souplesse dans la réponse, dans la limite de ce qu’autorise le serveur.
En utilisant ces options, vous facilitez et structurez la communication entre votre backend et votre frontend. Cela contribue à améliorer les performances des applications SAP Fiori, car vous réduisez, triez et paginez les données directement sur la base HANA.
Dans cet article, nous allons découvrir les options OData les plus utilisées. Pour illustrer, nous allons utiliser une requête HTTP GET standard sur un service de démonstration public OData.
Limiter les propriétés avec $select
L’option $select est essentielle pour l’optimisation. Elle vous permet de choisir précisément les propriétés que vous souhaitez recevoir en réponse.
L’objectif : Réduire le nombre de propriétés sélectionnées et ainsi la taille des données échangées entre le client et le serveur, ce qui accélère les appels réseau.
https://services.odata.org/V3/OData/OData.svc/Products = 3,2Kb / 999ms
https://services.odata.org/V3/OData/OData.svc/Products?$select=Price = 1,7Kb / 555ms
Taille et temps de réponse divisés par 2 pour des données inutiles : MAGIQUE !
Récupérer les données liées avec $expand
L’option $expand simplifie la récupération des données de plusieurs entités liées entre elles. Elle permet de récupérer les données de plusieurs objets associés en une seule requête.
L’objectif : Réduire le nombre d’appels nécessaires pour obtenir une entité complète avec ses entités « enfants » liées.
https://services.odata.org/V3/OData/OData.svc/Products?$expand=Categories
Sans le $expand pour 100 produits, il aurait fallu 100 appels pour récupérer les catégories de chaque produit : avec le $expand, un seul appel suffit !
Réduire la sélection avec $filter
L’option $filter est la clé pour filtrer les données directement sur le serveur, ne renvoyant que celles qui correspondent à un critère spécifique.
L’objectif : tirer profit d’une base de données HANA, plus puissante qu’un navigateur. Vous ne récupérez que les données désirées, ce qui réduit considérablement la charge de traitement.

Implémentation
Voyons maintenant l’implémentation dans notre code
- SAPUI5 Freestyle.
Voici un exemple d’implémentation Freestyle à la main, très verbeux et susceptible de contenir des erreurs :
- Fiori Elements.
Dans les applications Fiori Elements, ces options sont gérées automatiquement. Le système génère les requêtes HTTP optimisées pour vous :
$filter est par exemple appliqué automatiquement lorsque l’utilisateur utilise les barres de recherche ou les filtres de l’interface. Les annotations OData, telles que @UI.selectionField, permettent de définir les champs sur lesquels le filtre peut être appliqué dans l’interface.
Conclusion
L’utilisation intelligente des options OData est indispensable pour créer des applications web performantes, efficaces et évolutives.
En les combinant entre elles, comme le font automatiquement les applications Fiori Elements, vous réduisez la charge à la fois côté client et côté serveur, offrant ainsi une meilleure expérience utilisateur.

