Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > ERP > SAP
SAP Forum d'entraide sur SAP et sur la programmation avec le langage ABAP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2008, 02h01   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2003
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 16
Points : 11
Points : 11
Par défaut [SAP] Web Service

Hello,

Je cherche un peu d'info sur l'utilisation des webservices, je travaille sous ECC 6 et j'aimerais voir les différentes possibilités pour faire des requêtes sur des bases externes au système (potentiellement que du SELECT)... J'ai pensé aux webservices mais peut être y a t'il plus simple ? Si quelqu'un avait une piste pour m'éclairer :)

Merci d'avance !
kribot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 04h57   #2
Invité de passage
 
Inscription : novembre 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 3
Points : 3
Points : 3
Salut,

Concrètement, un web service n'est ni plus ni moins qu'un function module. Une fois créé via SE80, SE37 tu dois le convertir en web service via la même transaction, ce qui générera la virtual interface. Maintenant, en fonction que tu veuilles consommé ou exposé un web service, il y a différente manip à éffectuer dans R/3 afin que la communication puisse être éffectuer avec le système externe. Si tu dois exposer ton web service, il te faudra te connecter sur le système J2EE afin de fournir à ton partenaire la descrition SOAP / XML via le UDDI.

Maintenant, il existe d'autre méthode de communication propre à SAP. Il est néanmoins fréquemment utile d'utiliser un outils de type XI afin de gérer et de monitorer un maximum de incoming / outgoing.

Cordialement,

Mehdi

Mehdi
mehdil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 09h40   #3
Rédacteur/Modérateur
 
Avatar de cladsam
 
Morgan Bourgeois
Inscription : août 2003
Messages : 1 730
Détails du profil
Informations personnelles :
Nom : Morgan Bourgeois
Âge : 32
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2003
Messages : 1 730
Points : 1 862
Points : 1 862
Citation:
Envoyé par mehdil Voir le message
Salut,

Concrètement, un web service n'est ni plus ni moins qu'un function module. Une fois créé via SE80, SE37 tu dois le convertir en web service via la même transaction, ce qui générera la virtual interface. Maintenant, en fonction que tu veuilles consommé ou exposé un web service, il y a différente manip à éffectuer dans R/3 afin que la communication puisse être éffectuer avec le système externe. Si tu dois exposer ton web service, il te faudra te connecter sur le système J2EE afin de fournir à ton partenaire la descrition SOAP / XML via le UDDI.

Maintenant, il existe d'autre méthode de communication propre à SAP. Il est néanmoins fréquemment utile d'utiliser un outils de type XI afin de gérer et de monitorer un maximum de incoming / outgoing.

Cordialement,

Mehdi

Mehdi
Sujet intéressant et réponse toute aussi intéressante, mehdil, puis-je te demander de bien vouloir détailler la réponse ?
Ce que j'ai du mal à cerner pour ma part, n'ayant eu entre le main que des architecture à client lourd SAP Gui for Windows sur une base d'ERP (ECC6, 4?6 etc). Je suppose que, si l'on défini un service c'est effectivement pour qu'il soit consommé par un système externe ou par SAP lui même.
Quand tu parles de se connecter sur le système J2EE tu veux dire qu'il y a 2 logon séparés ? Je suis désolé si la question est floue mais j'ai encore du mal à voir comment les outils telles que VIsual Composer, ARIS, ou Composite Application framework sont accédés et çà quoi ressemble concrètement l'utilisation des services sous SAP.
Donc si tu avais un petit exemple plus précis je serais preneur
__________________
----------------------------------------------------
Consultant technico-fonctionnel SAP logistique -
Mon site sur developpez
---------------------------------------------------
Anakin Skywalker turn to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.
cladsam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 21h31   #4
Membre expérimenté

 
SAP for Banking
Inscription : juin 2002
Messages : 539
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : SAP for Banking
Secteur : Conseil

