Administration et dépannage

Nettoyage du cache de métadonnées Gateway

Le nettoyage du cache de métadonnées Gateway est la procédure qui vide les modèles de services OData mis en cache dans SAP Gateway : /IWFND/CACHE_CLEANUP vide le cache sur le hub et /IWBEP/CACHE_CLEANUP dans le back-end. Ce nettoyage est nécessaire lorsqu'une application SAP Fiori continue d'afficher d'anciens champs, libellés ou annotations après une modification du service.

L'essentiel

Type
Procédure d'administration SAP Gateway
Couche
Services et API
Cache du hub
Modèle de métadonnées, modèle d'annotations, textes d'annotations ; /IWFND/CACHE_CLEANUP
Cache du back-end
Modèle de métadonnées et d'annotations ; /IWBEP/CACHE_CLEANUP
Également dans
SAP Gateway Client, menu Metadata (nettoyage ou reconstruction)
Exécuté par
Administrateurs basis, développeurs SAP Fiori et ABAP
S'applique à
SAP S/4HANA on-premise et Private Edition, SAP ERP (ECC)
Couche : Services et APIOù se situe-t-il ? ▾
Où se situe-t-il ?: L4 · Services et APICouche : Services et API.L1L2L3L4L5L6BTP

Couche : Services et API

Ouvrir la carte d'architecture →

Comment fonctionne le cache de métadonnées SAP Gateway ?

SAP Gateway met en cache les métadonnées de chaque service OData afin de ne pas reconstruire le modèle à chaque requête :

  • Sur le hub, il met en cache le modèle de métadonnées, le modèle d'annotations et les textes d'annotations.
  • Dans le back-end, il met en cache le modèle de métadonnées et le modèle d'annotations.
  • Dans un déploiement embedded, hub et back-end forment un seul système, et la mise en cache n'a lieu qu'une fois.

Pour les services construits avec le modèle OData Channel, une classe de fournisseur de modèle modifiée déclenche une actualisation automatique : à chaque requête du document de service ou du document $metadata, le cache compare les horodatages et recharge les métadonnées obsolètes. Le cache de métadonnées SAP Gateway s'actualise donc de lui-même dans le cas courant et n'a besoin d'un nettoyage manuel que lorsque ce contrôle ne peut pas détecter la modification.

Quand faut-il vider le cache de métadonnées ?

Videz le cache lorsque :

  • une modification de l'ABAP Dictionary, comme un nouveau type de champ dans une structure, modifie le modèle sans changer la classe de fournisseur de modèle, car aucun mécanisme ne la détecte ;
  • une classe de fournisseur de modèle modifiée a été importée dans un système de production, où SAP recommande un nettoyage après chaque import de ce type ;
  • des support packages ont été importés, ce que SAP cite parmi les corrections de mise en cache du launchpad ;
  • une application SAP Fiori affiche d'anciennes propriétés, d'anciens libellés ou d'anciennes annotations alors que le service est correct dans le back-end.

Dans les systèmes de développement, le cache du hub est désactivé par défaut : des métadonnées obsolètes y proviennent donc généralement du navigateur ou du cache du back-end. Le nettoyage du cache de métadonnées Gateway est une correction ciblée pour les modifications de modèle que le contrôle automatique ne détecte pas.

Comment vider le cache de métadonnées pas à pas ?

Alder Manufacturing transporte un nouveau champ dans son service fournisseurs, et l'application ne l'affiche toujours pas :

  1. Dans le système hub, exécutez /IWFND/CACHE_CLEANUP. Sélectionnez Cleanup Cache for all Models, ou limitez-le au modèle concerné, puis exécutez.
  2. Dans le système back-end, exécutez /IWBEP/CACHE_CLEANUP de la même façon. Dans un déploiement embedded, les deux s'exécutent dans le même système.
  3. Vous pouvez aussi ouvrir /IWFND/GW_CLIENT, appeler le service et utiliser le menu Metadata pour nettoyer le hub, le back-end ou les deux, ou pour reconstruire le cache du service courant.
  4. Demandez $metadata dans le SAP Gateway Client et vérifiez que le nouveau champ y figure.
  5. Rechargez l'application ; si le navigateur affiche encore l'ancien modèle, videz le cache du navigateur.

