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/01 18:05] ginkoabap:coding_tips [2018/05/30 10:55] (current) ginko
Line 4: Line 4:
  
 __Astuce de l'astuce__ : Pour déterminer le programme d'origine de la donnée et son accessibilité, il est pratique d'utiliser le debugger : vérifier que la variable contient le contenu désiré en remontant dans la stack d'appel puis vérifier que la variable liée au programme (''(PROG)VAR'') est disponible dans le programme désiré. __Astuce de l'astuce__ : Pour déterminer le programme d'origine de la donnée et son accessibilité, il est pratique d'utiliser le debugger : vérifier que la variable contient le contenu désiré en remontant dans la stack d'appel puis vérifier que la variable liée au programme (''(PROG)VAR'') est disponible dans le programme désiré.
 +
 +__Astuce de l'astuce 2__ : Appeler un FORM bidon pour provoquer l'exécution du programme principal et pouvoir ainsi récupérer des variables.
 +
 +[[http://sapport.blogspot.fr/2013/11/how-to-read-others-program-data.html|Source]]
  
 <code abap>FIELD-SYMBOLS <fs> TYPE ANY. <code abap>FIELD-SYMBOLS <fs> TYPE ANY.
Line 19: Line 23:
 ASSIGN (var_name) TO <fs>. ASSIGN (var_name) TO <fs>.
 </code> </code>
 +===== 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.)
 +===== 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.1412179537.txt.gz · Last modified: 2014/10/01 18:05 by ginko