User Tools

Site Tools


abap:coding_tips

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
abap:coding_tips [2014/10/16 18:17] – [Attraper un message d'erreur dans un call function] ginkoabap:coding_tips [2018/05/30 10:55] (current) ginko
Line 25: Line 25:
 ===== Attraper un message d'erreur dans un call function ===== ===== Attraper un message d'erreur dans un call function =====
 Il arrive que des modules fonction génère des erreurs directement via des ''MESSAGE EXXX(foo)'' plutôt que des ''RAISE EXCEPTION''. Dans ce cas, pour ne pas que tout le process soit interrompu (y compris le programme appelant, quand bien même il serait exécuté par un user technique en background), il faut attraper le message. Par chance le moteur ABAP génère une exception ''ERROR_MESSAGE'' à l'appel toute l'instruction ''MESSAGE EXXX(foo)''. Il s'agit donc simplement d'ajouter ''EXCEPTIONS error_message = 1.'' à l'appel du FM récalcitrant ! (ça marche à tous les coups, même si la signature du FM ne contient aucune exception.) Il arrive que des modules fonction génère des erreurs directement via des ''MESSAGE EXXX(foo)'' plutôt que des ''RAISE EXCEPTION''. Dans ce cas, pour ne pas que tout le process soit interrompu (y compris le programme appelant, quand bien même il serait exécuté par un user technique en background), il faut attraper le message. Par chance le moteur ABAP génère une exception ''ERROR_MESSAGE'' à l'appel toute l'instruction ''MESSAGE EXXX(foo)''. Il s'agit donc simplement d'ajouter ''EXCEPTIONS error_message = 1.'' à l'appel du FM récalcitrant ! (ça marche à tous les coups, même si la signature du FM ne contient aucune exception.)
 +===== Attraper un message d'erreur dans un call method =====
 +C'est tout simplement pas possible MDR !!
 +//Bon y'a tout de même une astuce qui fonctionne : encapsuler l'appel de la méthode dans un MF et catcher l'exception ''ERROR_MESSAGE''... Ninja Style//
 +===== Lire la stack d'appel en cours d'exécution =====
 +[[http://zevolving.com/2013/04/read-call-stack-to-check-on-called-program/|Sauce]]
 +
 +Le FM ''SYSTEM_CALLSTACK'' permet d'accéder à la callstack au runtime. Très intéressant pour savoir qui a appelé votre prog/FM/method, etc.
 +===== Afficher un indicateur de progression =====
 +Utiliser le FM ''SAPGUI_PROGRESS_INDICATOR''.
 +===== Sy-tabix VS Sy-index =====
 +Sy-tabix est seté lors d'une lecture de table interne "indexée" (''READ TABLE'', ''LOOP AT'', ''APPEND'', ''COLLECT'', ''SEARCH''). //Ne fonctionne pas sur des tables interne ''HASHED'' !//
 +
 +Sy-index est un compteur d'itération (''DO'', ''WHILE'' ).
abap/coding_tips.1413476264.txt.gz · Last modified: 2014/10/16 18:17 by ginko