Les deux nettoyages sont également disponibles comme activités IMG dans SPRO. Vérifier $metadata avant de tester l'application permet de distinguer un problème de cache de métadonnées Gateway d'un problème de cache du navigateur.

Comment le navigateur met-il en cache les métadonnées OData ?

Le SAP Fiori launchpad met également en cache les métadonnées et annotations OData dans le navigateur web, protégées par des jetons cache buster. Le serveur front-end collecte ces jetons auprès des hubs SAP Gateway via le programme /UI5/UPD_ODATA_METADATA_CACHE, que SAP recommande de planifier périodiquement en production, mais pas dans les systèmes de développement. Lorsque les jetons changent, les navigateurs chargent les nouvelles métadonnées.

Si ce programme n'a pas tourné depuis une modification, les utilisateurs peuvent encore voir d'anciennes métadonnées après un nettoyage Gateway. /UI2/INVALIDATE_GLOBAL_CACHES vide les caches du launchpad, pas les métadonnées OData : il ne remplace donc pas cette étape. Le nettoyage du cache de métadonnées Gateway et la mise à jour des jetons côté navigateur rendent ensemble une modification de modèle visible de bout en bout.

/IWFND/CACHE_CLEANUP, /IWBEP/CACHE_CLEANUP ou /UI2/INVALIDATE_GLOBAL_CACHES : quelle différence ?

/IWFND/CACHE_CLEANUP/IWBEP/CACHE_CLEANUP/UI2/INVALIDATE_GLOBAL_CACHES
S'exécute surHub SAP GatewaySystème back-endServeur front-end SAP Fiori
VideMétadonnées, modèles d'annotations et textes du hubMétadonnées et modèles d'annotations du back-endCaches des services du launchpad (UI2)
Déclencheur typiqueAnciennes métadonnées après une modification du serviceModification du dictionnaire non détectée par le modèleContenu de launchpad transporté non visible

Les deux nettoyages Gateway actualisent les modèles OData ; le programme UI2 actualise le contenu du launchpad.

Questions fréquentes

Faut-il exécuter à la fois /IWFND/CACHE_CLEANUP et /IWBEP/CACHE_CLEANUP ?

Dans un déploiement hub, oui, lorsque vous ne savez pas où se trouve le modèle obsolète : exécutez /IWFND/CACHE_CLEANUP sur le hub et /IWBEP/CACHE_CLEANUP dans le back-end. Dans un déploiement embedded, les deux s'exécutent dans le même système, que SAP documente comme ne mettant le modèle en cache qu'une fois ; si d'anciennes métadonnées persistent après un nettoyage, exécutez aussi l'autre.

Peut-on désactiver le cache de métadonnées SAP Gateway ?

Pour OData V2, le cache du hub peut être activé ou désactivé dans SPRO ; SAP recommande de le désactiver en développement et de le laisser actif dans les systèmes de production et de test de performance. Pour OData V4, SAP Gateway ne propose aucune option pour désactiver la mise en cache des métadonnées.

Vider le cache de métadonnées est-il risqué en production ?

Le vidage n'est pas destructif : la requête suivante reconstruit le modèle à partir de l'implémentation du service. Les premiers appels après un nettoyage complet sont plus lents ; limiter le nettoyage aux modèles concernés réduit donc l'impact.

Pourquoi l'application affiche-t-elle encore d'anciennes annotations après le nettoyage ?

Le navigateur conserve peut-être les métadonnées précédentes. Vérifiez d'abord $metadata dans le SAP Gateway Client ; si elles y sont correctes, le problème se situe côté client, et la mise à jour planifiée des jetons ou une réinitialisation du cache du navigateur le résout.

Sources

S'applique à
SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP ERP (ECC)
Dernière relecture

SAP, SAP Fiori, SAPUI5, SAP S/4HANA, SAP BTP et les autres produits et services SAP mentionnés sont des marques commerciales ou des marques déposées de SAP SE (ou d'une société affiliée à SAP) en Allemagne et dans d'autres pays. Ce guide est indépendant ; il n'est ni affilié à SAP SE, ni sponsorisé, ni approuvé par SAP SE.