Using ABAP Debugger

Objective

After completing this lesson, you will be able to déboguer un programme ABAP

Lancement à l'aide de l'ABAP Debugger dans ADT

Il n'y a aucun moyen de contourner le fait que des erreurs se produisent dans les programmes. Cependant, ils se manifestent de différentes manières. Lorsqu'un utilisateur démarre une application défectueuse, il se peut qu'elle tombe en panne, que quelque chose d'inattendu se produise ou que rien ne se produise. Du point de vue de l'utilisateur, au niveau de l'interface utilisateur, il est impossible de dire exactement comment et pourquoi cette erreur s'est produite.

En tant que développeur, vous devez examiner le programme plus en détail, ligne par ligne, pour déterminer quelles instructions et combinaisons de valeurs dans les différentes variables de programme ont causé l'erreur. C'est là qu'intervient le débogueur.

Le débogueur dans ADT est un outil de diagnostic important que vous pouvez utiliser pour analyser une application ABAP.

Le débogueur vous permet de déterminer la raison pour laquelle un programme ne fonctionne pas correctement en entrant dans le programme au moment de l'exécution. Cela vous permet de voir les instructions en cours d'exécution et la modification de la valeur des valeurs de variables au fur et à mesure du déroulement du programme.

Pour utiliser le débogueur, vous devez d'abord décider où lancer le processus de débogage. Une façon est de définir des points d'arrêt dans le code source, d'exécuter votre programme et de s'arrêter à ce point d'arrêt défini.

Voici quelques-unes des fonctionnalités disponibles dans le débogueur :

Fonctionnalités de l'ABAP Development Tools (ADT) Debugger

FonctionnalitéDébogueur ADT
Définition des points d'arrêtOui
Points de surveillanceOui (en fonction de la validation)
Points d'arrêt conditionnelsOui
Passer au travers du codeOui
Affichage des valeurs de variablesOui

Déboguer un programme ABAP à l'aide des outils de développement ABAP (ADT)

Lorsque vous déboguez un programme ABAP à l'aide d'ADT, vous utilisez la perspective Déboguer. Il s'agit d'une version personnalisée de la perspective de débogage Eclipse standard, qui contient des vues et des fonctions particulièrement importantes pour le débogage.

Capture d'écran de la perspective Déboguer avec des vues spécifiques au débogage

Voici quelques éléments importants de la perspective du débogueur :

Vue du code source

La vue Code source est la partie centrale de la perspective du débogueur. Il affiche le code source et met en surbrillance la position actuelle dans le programme.

Vue Variables

La vue Variables est également très importante. Cette vue vous permet d'afficher les valeurs actuelles des variables de variables.

Vue Points d'arrêt

La vue Points d'arrêt est affichée en regard de la vue Variables (non sélectionnée dans la figure précédente, Perspective de débogage). Cette vue vous permet d'afficher, de supprimer ou de créer des points d'arrêt. Les points d'arrêt sont des points du programme où le traitement normal est interrompu et le système affiche le débogueur afin que vous puissiez analyser l'état du programme exactement à ce moment-là.

Fonctions de navigation

Lors du débogage d'un programme, vous utilisez les fonctions de navigation pour contrôler l'exécution du code.

Vue de débogage

La vue Débogage en haut à gauche affiche la session de débogage et la hiérarchie des appels. Vous en aurez besoin ultérieurement lorsque vous déboguerez des appels d'unités de modularisation, par exemple des méthodes.

Sélecteur de perspective

Vous pouvez revenir à la perspective ABAP à l'aide des boutons Sélecteur de perspective dans le coin supérieur droit.

Contrôle de l'exécution du code

Certaines fonctions de navigation

Lorsque vous lancez le débogage, utilisez les fonctions de navigation pour contrôler l'exécution du code.

Capture d'écran du bouton « Étape suivante »
Capture d'écran du bouton « Reprendre »

Voici quelques fonctions de navigation importantes :

Étape dans (F5)

Sélectionnez Étape suivante ou sélectionnez F5 sur votre clavier pour exécuter une seule étape. Utilisez cette fonction pour une analyse étape par étape. Si, par exemple, vous voulez voir quel bloc de code d'une structure de contrôle est réellement exécuté.

Reprise (F8)

Cliquez sur Reprendre ou sélectionnez F8 sur votre clavier pour exécuter le programme jusqu'au point d'arrêt suivant.  Si le débogueur n'atteint plus de points d'arrêt, le programme est exécuté jusqu'à la fin et la session de débogage s'interrompt.

Exécuter jusqu'à la ligne (Maj+F8)

