September 09, 2010     | Register
  
26

Notion de base

A LA DEMANDE PRESSENTE DE CERTAINS MEMBRES JE PUBLIE CE BROUILLON. DESOLE !!!

Avant de faire le tour des moyens d'intégration SAP, il me parait pertinent de revenir sur quelques points clés.

Le concept du Client/Server :

Dans le domaine de l'intégration un serveur peut etre à la fois serveur et à la fois client pour se connecter à une autre application. Donc on se doit d'avoir une vue moins centralisée mais comprendre ceux deux termes de la manière suivante.

  • Le serveur est l'application qui met à disposition d'applications tiers ses fonctionnalités, sa logique métier, ses services.
  • Le client est le système qui demande une information  à un serveur. C'est lui l'acteur, le trigger.

Puis la notion de tranport doit etre aussi comprise. C.à.d comment techniquement le client se connecte à un serveur. Ce peut se faire de nombreuses manières, mais dans un contexte d'intégration avec SAP on a surtout ses moyens :

  • RFC (Remote Function Call) un protocole aussi connu sous le nom de RPC ou CPI/C. C'est le transport natif de SAP et celui qui est à la fois le plus performant et le plus sur.
  • http (HyperText Transfer Protocol) le protocole utilisé par Internet
  • smtp (HyperText Transfer Protocol) un protocole pour l'envoi d'email.
  • File, dans ce cas cela consiste à écrire sur le disque dur, cela peut se faire directement quand les deux applications à connecter sont sur la même machine ou via le réseau via des protocoles tels que SAMBA (http://fr.wikipedia.org/wiki/Samba_(informatique))
  • etc...

Une autre notion à comprendre, est ce qu'on transporte le type de message. Là nous avons plusieurs formats aussi souvent utilisés.

  • Fichier texte ou fichier plat
  • Les CVS ou fichiers Excel.
  • Les XML (http://www.w3schools.com/xml/default.asp)
  • Les SOAP, des messages écrits en XML respectant un format spécifique ( http://www.w3schools.com/soap/default.asp )
  • Les BAPI et RFC (Le contenu des appels qui permet d'invoquer ces fonctions ABAP).
  • Les iDOC, des messages sous la forme d'enveloppe avec un emetteur un destinataire des intermédiaire et bien sur un corps de message.
  • etc...

Et enfin une dernière notion à saisir est de comprendre ce qui est synchrone et asynchrone. Quand on envoie un message, on invoque une fonction, on est synchrone quand on attend le résultat et qu'on continue son process, et on est asynchrone quand on se contente de s'assurer que le message a été envoyé mais on n'attend pas la réponse. J'appelle la BAPI_SALESORDER_GETLIST, je reçois la liste des commandes et je remplis mon formulaire. J'envoie un bon de commande, je n'attends pas qu'il soit traité. Je me contente de m'assurer qu'il a été reçu.

Il faut comprendre qu'un process est asynchrone au niveau du métier, mais techniquement le transport est fait de manière synchrone. Par exemple si j'envoie un iDoc, SAP ALE (Application Link Enable) va utiliser des fonctions de transports synchrones pour que le système destinataire créer un nouvelle IDOC une copie de l'iDOC du système source. Techniquement chaque morceau des iDOC sont transportés de manière synchrone. Mais si je passe des nouveaux tarifs par exemple pour une mise à jour de MARA. Le IDOC transféré ne sera pas traité forcément dés la réception et ALE ne va pas attendre que cela soit fait pour dire que l'IDOC a bien été transféré.

En résumé on doit savoir qui appelle qui, qu'est ce qu'il envoie comme type de message, avec quel moyen technique et puis avec quelle contrainte de temps réalité (synchrone ou asynchrone).

 

Connection RFC à SAP

On distingue deux cas. Soit SAP est serveur, soit SAP est client... Mais à partir de là tout est possible y compris d'avoir une application tiers qui soit à la fois client et serveur. C'est le cas par exemple de HRPDC. HRPDC est l'interface pour SAP HR des systèmes de pointages. Quand SAP a besoin de récupérer les pointages il est client et quand le système de pointage à besoin de savoir qui est autorisé et qui a quel badge SAP est le serveur.

Depuis trés longtemps, SAP grace à RFC est ouvert aux systèmes tiers. On est ici dans le royaume des connecteurs SAP (http://service.sap.com/connectors), sauf que ces connecteurs ne sont pas des connecteurs aux sens des EAI comme Microsoft BizTalk, mais en fait des API de développement.

On a ainsi :

  • Le JCo (Java Connector) qui supporte depuis longtemps tous les versions de JAVA.
  • Le .net connector qui a l'immense défaut de fonctionner qu'avec Microsoft Visual Studion 2003. Heureusement un équivalent existe (http://www.erpconnect.net)
  • Le DCOM qui lui marche aussi bien en VBA que sur Visual Studio 2003/2005 et d'autres EDI mais qui est beaucoup moins ergonomique que le .net connector.
  • et enfin une librarie C (ne rigolez pas cela sert encore vachement).

 L'avantage avec ces connecteurs c'est qu'on peut développer aussi bien des clients que des serveurs (sauf DCOM).

Le Java Connector (ou Jco)

Le Java Connector est un JAR. Qui peut etre utiliser aussi bien avec Eclipse qu'avec NetBeans... La bonne nouvelle est qu'une version améliorée est disponible avec NetWeaver Studio (https://www.sdn.sap.com/irj/sdn/nw-devstudio)

Autre bonne nouvelle, sur sap-integration/b-integration.net on a déja parlé de cela : http://www.sap-integration.net/Default.aspx?tabid=433&articleType=CategoryView&categoryId=140&language=fr-FR

 On vous propose aussi un forum d'entre-aide.... (http://www.sap-integration.net/Default.aspx?tabid=405&view=topics&forumid=183&language=fr-FR)

Le .net connector (ouille ouille ouille)

Le .net connector est en fait un plugin pour Visual Studio 2003. Malheureusement les sources ne sont pas disponibles (contrairement au JCo ou c'est trés facile de récupérer les sources). Et Malheureusement SAP ne le maintient pas.

Concretement cela veut dire que si on bosse avec une version plus récente de Visual Studio, on doit installer un Visual Studio 2003 avec le framework .net 1.1, créer sa DLL. Puis l'ajouter dans ses références dans son projet Visual Studion 2005/2008.

Maintenant une bonne nouvelle : cela fait trés longtemps que je bosse la dessus, donc je vous propose un premier article ( http://www.sap-integration.net/Default.aspx?tabid=433&articleType=ArticleView&articleId=283&language=fr-FR ) ainsi qu'un forum pour l'entreaide (http://www.sap-integration.net/Default.aspx?tabid=405&view=topics&forumid=184&language=fr-FR)

Le .net connector qui a l'immense défaut de fonctionner qu'avec Microsoft Visual Studion 2003. Heureusement un équivalent existe (http://www.erpconnect.net)

 

Web Services et services Web

Depuis quelques versions SAP propose un serveur Web, le SAP WebAS comme Web Application Server. Le webas permet de faire des intégrations trés simplement avec différentes approches.

HTTP POST

Il est ainsi possible de faire des pages web en BSP (une sorte de mélange d'ABAP OO et de HTML) qui depuis une application extérieure reçoit des enveloppe HTTP Post. Par exemple c'est un moyen facile d'interfacer SAP à Microsoft CRM.

Bien sur depuis Java ou .net il est possible d'envoyer des enveloppes HTTP post avec les bonnes classes....

XML

Autres possibilités, trés simple à mettre en oeuvre, utilisé le SAP WEB pour produire des XML dynamiques.

On a un code comme celui ci...dans le layout

<?xml version="1.0" encoding="utf-8"?>
<%=XMLSTRING%>

Et dans la partie ABAP on génére son code XML dynamiquement..

Par exemple :

CONCATENATE '<' STRVAL1 '/>' INTO XMLSTRING....

Je vous propose d'ailleurs sur mon blog un exemple : http://www.sap-integration.net/Default.aspx?tabid=519&EntryID=35&language=fr-FR

Cette technique permet de proposer des XML Feeder trés simplement....

Ainsi un partenaire qui a besoin d'importer des données peut le faire directement en invoquant un url pointant sur le SAP WEBAS...

 

SAP et Webservices

Autre innovation de SAP et le service SOAP/RFC sur le SAP WebAS. Il est ainsi donc possible d'exposer des BAPI et RFC et des groupes de fonction comme des webservices SOAP avec les WSDL. Toutefois cette approche pose quelques problemes :

  • Sécurité.
  • Compatibilité avec .net. Il est préférable d'utiliser le framework 3.5 et il peut etre nécessaire d'importer le WSDL et de le corriger à la main en enlevant le s au tag parameters.
  • Une performance moindre qu'un accés RFC et des risques de timeout à gérer dans la config du webas.

 Pour mettre cela en place à condition d'avoir une version ECC 6, vous devez activer le webas, (transaction SICF) et activer le service WSDL et SOAP/RFC. Puis dans la transaction SE37 dans UTILITIES/More UTILITIES vous trouverez le wizard pour transformer votre fonction en webservice....

Note : N'oubliez pas qu'il est maintenant possible en ABAP d'invoquer des webservices extérieurs et faire des request HTTP, pour faire que votre programme ABAP soit client d'un serveur WEB Exterieur.

 

Fichiers et FTP

Une autre méthode pour intégrer un systeme tiers avec SAP est le dépot de fichier. Cela consiste via un serveur FTP ou encore via un partage de répertoire réseau via par exemple SAMBA (http://us1.samba.org/samba/). Il suffit alors de configurer d'abord le systeme d'exploitation, en particulier vérifier les autorisations, puis il suffit alors d'écrire des programmes en ABAP charger de lire les fichiers déposés dans les dits répertoires (lire aussi le code suivant : http://www.sap-basis-abap.com/sapac012.htm).

Il faut savoir depuis qu'on peut écrire aussi des clients FTP en ABAP (exemple : http://www.sap-img.com/ab003.htm)

 

Actions: E-mail | RSS comment feed |

Comments

# labruju
Thursday, December 11, 2008 10:52 AM
Merci JFO pour ce brouillon...

Quand j'aurai avancé dans mon mémoire je propose qu'on le complète et pourquoi pas, publier l'entièreté de mon mémoire sur ton site !
# jfo
Thursday, December 11, 2008 10:57 AM
avec plaisir ...
# labruju
Thursday, December 11, 2008 11:00 AM
Peut-être que quand j'aurai plus avancé on peut une fois se rencontrer

bien à toi
# philippe
Friday, March 13, 2009 12:37 PM
merci du brouillon
# talata
Tuesday, July 14, 2009 11:01 AM
Merci.

Post Comment

Only registered users may post comments.