Couplage C# - SAP

Résolu
Gaxx Messages postés 28 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 19 mars 2008 - 11 janv. 2008 à 15:49
doryam Messages postés 7 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 30 octobre 2012 - 30 oct. 2012 à 07:25
Bonjour,


Ne connaissant pas SAP, je sollicite l'expérience de connaisseurs afin de m'éclaircir
sur quelques points.


Contexte :

Je dois développer une interface pour faire des requêtes sur un système SAP


Problématique :

Comment attaquer un système SAP. Il existe au moins deux composants utilisables
: SAP .Net Connector et ERPConnect.net ... Mais leur prix (au moins pour
ERPConnect.net) sont exorbitants !

De plus ne connaissant pas SAP, et compte tenu de sa réputation d'être très
complexe, je n'ai aucune idée sur la complexité de mise en oeuvre de requêtes.


Questions :



<li class="MsoNormal" style="">Existe-t-il des moyens peu
onéreux pour attaquer un système SAP ?</li>
<li class="MsoNormal" style="">Quel SGBD et quel type de
langage SQL utilise SAP ?</li>
<li class="MsoNormal" style="">Quelle peut être la
difficulté de créer des requêtes dans visual studio pour récupérer des
informations dans un système SAP (Je maîtrise les langages tels que SQL
Oracle et SQL Server).</li>

Par avance, merci de vos réponses.

9 réponses

Kniom59 Messages postés 6 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 17 août 2008
18 mars 2008 à 10:52
SAP ne permet pas l'accès direct à sa base de données.
Seuls des partenaires y sont autorisés dans le cadre de développement de produits tels que ERPConnect.net

Voici quelques possibilités qu'offre SAP en standard:

