Gaxx
Messages postés28Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention19 mars 2008
-
11 janv. 2008 à 15:49
doryam
Messages postés7Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention30 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>
Kniom59
Messages postés6Date d'inscriptionmardi 18 mars 2008StatutMembreDernière intervention17 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
Gaxx
Messages postés28Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention19 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 ?
Kniom59
Messages postés6Date d'inscriptionmardi 18 mars 2008StatutMembreDernière intervention17 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és1Date d'inscriptionlundi 13 janvier 2003StatutMembreDernière intervention17 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.
Kniom59
Messages postés6Date d'inscriptionmardi 18 mars 2008StatutMembreDernière intervention17 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!)
bugmenot2
Messages postés1Date d'inscriptionsamedi 6 mai 2006StatutMembreDerniè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.
doryam
Messages postés7Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention30 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.