ABAP Cloud avec l’IA : Analyses et comparaisons

Traitement en cours…
Terminé ! Vous figurez dans la liste.

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èreLLM seulWeb searchMCP server
Tokens consommés~200~5 000~550
Successeurs trouvés1/51-2/55/5
Clean Core LevelInconnuParfois mentionnéOui
Comparaison cross-versionNonNon2020 → latest
Risque d’hallucinationÉlevéMoyenNul
Données à jourCutoff LLMDépend des blogsGitHub 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èreLLM seulWeb searchMCP server
Objets trouvés0-11035
Résolution d’abréviations SAPNonNonOui (fuzzy matching)
Filtrable par composant (MM-IM, EWM…)NonNonOui
Filtrable par type (DDLS, BDEF, CLAS…)NonNonOui
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

Laisser un commentaire