dimanche 27 janvier 2013

URL d'une image du MIME et NWBC for HTML

NWBC for HTML

Rappelez-vous, le NetWeaver Business Client est un nouveau client pour les écrans SAP Gui, Web Dynpro, etc... Naturellement, SAP a laissé une (toute petite) latitude pour personnaliser l'interface utilisateur à l'aide d'une image. (cf. capture ci-dessous dans la partie inférieur du bandeau latéral gauche)


MIME Repository

C'est où sont stockés les fichiers tels que les images, feuilles de style, Javascript... qui ont vocation a être utilisés sur le Web (dans les BSP, Web Dynpro, Web Templates BI, etc...). Il arrive même qu'on y stocke des fichiers (aide en ligne par exemple) au format PDF ou encore des .doc et .xls, bref ne nous limitons pas ! :)
Pour accéder à ces documents directement, ce n'est pas évident (non pas que ce soit impossible en standard comme on le verra). Et surtout, que de circonvolutions nécessaires alors que le chemin "naturel" est tout trouvé : celui du MIME !

Source : Help SAP

Configuration de NWBC

Une table de configuration est mise à disposition : NWBC_CFG (anciennement, on utilisait plutôt NWBC_CONFIG). Cette table contient des paramètres d'affichage dont vous trouverez la liste à cette adresse :


Le paramètre qui nous intéresse est BRANDING_IMAGE que l'on va associer à une URL de notre crû pointant vers un service ICF maison. Notez comment l'URL paramétrée (http://<serveur>:<port>/sap/zmime/SAP/PUBLIC/<votre fichier>) contient le nom du service suivi du chemin vers le fichier du logo stocké dans le MIME Repository.

Service ICF

Basiquement, c'est derrière ce service que se passe tous les traitements des requêtes HTTP(S).
Nous en créons donc un nouveau avec un gestionnaire de service sous la forme d'une classe ABAP OO et y implémentons l'interface IF_HTTP_EXTENSION.
Le coeur de la solution repose sur l'appel au module fonction standard 'SDOK_GET_PHIO_ACCESS' qui retourne le contenu du fichier du MIME Repository. Il ne nous restera plus qu'à renvoyer ce contenu dans la réponse HTTP.

Voici le code complet de classe (bien entendu, si un membre de votre équipe ou vous-même étiez amenés à l'utiliser en Production, nous nierons avoir eu connaissance de vos agissements...). Il faut créer une classe ZCL_HTTP_MIME en implémentant l'interface IF_HTTP_HANDLER.


Pour ceux qui ont tout suivi et qui se demande comment faire pour appeler cette même image de façon standard, sans une lilgne de spécifique, le fameux module fonction renvoie également une URL d'appel mais de la forme :
http://:/sap/bc/contentserver/?get&pVersion=0045&contRep=MIME&docId=F2E0E661BCA5F1ED291A78156D38AD2022E0E661BCA5F1ED291A78156D3BF5202&compId=



1 commentaire:

Abdellah AOUAD a dit…

Bonjour Guillaume,
Très bon post et utile surtout. En complément, dans certain cas, le client demande à changer (ou cacher) le logo SAP apparaissant en haut à gauche. Pour ma part, je n'ai pas trouvé de solution que de rajouter du texte à coté (le nom de la société par exemple), il semblerai que le logo soit impossible à enlevé (si je me rappelle bien il est codé en dur dans l'abap !).
@+
Abdellah AOUAD