Créer une aide à la recherche RFC

Dans certains cas, on peut être amené à vouloir utiliser une aide à la recherche (SE11) en RFC de façon à pouvoir récupérer les résultats de la recherche depuis un système distant.

Cette fonctionnalité s’avère particulièrement utile pour une utilisation dans le cadre d’une application Web Dynpro. En effet, les best-practices Web Dynpro imposent une interaction (sélection/mise à jour) par le biais d’une connexion distante (RFC), et cela y compris pour les aides à la recherche.

Pour ce faire, on pourra proposer l’utilisation d’un OVS (Object Value Selector) qui lui permet aisément d’exploiter une destination RFC puisque l’on peut librement y coder la sélection de données (par l’intermédiaire d’une bapi appelée en RFC). Cela peut être considéré comme une solution envisageable mais peut aussi faire perdre un temps considérable (en plus d’être redondant) lorsque l’on a déjà à disposition une aide à la recherche que l’on pourrait utiliser.

Prenons par exemple le cas d’une aide à la recherche sur les articles telle que la MAT0M.

Si l’on souhaite l’utiliser dans une application Web Dynpro, nous procéderons de la sorte :

Le matchcode est parfaitement utilisable en l’état mais cela présente l’inconvénient de sélectionner les données sur le même système sur lequel l’application Web Dynpro est exécutée :

Exit d’aide à la recherche « /PLMB/SPI_SHLP_F4IF_GEN_EXIT »

Pour utiliser une aide à la recherche via un appel RFC, nous allons utiliser l’exit d’aide à la recherche standard “/PLMB/SPI_SHLP_F4IF_GEN_EXIT” qui permet d’appeler une aide à la recherche sur un système distant par le biais d’une destination RFC.

Le paramètre qui nous intéresse est donc « IVI_SHLP_RFCDEST ».

Il convient donc dans un premier temps de copier ce module fonction afin d’y implémenter la logique de détermination de la destination RFC à utiliser (par le biais d’une méthode statique outil par exemple, ou autre) :

Création de l’aide à la recherche chapeau

L’exit de recherche ayant été copié et adapté, on peut maintenant procéder à la création de l’aide à la recherche chapeau, qui servira à appeler la véritable aide à la recherche à utiliser.

Pour reprendre notre exemple précédent, disons donc que l’on souhaite utiliser l’aide à la recherche MAT0M. La première étape consiste donc à copier cette aide à la recherche, cela en vue d’en récupérer :

  • Sa description
  • Ses paramètres

Nous complèterons cette aide à la recherche en :

  • Supprimant la méthode de sélection
  • Ajoutant l’exit d’aide à la recherche
  • Ajoutant le paramètre spécifiant la véritable aide à la recherche à utiliser sur le système distant

En testant l’aide à la recherche, on peut se rendre compte que les données proviennent du système distant :

Utilisation de l’aide à la recherche chapeau

L’aide à la recherche chapeau « YMAT0M2 » ayant été créée de façon à appeler en RFC l’aide à la recherche MAT0M2, nous pouvons l’implémenter à l’habitude au sein de notre composant WDA :

L’aide à la recherche est disponible au sein de l’application Web Dynpro et retourne désormais les données du système distant :

Cas particulier des aides à la recherche groupées

Certaines aides à la recherche sont un peu plus complexes puisque celles-ci se présentent sous la forme d’aides à la recherche groupées.

Prenons par exemple le cas de l’aide à la recherche « MAT1 » :

Cette aide  la recherche inclut d’autres aides à la recherche :

Ces aides à la recherche incluent elles-mêmes d’autres aides à la recherche :

On arrive sur l’aide à la recherche finale :

Il convient donc ici de procéder comme expliqué précédemment et d’effectuer les modifications adéquates en cascades de façon à utiliser notre aide à la recherche chapeau.

Cela donnerait donc pour ce cas l’enchainement suivant :

On inclut des copies des aides à la recherche incluses :

En cascade, là encore on inclut les copies des aides à la recherche incluses :

On arrive finalement à l’aide à la recherche finale :

De la même façon que vue précédemment, l’aide à la recherche est utilisable dans le composant Web Dynpro :

L’aide à la recherche groupée apparaît correctement et les sous-aides à la recherche sont librement utilisables :

Les données retournées proviennent du système distant :