La bible du debugger ABAP !
(Source)
BREAK-POINT
: non user-specific.break <username>
: user-specific.
Les breakpoints dynamiques disparaissent dans tous les cas en fin de session. Ils sont également nettoyés en général en fin de transaction. Cependant, ils peuvent être enregistrés : clic sur le bouton Save
du debugger. Ils persistent alors jusqu'en fin de session.
Les breakpoints dynamiques interrompent en général l'exécution du programme avant l'instruction sur laquelle ils sont placés, sauf dans le cas des exceptions. Dans ce cas là, ils arrêtent l'exécution après que l'exception soit levée.
En utilisant l'option ID <group>
sur les instructions BREAK-POINT
, ASSERT
ou LOG-POINT
on en contrôle l'activation via la SAAB
.
Il est possible de logger dans un but de debug grâce aux 3 instructions.
BREAK-POINT log_text.
Va logger log_text
en SM21
. (NB : log_text doit être de type C, de longueur 40 max.)
ASSERT
et LOG-POINT
vont logger dans le journal SAAB
si le groupe a activé le logging pour chaque instruction.Il est possible de sauter n itérations d'un break-point dans le debugger (onglet break-point). Cela peut-être utile sur un break-point localisé dans une loop.
<enter>
, mais cliquer sur le petit bouton Edit
à côté du champs !!
Le debug s'active de façon classique en client lourd via la commande /h
dans le transaction prompt avant d'exécuter du code (F8, appui sur un bouton, envoi de <enter>
, etc).
Lorsque le noyau SAP rencontre un breakpoint (qu'il soit statique ou dynamique), il ouvre spontanément la fenêtre de debug.
En drag'n'dropant un fichier texte spécifique (ci-dessous) dans une fenêtre SAP, on active le mode debug. Cela est très pratique pour les fenêtres qui n'ont pas de transaction prompt comme les popups par exemple.
[FUNCTION] Command=/H Title=Debugger Type=SystemCommand
Le debugger n'agît que sur le process courant. Il ne rentrera pas dans les instructions qui vont s'exécuter dans un process différent (typiquement : un job submit). Pour debugger de tels jobs, exécuter le programme jusqu'au job submit, mais s'arrêter avant (sur) le job close. A ce niveau, se rendre en SM37
, sélectionner le job plannifié voulu et entrer la commande jdbg
dans le command prompt.
Pour débugger un programme lancé en background depuis la SE38
, poser un breakpoint dans le form (LBTCHENQ)DEQ_JOB
.
Une astuce pour debugger un appel de fonction RFC :
SM50
. Le sélectionner dans la liste et cliquer sur Program/Session → Program → Debugging.indx
à une valeur > 0).BTC
en SM50
pour débugger.4
) : en choisissant l'option 1
.IDOC_OUTPUT_<message_type>*
devrait remonter une sélection pas trop mauvaise (<message_type> est le type de message comme dans le partner profile / outbound parameters).RSNAST00
en débug en précisant les bons paramètres afin de choper le message que l'on vient de créer.