Cliquez sur Exécuter jusqu'à la ligne ou sélectionnez Maj+F8 sur votre clavier pour exécuter le programme jusqu'à la position actuelle du curseur. La sélection d'une ligne de code et de cette fonction est une alternative pratique à la définition d'un point d'arrêt, à la sélection de Reprendre et à la suppression à nouveau du point d'arrêt.

Passer à la ligne (Maj+F12)

Cliquez sur Passer à la ligne ou sélectionnez Maj+F12 sur votre clavier pour sauter certaines lignes de code ou revenir à un code déjà exécuté. Cette fonction peut être utile pour simuler ce qui se passerait si un certain morceau de code était supprimé ou pour répéter le débogage un peu de code que vous avez oublié d'analyser la première fois. Gardez à l'esprit qu'il s'agit d'un saut, et non de l'exécution du code. Lorsque vous revenez en arrière, les modifications apportées aux objets de données ne sont pas annulées.

Interrompre

Sélectionnez Interrompre (icône en forme de cadre rouge) si vous avez terminé le débogage et que vous ne voulez pas exécuter le programme restant. La session de débogage s'interrompt immédiatement.

Afficher le contenu des objets de données

Une façon d'analyser le contenu des objets de données dans le débogueur est la fonctionnalité de passage de la souris de l'éditeur ABAP. En mode de débogage, placez le curseur sur le nom d'un objet de données et patientez un instant. Une boîte de dialogue s'ouvre avec le contenu de l'objet de données.

Une autre façon d'analyser le contenu des objets de données dans le débogueur est la vue Variables. Cette vue affiche une liste des objets de données et leurs valeurs actuelles. La liste principale, les variables dites de niveau supérieur, contient certains objets de données intégrés, par défaut. Dans cet exemple, SY-SUBRC et ME. Développez le nœud Locals pour afficher une liste de tous les objets de données variables définis dans le bloc de traitement actuel.

Il existe trois façons d'ajouter des objets de données à la liste principale dans la vue Variables :

  • Dans l'éditeur, double-cliquez sur le nom d'un objet de données.
  • Dans la liste des variables, cliquez avec le bouton gauche de la souris sur le caractère générique <Enter variable> et saisissez le nom de l'objet de données.
  • Cliquez avec le bouton droit de la souris sur une variable dans le nœud Paramètres régionaux et sélectionnez Afficher comme variable de niveau supérieur.

Une façon d'analyser le contenu des objets de données dans le débogueur est la fonctionnalité de passage de la souris de l'éditeur ABAP. En mode de débogage, placez le curseur sur le nom d'un objet de données et patientez un instant. Une boîte de dialogue s'ouvre avec le contenu de l'objet de données.

Une autre façon d'analyser le contenu des objets de données dans le débogueur est la vue Variables. Cette vue affiche une liste des objets de données et leurs valeurs actuelles. La liste principale, les variables dites de niveau supérieur, contient certains objets de données intégrés, par défaut. Dans l'exemple, il s'agit de SY-SUBRC et ME. Développez le nœud Locals pour afficher une liste de tous les objets de données variables définis dans le bloc de traitement actuel.

Il existe trois façons d'ajouter des objets de données à la liste principale dans la vue Variables :

  • Dans l'éditeur, double-cliquez sur le nom d'un objet de données.
  • Dans la liste des variables, cliquez avec le bouton gauche de la souris sur l'espace réservé <Entrer variable> et saisissez le nom de l'objet de données.
  • Cliquez avec le bouton droit de la souris sur une variable dans le nœud Paramètres régionaux et sélectionnez Afficher comme variable de niveau supérieur.

Voici un conseil. Pour supprimer un objet de données de la liste, cliquez dessus avec le bouton droit de la souris et sélectionnez Supprimer.

Points de surveillance

Un simple point de surveillance sur une variable entraîne l'arrêt du programme dans le débogueur chaque fois que la valeur de cette variable change. En ajoutant une condition, le programme s'arrête uniquement lorsque la valeur de la variable change et que la condition est remplie.

Pour définir un point de surveillance sur une variable, double-cliquez sur la variable dans l'affichage du code source, puis cliquez dessus avec le bouton droit de la souris et sélectionnez Définir le point de surveillance. Cela crée un point de surveillance sur cette variable, que vous pouvez ensuite voir dans la vue Points d'arrêt.

Pour ajouter une condition à un point de surveillance, sélectionnez-la dans la liste des points d'arrêt et saisissez la condition dans la zone Condition. Appuyez sur Entrée pour sauvegarder le point de surveillance avec la condition.

Capture d'écran d'un point de surveillance défini dans la vue Points d'arrêt

Si une valeur inattendue d'une variable vous cause des problèmes, vous pouvez suivre sa valeur au cours de l'exécution du programme à l'aide d'un point de surveillance.

