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.

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

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.

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

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.

Aide à la recherche manuelle avec multiples champs retournés

En règle générale, les outils standard de gestion des aides à la recherche sont suffisants. Il suffit par exemple de créer une zone de saisie sur un dynpro, de bien la typer selon un élément du dictionnaire de données qui ait lui-même une aide à la recherche ou une table de référence, et le dynpro proposera cette aide à la recherche automatiquement.

La limitation arrive lorsque l’on souhaite que la liste des valeurs possibles d’une zone soit dépendante de la valeur d’une autre zone, ou encore lorsque l’on veut que l’aide à la recherche retourne une valeur pour plusieurs zones.

J’ai récemment eu à traiter cette double problématique, aussi vais-je en profiter pour détailler la solution que j’ai utilisée. Il en existe peut-être d’autres et je ne garantis pas d’utiliser celle que recommanderait SAP, mais au moins, cela fonctionne.

Continue readingAide à la recherche manuelle avec multiples champs retournés