Catégories
Développement ABAP

Bonnes pratiques officielles ABAP – Utiliser des noms descriptifs

Il y a quelques semaines, je découvrais le dépôt github SAP Clean ABAP.
J’ai commencé à mettre en pratique certains points lorsque ça n’était pas encore le cas. Je vais tâcher d’en donner mon avis point par point, au cours de – probablement – plusieurs articles.

Catégories
Développement ABAP

Lire le contenu d’un dynpro même non transféré

Il peut arriver que l’on ait besoin de lire le contenu d’une zone d’un dynpro alors même qu’aucun évènement n’ait encore transféré ledit contenu au backend.

Par exemple : les valeurs possibles d’une première zone dépendent d’une seconde zone.
Il est aisé de restreindre les valeurs de la première zone si l’utilisateur a renseigné la première puis a validé sa saisie (par exemple par la touche Entrée).
Un tel enchainement aura en effet transféré le contenu de la seconde zone au backend et l’on pourra restreindre les valeurs possibles de la première zone, en ABAP, dans les évènements de l’écran de sélection.

Cependant, lorsque l’utilisateur n’a rien fait d’autre que saisir sa valeur dans le seconde zone puis cliqué directement dans la première, alors le backend ne reprend pas la main et il n’est pas possible d’intervenir sur les valeurs possibles de cette seconde zone.

Catégories
Développement ABAP

De l’intérêt de contrôler le standard… et de bien tester

J’ai récemment dû traiter un bug qui m’a paru étrange de prime abord, et qui fut finalement simple à corriger.

Le contexte
Un programme qui propose un paramètre à l’écran de sélection ; ce paramètre peut recevoir soit un chemin de fichier, soit un nom complet de fichier.
À l’exécution, si aucun nom de fichier n’est donné, alors c’est le programme qui le génère, et l’ajoute au chemin, pour plus tard créer ledit fichier.

Catégories
Développement ABAP

En ABAP, créer un fichier CSV UTF-8 qu’Excel comprend comme tel

Il suffit d’ajouter le Byte Order Mark lors de la création du fichier :
open dataset
     FILE_PATH for output
     in text mode
     encoding utf-8
     with byte-order mark
     ignoring conversion errors
     message ERROR_MESSAGE.