Un point de veille simple sur une variable entraîne l'arrêt du programme dans le débogueur chaque fois que la valeur de cette variable change. En ajoutant une condition, le programme ne s'arrête pas à chaque modification de valeur de la variable, mais uniquement dans les cas où la condition est également remplie.

Pour définir un point de surveillance sur une variable uniquement dans le débogueur, mettez la variable en surbrillance dans le code source, puis cliquez dessus avec le bouton droit de la souris et sélectionnez Définir le point de surveillance. Cela crée un point de surveillance sur la variable, que vous pouvez voir dans la vue Points d'arrêt.

Sélectionnez la variable Point de surveillance pour ajouter une condition à un Point de surveillance, sélectionnez-la dans la liste des Points d'arrêt et saisissez la condition dans le champ Condition. Appuyez sur la touche Entrée de votre clavier pour enregistrer le point de surveillance avec la condition.

Pour supprimer le point de surveillance, accédez à la vue Points d'arrêt, cliquez avec le bouton droit de la souris sur la variable Point de surveillance et sélectionnez Supprimer.

Déboguer une application ABAP et définir un point de surveillance

Exercice commercial

Nous allons maintenant voir comment définir un point d'arrêt et créer un point de surveillance.

Remarque

Dans cet exercice, XX fait référence à votre numéro.

Étapes

  1. Ouvrez la classe locale LHC_GROCERY de la classe ZBP_R_XX_GROCERY. Ajoutez un point d'arrêt lorsqu'une valeur est affectée au champ lv_expiration.

    1. Double-cliquez sur la classe ZBP_R_XX_GROCERY dans l'explorateur de projets.

    2. Sélectionnez l'onglet Types locaux en bas de la fenêtre de l'éditeur.

    3. Pour définir le point d'arrêt, double-cliquez dans la marge de la ligne :

      lv_expiration = ls_grocery-Expirationdate.
  2. Exécutez le programme d'application.

    1. Double-cliquez sur la liaison de service ZUI_XX_GROCERY_04 dans l'explorateur de projet pour ouvrir la liaison de service.

    2. Sous Détails de version de service, sélectionnez Épicerie sous Ensemble d'entités et association.

    3. Cliquez sur Aperçu... pour exécuter l'application.

  3. Parcourez le code et consultez les variables.

    1. Cliquez sur Lancer pour afficher la liste des produits alimentaires. Si la liste est vide, cliquez sur Créer et créez au moins un article d'épicerie.

    2. Cochez la case à gauche d'un article d'épicerie et appuyez sur Contrôler pour expiration.

    3. Il y aura une invite dans Eclipse pour passer à la perspective de débogage. Appuyez sur Commutateur. La perspective de débogage s'affiche désormais.

    4. Pour afficher la valeur de lv_Expiration, placez le curseur de la souris sur lv_expiration sur la ligne :

      lv_expiration = ls_grocery-Expirationdate.
    5. Double-cliquez sur lv_expriation pour l'ajouter à la liste de variables à droite de la fenêtre.

    6. Appuyez sur Étape dans (F5) (une seule étape). Examinez la valeur modifiée pour lv_expiration dans la liste des variables.

    7. Passez en revue plus de code et examinez les valeurs de variables qui vous intéressent.

    8. Pour terminer, appuyez sur Reprendre (F8).

      Capture d'écran du bouton Reprendre
  4. Créez un point de surveillance pour une variable.

    Remarque

    Pour que le point de surveillance soit atteint, l'article d'épicerie sélectionné doit avoir une date d'expiration dans le passé. Si ce n'est pas le cas, cliquez sur un poste d'épicerie dans la liste et, dans l'écran de détail, sélectionnez Traiter et définissez la date d'expiration sur une date passée.
    1. Pour créer un point de surveillance sur une variable, répétez les étapes précédentes jusqu'à ce que vous saisissiez la perspective de débogage.

    2. Avec votre souris, cliquez avec le bouton droit de la souris sur lv_expirée. Sélectionnez Définir point de surveillance.

    3. En haut à droite de l'écran, passez de l'onglet Variables à l'onglet Point d'arrêt.

    4. Double-cliquez sur lv_expirée et ajoutez cette condition en bas de la vue.

      = abap.true
    5. Cliquez sur Sauvegarder Sauvegarder (Ctrl-S).

    6. Appuyez sur Reprendre (F8).

  5. Affichez les anciennes et les nouvelles valeurs de la variable de point de surveillance.

    1. Appuyez sur l'onglet Variables.

    2. Développez Point de surveillance LV_EXIPIRED Valeurs. Afficher la valeur récente et la valeur actuelle.

  6. Reprenez l'application et revenez à la perspective ABAP.

    1. Appuyez sur Reprendre (F8).

    2. Cliquez sur le bouton Perspective ABAP en haut à droite de la fenêtre.

    S'entraîner