Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El adaptador de Microsoft BizTalk para mySAP Business Suite expone rfC en el sistema SAP como operaciones que un programa cliente puede invocar. En el modelo de servicio WCF, estas operaciones se invocan como métodos de una clase de cliente WCF generada. Puede usar el complemento de Visual Studio "Agregar referencia de servicio de adaptador" para generar una clase de cliente WCF que contenga métodos para cada RFC que desee invocar en su código. El complemento Add Adapter Service Reference también genera tipos de .NET para encapsular los parámetros y los tipos de datos que usan cada RFC. A continuación, puede crear una instancia de esta clase de cliente WCF y llamar a sus métodos para invocar las RFC de destino.
En las secciones siguientes se muestra cómo invocar RFC en el sistema SAP mediante el adaptador de SAP.
La clase de cliente WCF
El adaptador de SAP muestra todas las operaciones RFC en un único contrato de servicio, "Rfc". Esto significa que se crea una única clase de cliente WCF, RfcClient, para todas las operaciones RFC que desea invocar. Cada RFC de destino se representa como un método de esta clase. En cada método:
Los parámetros de exportación de SAP se muestran como parámetros out
Los parámetros cambiantes de SAP se muestran como parámetros ref .
Los tipos de SAP complejos, como las estructuras, se muestran como clases de .NET con propiedades que corresponden a los campos del tipo sap. Estas clases se definen en el siguiente espacio de nombres: microsoft.lobservices.sap._2007._03.Types.Rfc.
El código siguiente muestra parte de la clase RfcClient y el método que invoca SD_RFC_CUSTOMER_GET en el sistema 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) {...}
}
Cómo crear una aplicación cliente RFC
Para crear una aplicación cliente RFC, realice los pasos siguientes.
Para crear una aplicación cliente RFC
Genere una clase RfcClient . Utilice el complemento Add Adapter Service Reference de Visual Studio o la Herramienta de utilidad de metadatos ServiceModel (svcutil.exe) para generar una clase RfcClient que tenga como objetivo las RFC con las que quiera trabajar. Para obtener más información sobre cómo generar un cliente WCF, vea Generar un cliente WCF o un contrato de servicio WCF para artefactos de solución de SAP.
Cree una instancia de la clase RfcClient generada en el paso 1 y especifique un enlace de cliente. Especificar un enlace de cliente implica especificar el enlace y la dirección del punto de conexión que usará RfcClient . Puede hacerlo de forma imperativa en el código o mediante declaración en la configuración. Para obtener más información sobre cómo especificar un enlace de cliente, vea Configurar un enlace de cliente para el sistema SAP. El código siguiente inicializa RfcClient a partir de la configuración y establece las credenciales del sistema SAP.
RfcClient rfcClient = new RfcClient("SAPBinding_Rfc"); rfcClient.ClientCredentials.UserName.UserName = "YourUserName"; rfcClient.ClientCredentials.UserName.Password = "YourPassword";
Abra el cliente WCF.
rfcClient.Open();
Invoque métodos en RfcClient creados en el paso 2 para realizar operaciones en el sistema SAP. El código siguiente invoca el método SD_RFC_CUSTOMER_GET de RfcClient para invocar la RFC en el sistema 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);
Cierre el cliente WCF.
rfcClient.Close();
Ejemplo
A continuación se muestra un ejemplo de código completo que invoca SD_RFC_CUSTOMER_GET para devolver una lista de clientes con nombres que comienzan por "AB" y, a continuación, escribe el nombre y el identificador de cada cliente en la consola. En este ejemplo se crea RfcClient dentro de una instrucción using . No es necesario cerrar explícitamente RfcClient; se cerrará cuando la ruta de acceso de ejecución salga del contexto.
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);
}
}
}
}
Véase también
Desarrollo de aplicaciones mediante el modelo de servicio WCF
Esquemas de mensajes para operaciones RFC