Très souvent un message d’avertissement ou d’erreur apparait sans être explicite et sans donner des indications sur la procédure à suivre pour compléter la tâche que nous étions en train d’accomplir. Par exemple, “Corrigez les postes erronés” qui peut apparaître lors de la création/modification des commandes d’achats. Si vous n’avez pas un autre message qui peut vous indiquer la cause de l’erreur, alors il y a un moyen très simple de savoir le contexte où le message a été rencontré sans avoir à solliciter un développeur. Voyons voir dans la pratique avec un cas très basique . Je vais aller en transaction MM02- de modification des articles et renseigner un code article qui n’existe pas . Le message d’erreur suivant va s’afficher :
Les deux premiers caractères correspondent à la classe du message ( dans notre cas la classe est M3 ) tandis que les trois derniers numéros correspondent au numéro du message( ici 305).
Quand un message d’erreur est rencontré par le système, la classe du message est stockée dans la variable SY-MSGID et le numéro dans SY-MSGNO. Nous allons identifier dans le code ABAP, quand le message d’erreur est rencontré pour pouvoir analyser le contexte .
Renseigner dans la transaction MM02 un code article qui n’existe pas
Renseigner”/h” dans la zone de commande puis taper entrée . Vous obtenez un message de succès d’activation du mode debug en bas de la fenêtre.
Taper une nouvelle fois sur entrée. La fenêtre ABAP Debugger s’ouvre .Taper Maj + F4 pour créer un point de surveillance sur la variable SY-MSGNO.
Renseigner la saisie de condition libre SY-MSGNO = ‘305’ puis valider
Taper F8, pour continuer l’exécution du programme qui doit sarrêter exactement quand le message d’erreur est rencontré.
A ce stade nous pouvons faire une analyse et voir pourquoi le message d’erreur s’est déclenché. Si on consulte la pile des programmes appelés, on constate que le message est survenu après l’appel du module fonction MARA_SINGLE_READ qui a pour objet la lecture de la table MARA qui stock les données générales des articles.
Des connaissances basiques de ABAP permettent de gagner beaucoup de temps dans l’analyse de problèmes qui prendraient des heures de recherches dans la spécification