Lorsque nous demandons à un agent IA « Quel est le successeur de MARA en ABAP Cloud ? », ou lorsque nous développons en ABAP Cloud via des agents de développement IA, nous nous sommes rendu compte que, sans aide, l’IA pouvait faire des erreurs et halluciner sur les objets proposés.
Suite a ce besoin de fiabiliser les retours, nous avions décidé de lancer le MCP sap-released-objects.
Il est désormais l’heure de l’analyse (presque) objective de notre solution. Nous avons testé trois méthodes sur des cas réels et mesuré les tokens consommés, la fiabilité et la complétude des résultats :
- Répondre de mémoire (connaissances internes du LLM)
- Chercher sur le web (web search)
- Interroger le MCP sap-released-objects
Pour rappel sap-released-objects, est un serveur MCP open source qui indexe le Cloudification Repository et expose 7 outils pour la recherche, la compliance check et la recherche de successeurs. Voici comment il se compare aux deux autres approches.
Note : Cette analyse n’a aucune valeur scientifique et est uniquement le résultat de tests manuels sur Claude.
« Quel est le successeur de MARA ? »
Le développeur/consultant connaît le nom technique de l’objet et veut savoir par quoi le remplacer.
A : LLM seul (sans outil)
L’agent répond directement depuis ses données d’entraînement.
Résultat obtenu :
Le successeur de MARA est I_PRODUCT.
Verdict :
- Tokens consommés : ~200 (output uniquement)
- Successeur principal trouvé : oui (I_PRODUCT)
- Liste complète : non, 1 successeur sur 5
- Risque : hallucination possible sur des objets moins connus
Le LLM connaît I_PRODUCT parce que c’est un cas d’école présent dans de nombreux blogs. Mais il ignore systématiquement les 4 autres successeurs : I_PRODUCTPROCUREMENT, I_PRODUCTQM, I_PRODUCTSALES et I_PRODUCTSTORAGE_2 qui sont pourtant présent dans le cloud repository.
B : Web search
L’agent effectue une recherche web type MARA table successor ABAP Cloud released API.
Résultat obtenu :
Les 10 résultats remontés sont des blogs SAP Community, tutoriels et forums. MARA et I_PRODUCT sont mentionnés indirectement dans certains articles, mais aucun résultat ne fournit la liste complète et structurée des successeurs.
Verdict :
- Tokens consommés : ~4 500+ en input (résultats bruts injectés dans le contexte) + ~500 en output
- Successeur principal trouvé : oui (mentionné dans les blogs)
- Liste complète : non : 1 à 2 successeurs repérables dans le bruit
- Risque : blogs parfois obsolètes, ratio signal/bruit très faible
C : MCP sap-released-objects
L’agent appelle sap_find_successor(« MARA », object_type= »TABL »).
Résultat obtenu :
=== Successor Search for ‘MARA’ ===
— TABL MARA —
State: notToBeReleased (Level C)
Successor Type: multipleObjects
→ DDLS I_PRODUCT [released (Level A)]
→ DDLS I_PRODUCTPROCUREMENT [released (Level A)]
→ DDLS I_PRODUCTQM [released (Level A)]
→ DDLS I_PRODUCTSALES [released (Level A)]
→ DDLS I_PRODUCTSTORAGE_2 [released (Level A)]
Verdict :
- Tokens consommés : ~250 en input + ~300 en output
- Successeurs trouvés : 5 sur 5
- Composant applicatif : LO-MD-MM
- Risque d’hallucination : null : données issues du Cloudification Repository officiel SAP
Comparatif
| Critère | LLM seul | Web search | MCP server |
|---|---|---|---|
| Tokens consommés | ~200 | ~5 000 | ~550 |
| Successeurs trouvés | 1/5 | 1-2/5 | 5/5 |
| Clean Core Level | Inconnu | Parfois mentionné | Oui |
| Comparaison cross-version | Non | Non | 2020 → latest |
| Risque d’hallucination | Élevé | Moyen | Nul |
| Données à jour | Cutoff LLM | Dépend des blogs | GitHub SAP live |
Le + de sap-released-objects : la recherche sémantique
Partons d’un exemple : « Quels objets existent pour l’inventaire physique ? »
Le développeur ne connaît pas le nom technique, il sait juste qu’il travaille sur de l’inventaire physique et cherche les APIs released disponibles.
Problème : Les noms techniques SAP utilisent des abréviations (PHYSICALINVENTORY, PHYSINVTRY, PHYS_INV…) qu’un humain ne peut pas deviner.
A : LLM seul
L’agent tente de lister de mémoire les CDS views released pour l’inventaire physique.
Résultat : le LLM peut citer I_PHYSICALINVENTORYDOCUMENT si c’est dans ses données d’entraînement, mais il ne connaît pas la liste complète et ne peut pas distinguer les objets released des non-released. Forte probabilité d’inventer des noms d’objets.
B : Web search
Recherche : « physical inventory released API CDS view ABAP Cloud ».
Résultat : 10 résultats remontés. Aucun résultat ne mentionne les objets I_PHYSINVTRY* ou I_PHYSICALINVENTORY*
C : MCP sap-released-objects
L’agent appelle sap_search_objects(query="physical inventory").
Résultat : 35 objets released trouvés, dont :
I_EWM_PHYSINVTRYITEMROW (SCM-EWM, Level A)
I_PHYSICALINVTRYISACTVBLKD (MM-IM, Level A)
I_PHYSINVTRYBOOKSERIALNMBRTP (MM-IM-PI, Level A)
I_PHYSINVTRYCOUNTSERIALNMBRTP (MM-IM-PI, Level A)
I_PHYSINVTRYCOUNTSTS (MM-IM, Level A)
I_PHYSINVTRYCUBE (MM-IM, Level A)
I_PHYSINVTRYDELETIONSTS (MM-IM, Level A)
…
| Critère | LLM seul | Web search | MCP server |
|---|---|---|---|
| Objets trouvés | 0-1 | 10 | 35 |
| Résolution d’abréviations SAP | Non | Non | Oui (fuzzy matching) |
| Filtrable par composant (MM-IM, EWM…) | Non | Non | Oui |
| Filtrable par type (DDLS, BDEF, CLAS…) | Non | Non | Oui |
| Tokens consommés | ~200 | ~4 500+ | ~400 |
Le MCP server, indexe 33 000+ objets et semble permettre une meilleure navigation par concept métier.
Au-delà du successeur : la complémentarité avec les autres MCP
Exemple : vibing-steampunk
Le MCP sap-released-objects trouve quel objet utiliser est released, ou quel est son successeur. Mais il ne peut pas lire le code source du successeur ni réécrire du code.
En parallèle, vibing-steampunk est un pont ADT-to-MCP qui permet à un agent de lire, écrire et déployer du code ABAP directement dans un système SAP.
Quand les deux MCP servers sont connectés ensemble, l’agent peut enchaîner un workflow complet de migration en une seule conversation :
Étape 1 : sap_find_successor("MARA") via sap-released-objects → 5 CDS views identifiées
Étape 2 : sap_get_object_details("I_PRODUCT", "DDLS") → Level A, composant LO-MD-MM
Étape 3 : GetSource("I_PRODUCT", "DDLS") via vibing-steampunk → Code CDS complet avec champs et associations
Étape 4 : L’agent réécrit le SELECT * FROM MARA en utilisant I_PRODUCT
Étape 5 : WriteSource + SyntaxCheck + Activate via vibing-steampunk → Code poussé dans le système de dev
Conclusion
Le MCP server permet de réduire votre consommation de tokens, d’avoir de meilleurs résultats de recherche, et dispose de fonctionnalités supplémentaires (bulk check, cross-version, filtrage par composant).
Le serveur est open source, n’hésitez pas à proposer des améliorations : github.com/ClementRingot/sap-released-objects-mcp-server
