Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’adaptateur Microsoft BizTalk pour mySAP Business Suite surface les RFCs sur le système SAP en tant qu’opérations qui peuvent être appelées par un programme client. Dans le modèle de service WCF, ces opérations sont appelées en tant que méthodes d’une classe cliente WCF générée. Vous pouvez utiliser le plug-in Visual Studio Add Adapter Service Reference pour générer une classe de client WCF qui contient des méthodes pour chaque RFC que vous souhaitez appeler dans votre code. Le plug-in Add Adapter Service Reference génère également des types .NET pour encapsuler les paramètres et les types de données utilisés par chaque RFC. Vous pouvez ensuite créer une instance de cette classe cliente WCF et appeler ses méthodes pour appeler les RFC cibles.
Les sections suivantes vous montrent comment appeler des RFC sur le système SAP à l’aide de l’adaptateur SAP.
Classe cliente WCF
L’adaptateur SAP expose toutes les opérations RFC sous un seul contrat de service, « Rfc ». Cela signifie qu’une seule classe de client WCF, RfcClient, est créée pour toutes les opérations RFC que vous souhaitez appeler. Chaque RFC cible est représenté sous la forme d’une méthode de cette classe. Dans chaque méthode :
Les paramètres d’exportation SAP sont exposés en tant que paramètres sortants
Les paramètres de modification SAP sont exposés en tant que paramètres ref .
Les types SAP complexes tels que les structures sont exposés en tant que classes .NET avec des propriétés qui correspondent aux champs du type SAP. Ces classes sont définies dans l’espace de noms suivant : microsoft.lobservices.sap._2007._03.Types.Rfc.
Le code suivant montre une partie de la classe RfcClient et la méthode qui appelle SD_RFC_CUSTOMER_GET sur le système SAP.
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
public partial class RfcClient : System.ServiceModel.ClientBase<Rfc>, Rfc {
...
/// <summary>The metadata for this RFC was generated using the RFC SDK.</summary>
/// <param name="KUNNR">Customer number</param>
/// <param name="NAME1">Name of the customer</param>
/// <param name="CUSTOMER_T">Table of the selected customers</param>
/// <returns></returns>
public void SD_RFC_CUSTOMER_GET(string KUNNR, string NAME1, ref microsoft.lobservices.sap._2007._03.Types.Rfc.RFCCUST[] CUSTOMER_T) {...}
}
Comment créer une application cliente RFC
Pour créer une application cliente RFC, procédez comme suit.
Pour créer une application cliente RFC
Générez une classe RfcClient . Utilisez le plug-in Visual Studio Add Adapter Service Reference ou l’outil ServiceModel Metadata Utility (svcutil.exe) pour générer une classe RfcClient qui cible les RFC avec lesquelles vous souhaitez travailler. Pour plus d’informations sur la génération d’un client WCF, consultez Générer un client WCF ou un contrat de service WCF pour les artefacts de solution SAP.
Créez une instance de la classe RfcClient générée à l’étape 1 et spécifiez une liaison cliente. La spécification d’une liaison cliente implique la spécification de la liaison et de l’adresse de point de terminaison que le RfcClient utilisera. Vous pouvez le faire impérativement dans le code ou de manière déclarative dans la configuration. Pour plus d’informations sur la spécification d’une liaison cliente, consultez Configurer une liaison cliente pour le système SAP. Le code suivant initialise le RfcClient à partir de la configuration et définit les informations d’identification du système SAP.
RfcClient rfcClient = new RfcClient("SAPBinding_Rfc"); rfcClient.ClientCredentials.UserName.UserName = "YourUserName"; rfcClient.ClientCredentials.UserName.Password = "YourPassword";
Ouvrez le client WCF.
rfcClient.Open();
Appelez des méthodes sur le RfcClient créé à l’étape 2 pour effectuer des opérations sur le système SAP. Le code suivant appelle la méthode SD_RFC_CUSTOMER_GET du RfcClient pour appeler la RFC sur le système SAP.
microsoft.lobservices.sap._2007._03.Types.Rfc.RFCCUST[] customers = new microsoft.lobservices.sap._2007._03.Types.Rfc.RFCCUST[0]; rfcClient.SD_RFC_CUSTOMER_GET(string.Empty, "AB*", ref customers);
Fermez le client WCF.
rfcClient.Close();
Exemple :
Voici un exemple de code complet qui appelle SD_RFC_CUSTOMER_GET pour renvoyer une liste de clients avec des noms commençant par « AB », puis écrit le nom et l’ID pour chaque client dans la console. Cet exemple crée le RfcClient à l’intérieur d’une instruction using . Il n’est pas nécessaire de fermer explicitement le RfcClient ; elle est fermée lorsque le chemin d’exécution quitte le contexte.
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using Microsoft.ServiceModel.Channels;
using Microsoft.Adapters.SAP;
namespace SapRfcClientSM
{
class Program
{
static void Main(string[] args)
{
try
{
// Create client from configuration
using (RfcClient rfcClient = new RfcClient("SAPBinding_Rfc"))
{
rfcClient.ClientCredentials.UserName.UserName = "YourUserName";
rfcClient.ClientCredentials.UserName.Password = "YourPassword";
// Open client
rfcClient.Open();
microsoft.lobservices.sap._2007._03.Types.Rfc.RFCCUST[] customers = new microsoft.lobservices.sap._2007._03.Types.Rfc.RFCCUST[0];
// Invoke SD_RFC_CUSTOMER_GET
rfcClient.SD_RFC_CUSTOMER_GET(string.Empty, "AB*", ref customers);
// Write the results to the console
foreach (microsoft.lobservices.sap._2007._03.Types.Rfc.RFCCUST customer in customers)
{
Console.WriteLine("Customer Name = " + customer.NAME1);
Console.WriteLine(" Id = " + customer.KUNNR);
Console.WriteLine();
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
if (ex.InnerException != null)
Console.WriteLine("Inner exception is :" + ex.InnerException);
}
}
}
}
Voir aussi
Développer des applications à l’aide du modèle de service WCF
Schémas de message pour les opérations RFC