Obtención de metadatos mediante WS-Metadata Exchange en SAP
Como enlace personalizado de Windows Communication Foundation (WCF), el adaptador de Microsoft BizTalk para mySAP Business Suite expone un punto de conexión de Exchange (MEX) de WS-Metadata que puede usar para recuperar metadatos para operaciones específicas del adaptador de Microsoft BizTalk para mySAP Business Suite.
WCF proporciona una infraestructura enriquecida para exportar, publicar, recuperar e importar metadatos sobre un servicio. Los servicios WCF, como el adaptador, usan metadatos para describir cómo interactuar con los puntos de conexión de servicio para que las herramientas, como svcutil.exe, puedan generar automáticamente código de cliente para consumir el servicio. WCF representa los metadatos de un servicio como una instancia del tipo MetadataSet , que está fuertemente vinculado al formato de serialización de metadatos definido en WS-Metadata Exchange (MEX). Puede crear un MetadataSet para las operaciones de destino en el adaptador mediante metadataExchangeClient.
La compatibilidad con WCF para el intercambio de metadatos es un tema amplio y más allá del ámbito de esta documentación. Para obtener más información sobre la compatibilidad con metadatos en WCF, vea "Metadatos" en la documentación de WCF en https://go.microsoft.com/fwlink/?LinkId=105634. Para obtener una descripción especialmente buena de la arquitectura, las clases y los espacios de nombres que WCF expone para los metadatos, vea "Información general sobre la arquitectura de metadatos" en https://go.microsoft.com/fwlink/?LinkId=105635. Debe familiarizarse con el contenido relacionado con la recuperación de metadatos de un servicio WCF en estos temas de WCF antes de continuar.
Los temas siguientes contienen información sobre cómo usar metadataExchangeClient para recuperar metadatos del adaptador de SAP.
Uso de MetadataExchangeClient para recuperar metadatos
Para usar metadataExchangeClient , debe especificar un URI de conexión y un enlace (SAPBinding). El URI de conexión identifica las operaciones para las que desea recuperar los metadatos.
Las secciones siguientes contienen información sobre cómo especificar el URI de conexión, las propiedades de enlace importantes y cómo usar metadataExchangeClient para recuperar metadatos del adaptador.
El URI de conexión
Para usar MetadataExchangeClient , debe proporcionar un URI de conexión de SAP que especifique un punto de conexión MEX y la operación o las operaciones para las que desea recuperar los metadatos. Especifique un punto de conexión MEX y las operaciones de destino en el URI de conexión de la siguiente manera:
Debe incluir el parámetro "wsdl" en la cadena de consulta. Si es el primer parámetro de la cadena de consulta, se especifica justo después del signo de interrogación (?). Si no es el primer parámetro, debe ir precedido de una y comercial (&).
Debe seguir el parámetro "wsdl" por uno o varios parámetros "op". Cada parámetro "op" está precedido por una y comercial (&) y especifica la acción de mensaje (id. de nodo) de una operación de destino.
Por ejemplo, el siguiente URI de conexión tiene como destino la operación Enviar para el IDOC de SALESORDER_CREATEFROMDAT201 y el IDOC de SALESORDER_CREATEFROMDAT202. Los parámetros "wsdl" y "op" están resaltados.
"sap://User=YourUserName;Passwd=YourPassword;Client=800;Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT201//620/Send&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT202//620/Send"
Nota:
No es necesario incluir parámetros del agente de escucha en el URI de conexión para las operaciones entrantes. El adaptador se conecta como un cliente para recuperar metadatos del sistema SAP.
También puede usar las constantes definidas en Microsoft.Adapters.SAP.SAPAdapterConstants.ActionConstants
para ayudarle a especificar las operaciones al crear un URI de conexión. Esto se muestra en el ejemplo de código al final de este tema.
La forma de pasar este URI de conexión a MetadataExchangeClient depende de los métodos sobrecargados que use para crear el cliente y recuperar metadatos del adaptador.
Para obtener más información sobre el URI de conexión de SAP, consulte Creación del URI de conexión del sistema sap.
Propiedades de enlace
Al crear MetadataExchangeClient, debe especificar sapBinding.
Hay varias propiedades de enlace que afectan a la forma en que el adaptador genera metadatos. Estas propiedades son:
GenerateFlatfileCompatibleIdocSchema
ReceiveIDocFormat
EnableSafeTyping
FlatFileSegmentIndicator
Debe asegurarse de que estas propiedades de enlace se establecen en los valores necesarios para la aplicación antes de invocar el método GetMetadata en MetadataExchangeClient. Para obtener más información sobre las propiedades de enlace del adaptador de SAP, vea Leer sobre el adaptador de BizTalk para las propiedades de enlace de mySAP Business Suite.
Ejemplo
En el ejemplo siguiente se usa metadataExchangeClient para crear una descripción del servicio (documento WSDL) para las operaciones de BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK.
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.ObjectModel;
// Needed for WCF and SAP adapter
using System.ServiceModel;
using Microsoft.ServiceModel.Channels;
using Microsoft.Adapters.SAP;
// Needed for MetadataExchangeClient class
using System.ServiceModel.Description;
// Needed for ServiceDescription class
using System.Web.Services;
namespace SapMetadataExchangeClient
{
class Program
{
static void Main(string[] args)
{
//Create a binding
SAPBinding binding = new SAPBinding();
//Create a metadata exchange client that will retrieve metadata according to the WS-MEX standard.
MetadataExchangeClient client = new MetadataExchangeClient(binding);
client.SoapCredentials.UserName.UserName = "YourUserName";
client.SoapCredentials.UserName.Password = "YourPassword";
//Set up an endpoint address and specify the operation for which we want metadata.
string connectionUri = "sap://Client=800;lang=EN@A/YourSAPHost/00?wsdl&op="
+ Microsoft.Adapters.SAP.SAPAdapterConstants.ActionConstants.RfcActionPrefix
+ "BAPI_TRANSACTION_COMMIT"
+ "&op="
+ Microsoft.Adapters.SAP.SAPAdapterConstants.ActionConstants.RfcActionPrefix
+ "BAPI_TRANSACTION_ROLLBACK";
EndpointAddress address = new EndpointAddress(connectionUri);
//Get the metadata.
MetadataSet ms = client.GetMetadata(address);
// Check for the metadata set size.
Collection<MetadataSection> documentCollection = ms.MetadataSections;
if (documentCollection != null && documentCollection.Count > 0)
{
//Get the WSDL from the metadata set
System.Web.Services.Description.ServiceDescription wsdl = (System.Web.Services.Description.ServiceDescription)documentCollection[0].Metadata;
//Save the WSDL to a file.
wsdl.Write("BapiTx.wsdl");
}
}
}
}
Consulte también
Recuperación de metadatos mediante programación desde SAPRecuperando metadatos en SAP mediante IMetadataRetrievalContract