Informations forums :
Inscription : juin 2002
Messages : 539
Points : 566
Points : 566
Bonsoir Cladsam,

Les web services peuvent être générés dans une pile ABAP, configurés de même par LPCONFIG/WSCONFIG/WSADMIN (à partir de NW710SP3 avec SOAMANAGER sur double-pile puisque c'est du Java-webDynpro ou à defaut par un report ABAP dont j'ai oublié le nom). La pile ABAP ne possède pas de registre UDDI pour la publication, d'ou la nécessité de créer une connection avec les différentes API de la norme fournient soit par la pile J2EE ou un UDDI externe.

Concernant la question initiale, la problèmatique vient surtout du système source qui fournira le service de requêtes parceque j'imagine que même une lecture simple posera des problèmes de tout genre qu'un connecteur type ODBC doit gérer.

Sinon, côté ABAP et interface DB, il existe aussi la possibilité de relier différentes bases de données (en tant que bases secondaires) au système afin de répondre à cette problèmatique.

Côté Java, le connecteur JDBC serait idéal.
L.
__________________
TRY.
N/A
CATCH cx_root.
ludovic.fernandez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2010, 09h58   #5
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 205
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 205
Points : 177
Points : 177
Bonjour à tous,
Je me permet de relancer le sujet car je ne connais rien du tout aux web services, ni en java ni même en abap objet, j'ai toujours fait de l'abap standard et voilà que le client me balance :

<< Tu peux commencer à fouiller sur les webservices… il faut faire une maquette d’un appel externe à partir du portail pour ouvrir une transaction sur le sapgui >>.

C'est un peu du chinois pour moi

Avez-vous une idée de ce qu'il faut faire/utiliser?

Merci d'avance de votre aide
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2010, 15h25   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2003
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 16
Points : 11
Points : 11
Salut,

Il faut déjà savoir ce qu'il entend par ouvrir une transaction dans le sapgui ?

J'ai eu à créer des objets SAP depuis un portail (CMS) Java, j'ai donc comme medhil l'a expliqué créer un module fonction spécifique en SE80 de type (MF utilisable à distance) puis j'ai créer un service web issu de ce module fonction (clic droit sur le module fonction -> créer -> service web ), je l'ai créer sans sécurité et je gère le login/pass depuis SOAMANAGER (c'est une transaction). Il faut un utilisateur avec certains rôles par exemple moi je lui ai mis les rôles suivants :

SAP_BC_WEBSERVICE_ADMIN_BIZ
SAP_BC_WEBSERVICE_ADMIN_TEC
SAP_BC_WEBSERVICE_CONSUMER
SAP_BC_WEBSERVICE_DEBUGGER
SAP_BC_WEBSERVICE_OBSERVER
SAP_BC_WEBSERVICE_SERVICE_USER

+ les rôles métiers pour accèder aux données voulues

Ensuite y'a quelques manips à faire niveau SICF pour activer les services qui vont bien qui te permettent ensuite d'interroger ton web service.

Exemple chez moi, j'ai eu besoin d'activer tout ça :
/default_host/sap/bc/echo (incluant les sous-noeuds)
/default_host/sap/bc/error (incluant les sous-noeuds)
/default_host/sap/bc/soap (incluant les sous_neouds)
/default_host/sap/bc/srt/wsdl
/default_host/sap/bc/wdvd
/default_host/sap/bc/webdynpro (incluant les sous-noeuds)
/default_host/sap/public/bc/ur
/default_host/sap/public/bc/icons
/default_host/sap/public/bc/icons_rtl
/default_host/sap/public/bc/webicons
/default_host/sap/public/bc/pictograms
/default_host/sap/public/bc/webdynpro/ (incluant les sous-noeuds)
/default_host/sap/public/icman
/default_host/sap/public/icf_info
/default_host/sap/public/icf_info/logon_groups
/default_host/sap/public/icf_info/urlprefix
/default_host/sap/public/myssocntl

