Bonjour à tous,
J’ai eu récemment le besoin de modifier le titre d’une application FPM dynamiquement.
J’ai dû creuser un petit moment pour trouver comment faire, alors je prends un peu de temps pour mettre sur écran la solution que j’ai appliquée, pour mémoire, et pour le partage.
Je n’ai bien évidemment pas la prétention d’avoir utilisé la meilleure façon de faire ni d’être à 100% dans les bonnes pratiques SAP, mais ça me semble relativement propre.
J’ai utilisé, comme pour un article précédent, l’application controller.
Comme son nom l’indique, il permet de contrôler globalement certains aspects de l’application FPM.
J’ai choisi la méthode AFTER_PROCESS_EVENT pour encapsuler la dynamisation du titre, car cette méthode est appelée tôt dans le processus (c’est-à-dire sans avoir besoin d’une action utilisateur) mais pas trop tôt (afin que mon titre dynamique ne soit pas écrasé par le fonctionnement standard). Je filtre sur l’identifiant de l’évènement à intercepter, pour ne pas avoir à recalculer le titre à chaque clic de l’utilisateur. Cela permet de gagner quelques microsecondes, mais dépend bien sûr de votre besoin.
Le mien, c’est que le titre de l’application contienne une information supplémentaire par rapport au titre appliqué en standard, dans certains cas uniquement. Mais ces cas ne sont pas directement dépendants des actions de l’utilisateur et le titre ne va pas changer au cours de la vie de l’application FPM (mais plutôt d’un chargement à l’autre de cette application).
L’évènement que j’utilise est le APPLICATION_LOADED.
Enfin, le code ABAP proprement dit consiste à utiliser l’API de l’IDR de l’application FPM. Il s’agit de l’Identification Region, et je vous renvois à cette page pour plus d’information à ce sujet. Il faut simplement savoir que c’est la zone de l’application située tout en haut, et qu’elle contient notamment le titre de l’application et des boutons d’action.
L’API de cette région fournit une méthode toute simple, dont je ne vous ferai pas l’affront d’expliquer son utilité : SET_APPLICATION_TITLE.
Pour pouvoir appeler cette méthode, il faut d’abord récupérer l’instance FPM courante. Ceci ce fait par :
lo_fpm = cl_fpm_factory=>get_instance( ).
Puis, nous récupérons l’instance de l’IDR par :
lo_idr ?= lo_fpm->get_service( cl_fpm_service_manager=>gc_key_idr ).
La méthode susnommée est alors directement appelable.
Et… c’est tout.