Bonjour à tous,
Dans cet article, je vais tâcher de décrire la procédure à suivre pour appeler manuellement l’écran de dialogue d’une aide à la recherche, dans un contexte FPM et Web Dynpro.
Plus précisément, voici le besoin : nous avons déjà une zone de saisie pour laquelle une aide à la recherche sous forme de Web Dynpro spécifique a été créée (si le temps me le permet, j’écrirai un autre article sur ce sujet). De fait, lorsque l’utilisateur clique sur l’icone du matchcode, ou utilise le fameux raccourci-clavier F4, c’est le Web Dynpro spécifique qui est affiché, au lieu de la classique popup d’aide à la recherche standard.
Le client avait demandé explicitement à remplacer l’affichage standard, mais après coup, il s’est aperçu que la gestion des favoris (liste de valeurs personnelles) notamment, était bien pratique. Il a donc fallu trouver le moyen de concilier le Web Dynpro spécifique avec les fonctionnalités standard.
Nous ne pouvions bien sûr pas re-développer de zéro une fonction de favoris, ni essayer de recopier les écrans standard pour les intégrer au spécifique. La solution retenue a donc été d’ajouter un accès vers le matchcode standard à partir du Web Dynpro spécifique.
Concrètement, l’utilisateur dispose désormais d’un bouton en plus qui permet d’afficher le dialogue d’aide à la recherche classique.
J’ai initialement pensé que ce serait difficile, mais une fois trouvée la bonne méthode, c’est finalement assez simple.
Il suffit en effet de créer le bouton sur le Web Dynpro, et dans la méthode associée à l’action du clic, effectuer cet appel :
cl_wdr_value_help_handler=>handle_value_help(
context_element = lo_elem
context_attribute = 'MABNR'
is_read_only = abap_false
skip_ddlb = abap_true ).
où lo_elem
correspond à un élément du contexte qui devra recevoir le résultat de l’aide à la recherche et qui porte également l’élément de données duquel l’aide à la recherche sera dérivé (j’avoue ne pas avoir cherché comment transmettre une aide à la recherche non affectée à une élément de données).
Et c’est tout.
Ci-dessous, quelques captures d’écran pour illustrer le propos :
Ici on peut voir comment est configuré le bouton. L’important est juste l’action associée.
Notez bien qu’il s’agit d’une première ébauche, d’un proof-of-concept, d’où le texte en dur et la propriété visible bindée à un booléen test.
Ici, le code de la méthode exécutée lors d’un clic sur le bouton cité ci-dessus.
On retrouve l’appel à la méthode HANDLE_VALUE_HELP. Suivie de deux mises à jour d’attribut du Web Dynpro.
Il s’agit d’abord de l’initialisation de la zone qui va porter le résultat de l’aide à la recherche, puis de la mise à jour d’un flag qui permettra de savoir si cette aide à la recherche a effectivement été appelée ou non.
Ces deux points font partie d’une logique annexe qui permet de refermer automatiquement le Web Dynpro spécifique dès que l’utilisateur a validé sa recherche via le matchcode.
J’en dirai probablement plus à ce sujet dans un autre article.