SAP .Net connector (à récupérer ici: https://service.sap.com/connectors)
    expose les fonctions RFC et BAPI (standards et spécifiques client) dans Visual Studio (jusqu'à la version 2003)
    pour visual studio 2005 ou 2008, il suffit (mais ce n'est vraiment pas idéal):
       de créer le wrapper sous Visual Studio 2003 (avec SAP .Net Connector)
       d'utiliser l'assembly dans le projet sous VS2005 ou VS2008

ActiveX pour appel direct RFC
    [file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/WDTAOCX.OCX file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/WDTAOCX.OCX] ou
    [file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtaocxU.ocx file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtaocxU.ocx] (version unicode)
       permet de créer des tables et des structures en mémoire

    [file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtfuncs.ocx file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtfuncs.ocx] ou
    [file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtfuncU.ocx file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtfuncU.ocx] (version unicode)
       permet de gérer un pool de fonctions RFC (standards et spécifiques client) existantes sur SAP

    [file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtlog.OCX file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtlog.OCX] ou
    [file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtlogU.ocx file:///C:/Program%20Files/SAP/FrontEnd/SAPgui/wdtlogU.ocx] (version unicode)
       permet de se connecter au système SAP

L'appel des fonctions RFC et BAPI ainsi que le résultat obtenu dépendent des autorisations dont dispose l'utilisateur (code user utilisé pour se connecter au système SAP).

Pour exécuter des requêtes style "SQL" , il existe une fonction RFC standard : RFC_READ_TABLE
    attention, les autorisations nécessaires sont celles nécessaire à l'utilisation de la transaction SE16
    l'objet d'autorisation S_TABU_DIS est contrôlé
    il est possible que l'interrogation par SE16 soit interdite chez le client (c'est le cas dans la société où je travaille)

Autre solution:
    Créer des queries SAP (SAP Query, Infoset Query)
    Créer une transaction spécifique qui pointe sur le programme standard SAP_QUERY_CALL
    Appeler à distance cette transaction par la fonction RFC : RFC_CALL_TRANSACTION
       s'arranger pour que le résultat de la requête soit un fichier sauvegardé localement

Ce qui précède n'est valable que pour l'interrogation des données!

Pour la mise à jour ou la création, seules les BAPI et fonctions RFC le permettant sont utilisables!

Il est possible de créer une fonction RFC générique (on passe une instruction abap sql en paramètre) mais SAP interdit formellement qu'un programme spécifique client (la fonction RFC générique en serait une puisqu'elle n'existe pas en standard) modifie le contenu des tables standards.

Espérant avoir apporté mon aide,
Cordialement
Laurent
Kniom59 Messages postés 6 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 17 août 2008
18 mars 2008 à 11:19
Je me réponds à moi-même (peut-on modifier ses propres posts?)

Je viens de découvrir ce lien!!!!!

http://blogs.microsoft.co.il/blogs/tamir/archive/2008/03/13/localization-fix-for-sap-esa-explorer-for-visual-studio.aspx

ce produit est encore en version beta
Kniom59 Messages postés 6 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 17 août 2008
18 mars 2008 à 11:31
Gaxx Messages postés 28 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 19 mars 2008
19 mars 2008 à 09:58
Merci de tes réponses [auteur/KNIOM59/1344825.aspx Kniom59],

Le projet est tombé à l'eau, donc je ne me confronterais pas à SAP tout de suite.
Mais les informations que tu as donné seront utiles à d'autres... Ou à moi plus tard

J'ai juste une remarque : dans ta première réponse, les liens que tu as fourni semblent pointer vers ton disque local... Du coup ils ne sont pas valides

Et oui, tu as apporté une aide claire et précise, merci

Cordialement,
Séb

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kniom59 Messages postés 6 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 17 août 2008
21 mars 2008 à 00:34
J'ai volontairement fait pointer les lients vers mon disque local pour une question de droit. Les fichiers en question sont installés avec le serveur de présentation (SAP Fontend) qui est installé sur le poste de l'utilisateur. Ils sont la propriété de SAP AG

Bonne continuation
Et qui sait, tu auras peut être d'autres questions sur SAP auxquelles je repondrai si possible
thimymi Messages postés 1 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 17 juin 2008
17 juin 2008 à 10:36
Bonjour Laurent,

Je suis en train de réliser des rapports basés sur des données SAP (sous Reporting services). Je n'ai plus de problème pour récupérer des données par la fonction RFC_READ_TABLE mais mes utilisateurs voudraient profiter de mes batchs pour récupérer des données de queries. J'ai associé une transaction à la query, enregistré le script de ma transaction avec enregistrement en local du fichier destination mais à l'exécution via RFC_CALL_TRANSACTION, le fichier ne s'enregistre pas. Sais-tu s'il y a une limitation de la fonction RFC_CALL_TRANSACTION ? Peux-tu préciser ce que tu entends par "s'arranger pour que le résultat de la requête soit un fichier sauvegardé localement" ?
Merci d'avance.

Arnaud
Kniom59 Messages postés 6 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 17 août 2008
22 juil. 2008 à 21:03
Bonjour Arnaud

"s'arranger pour que le résultat de la requête soit un fichier sauvegardé localement" signifie que tu dois choisir l'option permettant de sauvegarder localement le résultat.
Le format "DBF" me semble le mieux adapté pour la plupart des besoins de mes collaborateurs.
Il est indispensable de positionner la propriété rfcWithDialog de l'objet connection avec une valeur différente de 1 pour que la boîte de dialogue permettant de choisir le nom et le format du fichier puisse s'afficher (elle a besoin de s'appuyer sur le SAPGUI car ce n'est pas un dynpro comme les autres!)

Cordialement
Laurent
bugmenot2 Messages postés 1 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 5 août 2008
5 août 2008 à 14:54
Bonjour,

Je me permet de continuer ce topic de par la proximité du sujet avec ma question.

En effet, dans le cadre du développement d'un outil d'auto-dépannage des mots de passe, je cherche à développer une application .Net (C#) s'interfaçant avec SAP, permetant à un utilisateur de saisir un nouveau mot de passe lui même. 

Je vais sans doute utiliser le connecteur .Net.

Je n'ai pas de connaissance particulière dans le domaine SAP.

J'ai cru comprendre qu'il était possible d'utiliser la fonction "BAPI_USER_CHANGE", mais je ne suis pas sûr de son utilisation dans mon cas précis.

Toute aide serait la bienvenu.

J'accepte les bouts de codes ! =)
doryam Messages postés 7 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 30 octobre 2012
30 oct. 2012 à 07:25
Bonjour,

J' utilise pour ma part ERPConnect http://www.theobald-software.com/en/products/erpconnect.htm
Sans vouloir faire de la réclame, je trouve ce produit excellent. Il couvre un grand nombre de fonctionnalités permettant de relier l'environnement C# avec SAP.

Doryam
Rejoignez-nous