Le SAP .Net Connector 3.0 (NCo 3.0) offre de nombreuses améliorations par rapport à la version 2.0 de ce produit. Malheureusement, SAP ne propose plus d’exemple de code .NET. Ce blog tente de combler cette lacune en décrivant comment créer un client RFC simple à l’aide de SAP .Net Connector (NCo) 3.0.
L’exemple de programme affiche des détails sur les sociétés définies par SAP. Deux appels BAPI sont impliqués, BAPI_COMPANY_GETLIST et BAPI_COMPANY_GETDETAIL.
Avec SAP .Net Connector 3.0, nous utilisons Microsoft Visual Studio 2010 et Microsoft .Net Framework 4.0 pour créer notre exemple. Avant de commencer, vous devrez télécharger et installer NCo 3.0 (connexion OSS requise).
Mise en place du projet
À l’aide de Visual Studio 2010, créez un nouveau projet Windows Form. Dans les propriétés du projet, veillez à définir Target Framework sur .Net Framework 4.0.
Ajoutez des références à SAP .Net Connector 3.0. Il existe deux DLL, sapnco.dll et sapnco_utils.dll.
Concevoir le formulaire
Ajoutez deux contrôles au formulaire. La première est une List Box, qui contiendra la liste des sociétés SAP disponibles. Le deuxième contrôle à ajouter est un contrôle Property Grid, qui est utilisé pour afficher les détails d’une société SAP particulière lorsque l’utilisateur en sélectionne une dans la zone de liste.
Utilisation d’App.Config pour définir les connexions SAP
Il existe plusieurs méthodes que vous pouvez utiliser dans vos solutions pour définir un hôte SAP particulier. Pour cet exemple, nous utilisons un fichier app.config pour définir notre hôte SAP.
The SAP .Net Connector 3.0 includes sample app.config files. For the RFC client, be sure there is a sectionGroup definition for < ClientSettings >.
L’hôte SAP est défini par la section destinations. Dans la destination, le champ Nom identifie cette entrée app.config dans notre code de programme. Spécifiez le nom d’utilisateur, le mot de passe, le nom d’hôte SAP, le client et le numéro de système appropriés dans la section de destination.
The BAPIs
Utilisez la transaction SAP SE37 pour déterminer les paramètres des fonctions BAPI_COMPANY_GETLIST et BAPI_COMPANY_GETDETAIL. Cela nous indiquera quels paramètres doivent être transmis et où trouver les résultats renvoyés à notre code.
le code
Lors de l’événement de chargement du formulaire, nous souhaitons remplir notre zone de liste avec les sociétés définies par SAP.
- Acquérir une RfcDestination valide à utiliser. Use method RfcDestinationManager.GetDestination() to do this. GetDestination() requires a parameter to determine which SAP host to refer to. Transmettez le nom de l’hôte SAP que vous avez précédemment défini dans le fichier app.config. (Line 60)
- Maintenant que nous disposons d’un objet RfcDestination valide, nous devons accéder au référentiel SAP. Le référentiel contient des informations sur les appels BAPI que nous allons effectuer. Le RfcRepository est un attribut d’un objet RfcDestination. (Line 62)
- À l’aide de l’objet RfcRepository, obtenez une référence au SAP BAPI en appelant la méthode RfcRepository.CreateFunction(). Transmettez le nom de la fonction souhaitée en tant que paramètre de chaîne à CreateFunction(). Cette méthode renvoie un objet que nous pouvons utiliser pour configurer les paramètres, appeler la fonction et récupérer les résultats.
- Nous pouvons maintenant effectuer les appels RFC dans SAP. À l’aide de l’objet IRfcFunction renvoyé par CreateFunction(), appelez la méthode Invoke() en passant notre objet RfcDestination en paramètre. Cela effectuera l’appel RFC dans SAP et fournira les résultats via notre objet IRfcFunction. (Line 68)
- La fonction SAP BAPI_GET_COMPANYLIST renvoie une table des enregistrements de l’entreprise. Nous utilisons une instance d’un objet IRfcTable que nous récupérons en appelant la méthode GetTable() sur l’objet IRfcFunction. Pour obtenir la table souhaitée, transmettez le nom de la table à la méthode GetTable(). (Line 70)
- Nous avons maintenant une instance d’un objet IRfcTable qui contient des informations sur l’entreprise à travers lesquelles nous pouvons parcourir. Il est possible de parcourir les données en définissant la propriété CurrentIndex sur la table renvoyée. Pour une ligne particulière du tableau, il est possible d’accéder aux valeurs à l’aide de la méthode GetString(). (Lines 75-79)
- Pour chaque entreprise, obtenez le CompanyNumber et utilisez-le comme paramètre pour la fonction SAP BAPI_COMPANY_GETDETAIL. BAPI_COMPANY_GETDETAIL renvoie des informations détaillées sur cette société SAP particulière. Les techniques sont les mêmes que précédemment, avec l’étape supplémentaire consistant à utiliser la méthode SetValue() sur l’objet IRfcFunction pour transmettre le numéro d’entreprise en tant que paramètre. (Lines 78-84)
- BAPI_COMPANY_GETDETAIL renvoie des données en tant qu’instance de l’interface IRfcStructure. Accédez aux données de champ individuelles de l’enregistrement de l’entreprise, à l’aide de la méthode GetString() de l’instance d’objet IRfcStructure. (Lines 88-99)
- Extrayez les détails de l’entreprise comme vous le souhaitez. Ajoutez-les à un objet que vous créez, puis ajoutez cet objet au contrôle List Box. (Line 101)
Le reste du code est une programmation Windows Forms standard. Votre code devra câbler les événements modifiés de la zone de liste afin que la grille de propriétés affiche les détails de la société sélectionnée.