Après en java, j'ai utilisé le plugin Axis2 pour générer ma classe web service depuis une définition wdsl (que j'ai obtenu par SOAMANAGER) et ensuite pouvoir l'utiliser librement dans mon code.

En espérant que ça réponde un peu à tes questions
Kévin
kribot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/09/2010, 10h48   #7
Membre confirmé
 
Inscription : août 2009
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 226
Points : 239
Points : 239
Citation:
Envoyé par beuzy Voir le message
<< Tu peux commencer à fouiller sur les webservices… il faut faire une maquette d’un appel externe à partir du portail pour ouvrir une transaction sur le sapgui >>.
J'ai l'impression qu'il y a 2 demandes différentes:

- Un web service c'est comme une BAPI que tu appelles par internet. Soit le web service est sur un autre système, et tu l'appelles depuis SAP (on dit "consommer un web service"), soit le web service est créé sur SAP pour qu'il puisse être appelé depuis un autre système. Donc, il faudrait que tu nous en dises plus, où est le web service

- Habituellement, l'utilisateur se connecte à un système, puis à la transaction. Le portail est un logiciel (l'affichage est souvent via navigateur web) qui ne montre pas la liste des systèmes, mais la liste des transactions tous systèmes mélangés. C'est très souvent connecté à du SSO, c'est-à-dire l'utilisateur se connecte une fois (normalement c'est simplement au démarrage de son ordinateur), et ensuite il n'a plus jamais besoin de s'identifier.

Donc ta phrase "à partir du portail pour ouvrir une transaction sur le sapgui" apparaît bizarre, c'est le principe de base du portail.
Au fait, tout écran SAPGUI est accessible via navigateur web (il y a peut-être quelques rares écrans qui pourraient ne pas marcher, mais c'est très minoritaire).
sandraros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2010, 11h11   #8
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 205
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 205
Points : 177
Points : 177
Bonjour, et merci de vos réponses je reviens avec des precisions (à chaud) :

Il s'agit d'une sorte de hotline : un client appele est saisie son n° de client, l'appel est routé vers un "hotliner" libre à ce moment s'affiche dans l'appli externe à SAP (appli web pour l'instant je n'ai pas plus de détail) le type clique sur le n° de client de la pop up et c'est a ce moment qu'il faut faire entrer en scene le web service qui doit ouvrir la fiche client (SAP) afin que le "hotliner" puisse saisir les infos du client qui est au telephone.
Sachant que l'homme sera connecté à SAP et que le web service doit afficher la transaction sur son écran et pas celui du voisin.
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2010, 17h10   #9
Membre confirmé
 
Inscription : août 2009
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 226
Points : 239
Points : 239
il y a 2 cas possibles:
1) créer l'écran de saisie des données dans l'application externe, il faut donc 2 web services, un pour lire les données de SAP, et un pour les écrire ensuite dans SAP.
2) l'écran est développé dans SAP, donc il n'y a pas de web service du tout.

Dans les 2 cas, il faudrait du SSO.

Vu qu'on t'a dit qu'il fallait du web service j'imagine que c'est la solution numéro 1 qui est déjà retenue.

Puisque c'est SAP qui "publie le web service", c'est assez facile (plus facile que quand on consomme un web service externe):
1) tu crées un module fonction RFC-enabled, et tu le transformes en web service (option dans le menu détail du module fonction, Utilitaires -> Plus d'utilitaires -> Créer web service -> à partir du module fonction).
2) Ça va te créer une définition de web service, que tu peux voir via WSADMIN, et dont tu peux voir l'URL HTTP/HTTPS pour l'appeler depuis l'extérieur
3) Attention il faut que les administrateurs fassent le paramétrage nécessaire pour que les web services fonctionnent (transaction SICF en particulier, cf post de Kévin).

Tu parlais de portail, est-ce que c'est SAP EP?

Enfin, si le client dispose de SAP PI, on peut aussi créer le web service dans PI, et il communiquera tout seul par RFC avec le module fonction dans SAP...
sandraros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2010, 10h49   #10
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 205
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 205
Points : 177
Points : 177
Bonjour,
Alors en fait l'écran n'est pas developpé. Actuellement le webservices est créer et on veut qu'a partir du user (avec le sap connecté) lorsque le web service est déclenché ouvrir un nouveau mode avec la transaction standard sap. Depuis mon poste le module fonction est ok, par contre depuis le web service non.

Pensez-vous qu'il est possible via le MF du web service de faire ouvrir un nouveau mode sur le poste d'un user (connecté à sap)?
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2010, 13h05   #11
Membre confirmé
 
Inscription : août 2009
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 226
Points : 239
Points : 239
on mélange les choux et les carottes là!

par définition, on n'affiche pas d'écran avec un web service (c'est comme pour une BAPI)

si tu veux juste afficher un écran SAP via le navigateur, tu n'as qu'à passer par le webgui, l'émulateur d'écran SAP (tu peux aussi faire du BSP ou du Web Dynpro)
sandraros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2010, 14h23   #12
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 205
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 205
Points : 177
Points : 177
je suis désolée si je mélange , je pense que c'est le besoin qui est tordu :

Le type est sur son appli web il a un bouton qui paf doit ouvrir une transaction SAP via le sapgui.
Mais je ne pense pas que ça soit possible... surtout que ça serait telement plus simple s'il faisait un ctrl+c ctrl+v du n° de client et aller dans sap ouvrir la fiche client avec...
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2010, 15h08   #13
Membre confirmé
 
Inscription : août 2009
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 226
Points : 239
Points : 239
bon on va dire qu'il n'y a pas d'autre choix

tu peux te connecter au SAP GUI pour windows à partir du navigateur web, dixit:
http://help.sap.com/saphelp_nw70/hel...f/frameset.htm

Ici tu trouveras les explications comment faire:
https://forums.sdn.sap.com/thread.jspa?threadID=74529

Je te conseille aussi de lire la note 631198 - Behavior of SAP GUI for Windows in SAP Workplace/Portal, si jamais tu as comme portail SAP EP
sandraros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2010, 11h59   #14
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 205
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 205
Points : 177
Points : 177
Bonjour finalement, nous sommes sur une piste simple :

le web service appel le MF TH_CREATE_FOREIGN_MODE qui permet d'ouvrir la transaction voulu sur le user voulu (en gros j'ouvre XD02 sur le poste du voisin) mon seul souci reste comment passer le n° de client à la transaction ce qui est possible avec ABAP4_CALL_TRANSACTION (mais dans ce cas je ne peux l'ouvrir que sur mon poste...).
Donc le probleme n'est plus le web service en lui meme mais de trouver un MF fusion des 2 ci-dessus .

Merci pour vos infos sur les web service en tout cas.
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2010, 16h01   #15
Membre confirmé
 
Inscription : août 2009
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 226
Points : 239
Points : 239
ça me paraît un peu compliqué comme conception, on ne sait plus qui est client et qui est serveur... Mais bon je ne connais pas les contraintes d'un centre d'appel (mais je les plains en te lisant).

Est-ce qu'il faut vraiment démarrer l'écran à la même "seconde"? On peut pas plutôt envoyer un message pour prévenir l'utilisateur (voir quelle technique utiliser parmi mail, RSS, message instantané SAP, th_popup, liste de travail UWL...), qui peut alors lancer la transaction au moment le plus opportun pour lui? (genre après sa pause urgente!)

un web service est sensé être sans interaction (machine-to-machine, cf wikipedia). Ce que tu dois définir, c'est une toute bête requête HTTP. En n'utilisant plus le terme web service, tu éviteras que les gens te posent des questions liées à des vrais web services. Bon voilà c'est dit
sandraros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2010, 16h07   #16
Membre actif
 
Avatar de beuzy
 
Femme Marianne
ABAP
Inscription : novembre 2008
Messages : 205
Détails du profil
Informations personnelles :
Nom : Femme Marianne
Âge : 27
Localisation : France

Informations professionnelles :
Activité : ABAP

Informations forums :
Inscription : novembre 2008
Messages : 205
Points : 177
Points : 177
Ok,
Je comprend j'ai posé la question car on m'a livré le besoin comme ça :
le client appele et saisie sont code client.
le coup de fil est routé vers un "hotliner" disponible ensuite son application ouvre une sorte de pop-up de prise en charge qui va lancer le web services, web services qui va ouvrir la fiche du client en ligne.
Si le type n'est pas à son poste et bien le client rappelera ou se rerouter.

Désolée de vous avoir fait perdre votre temps alors...mais si on ne pose pas de questions on avance pas non plus.
beuzy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2010, 18h57   #17
Membre confirmé
 
Inscription : août 2009
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 226
Points : 239
Points : 239
excuse-moi je ne voulais pas dire que la demande était du n'importe quoi (c'est juste le mot "web service" qui me chagrine).

Pour faire ce que tu demandes, je me dis qu'il faudrait du RFC où le poste du hotliner sera considéré comme le "serveur RFC" et le système SAP sera le "client RFC". Mais là je ne connais pas trop.
sandraros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2010, 11h13   #18
Membre du Club
 
Avatar de tus01
 
Inscription : octobre 2004
Messages : 183
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2004
Messages : 183
Points : 45
Points : 45
Bonjour,

Je ne penses pas que tu puisses ouvrir un fenêtre particulière sur le SAP Gui de quelqu'un d'autre. Et quand bien même ce serait possible, il faudrait que ton client dispose de certaines autorisations, que l'on ne donne pas forcément à des utilisateurs extérieurs. Et imaginons que 50 client fassent une demande sur la hotline, ça veut dire que ton agent va avoir 50 mods qui vont s'ouvrir en même temps, or je ne pense pas non plus que SAP te permettent d'ouvrir autant de mode de manière simultanée. L'idée, je pense, serait plutôt d'utiliser un web service implémenté coté SAP, qui lui même générerait des messages instantané dans SAP pour informer le hotliner que des nouvelles demandes sont en attente (dans ces messages tu peux transmettre toutes les informations voulue, même le numéro de client).
De plus, un web service ne doit pas être utilisé dans un cas comme celui-ci. Tout comme les fonctions RFC, les web services permettent d'écrire ou lire des données dans des tables SAP, ou exécuter un bout de code.
Dans le portail, si tu veux afficher une transaction particulière de SAP, tu peux toujours utiliser la transaction iView.
tus01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2010, 11h27   #19
Membre du Club
 
Avatar de tus01
 
Inscription : octobre 2004
Messages : 183
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2004
Messages : 183
Points : 45
Points : 45
Pour information, si tu veux développer un outil consommant des web services côté portail (SAP EP), tu as deux possibilités: Java Web Dynpro ou ABAP Web Dynpro. Je ne connais pas encore l'ABAP Web Dynpro mais seulement les Java Web Dynpro. Avec le Netweaver Developer Studio, tu peux développer facilement une application Java qui sera déployée sur le portail, et qui pourra consommer des Web Services (ou fonction RFC/BAPI). Tu trouveras ici un tutoriel qui explique un peu la procédure:
http://wiki.sdn.sap.com/wiki/display...ice+in+Java+WD
L'avantage de cette méthode, à la différence de l'utilisation du pluggin Axis2, c'est que ton Web Service est implémenté comme un modèle de donné que tu pourras utiliser plus facilement dans l'application que tu développes.

La question à se poser est est-ce que le hotliner utilise le portail SAP (SAP EP) ?
tus01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h28.


 
 
 
 
Partenaires

Hébergement Web