Uso de la herramienta de utilidad de metadatos serviceModel con el adaptador de BizTalk para mySAP Business Suite
Puede usar la Herramienta de utilidad de metadatos de ServiceModel (svcutil.exe) para generar una clase de cliente WCF o un contrato de servicio WCF (interfaz) para las operaciones que expone el adaptador de Microsoft BizTalk para mySAP Business Suite. Después de ejecutar svcutil.exe para generar una clase de cliente WCF o un contrato de servicio WCF, puede incluir el archivo generado en el código y crear instancias de la clase generada o implementar un servicio WCF desde la interfaz generada para realizar operaciones en el sistema SAP.
El uso de svcutil.exe requiere que proporcione un URI de conexión que contenga credenciales. Dado que, de forma predeterminada, el adaptador de SAP deshabilita las credenciales en el URI de conexión, debe configurar svcutil.exe para usar un enlace no predeterminado para el adaptador de SAP. También puede configurar otras propiedades de enlace en el enlace no predeterminado; por ejemplo, para crear un cliente WCF para las operaciones BAPI, debe establecer la propiedad de enlace EnableSafeTyping en true.
En las secciones siguientes se muestra cómo configurar svcutil.exe y cómo usar svcutil.exe para generar código de cliente WCF o un contrato de servicio WCF con el adaptador de SAP.
Configuración de svcutil.exe para el adaptador de SAP
Para configurar svcutil.exe para usar un enlace no predeterminado, debe crear una copia local de svcutil.exe y, a continuación, crear o modificar una copia local del archivo de configuración de svcutil.exe.config.
Cree una carpeta y copie svcutil.exe en la nueva carpeta. Normalmente, puede encontrar svcutil.exe en la ubicación de instalación de Windows SDK, en concreto, C:\Archivos de programa\Microsoft SDKs\Windows\v6.0\Bin.
Cree un archivo denominado svcutil.exe.config en la nueva carpeta.
Agregue un enlace y un punto de conexión de cliente al archivo svcutil.exe.config. Debe ejecutar svcutil.exe desde la nueva carpeta para asegurarse de que se usa la configuración correcta.
Importante
El atributo name del punto de conexión de cliente debe especificar el esquema usado en el URI de conexión. Este valor distingue mayúsculas de minúsculas.
<configuration> <system.serviceModel> <client> <!-- the name should match the required scheme of the WS-Metadata Exchange endpoint and the contract should be "IMetadataExchange" --> <endpoint name="sap" binding="sapBinding" bindingConfiguration="SAPBinding" contract="IMetadataExchange" /> </client> <bindings> <sapBinding> <binding name="SAPBinding" acceptCredentialsInUri="true"/> </sapBinding> </bindings> </system.serviceModel> </configuration>
Puede establecer cualquiera de las propiedades de enlace del adaptador de SAP en la configuración de enlace. Por ejemplo, podría especificar el siguiente enlace no predeterminado para usar svcutil.exe para generar un cliente WCF para las operaciones de BAPI.
<bindings>
<sapBinding>
<binding name="SAPBinding" acceptCredentialsInUri="true"/>
</sapBinding>
</bindings>
Para obtener más información sobre cómo configurar un enlace no predeterminado para svcutil.exe, consulte el punto de conexión de metadatos seguros personalizado.
Crear una clase de cliente WCF o un contrato de servicio WCF con svcutil.exe
Para usar svcutil.exe para generar código de cliente WCF o un contrato de servicio WCF (interfaz) para el adaptador de SAP, debe proporcionar un URI de conexión que especifique un punto de conexión de WS-Metadata Exchange (MEX) y la operación o las operaciones para las que desea que svcutil.exe generar código. También debe especificar las credenciales de conexión para el sistema SAP en el URI de conexión.
Nota
Para poder usar svcutil.exe con el adaptador de SAP, debe configurarlo para usar un enlace no predeterminado; para obtener información sobre cómo hacerlo, consulte Configuración de svcutil.exe para el adaptador de SAP.
Especifique un punto de conexión MEX y las operaciones de destino en el URI de conexión del adaptador de SAP 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 el identificador de nodo de una operación de destino.
En los tres ejemplos siguientes se muestra cómo dirigirse a varias operaciones mediante svcutil.exe.
En este ejemplo se crea una clase de cliente WCF para RFC_CALCULATE_TAXES.
.\svcutil "sap://User=YourUserName; Passwd=YourPassword; Client=800; Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Rfc/RFC_CALCULATE_TAXES"
En este ejemplo se crea una clase de cliente WCF para el SALESORDER_CREATEFROMDAT201 y SALESORDER_CREATEFROMDAT202 IDOC.
.\svcutil "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"
En este ejemplo se crea un contrato de servicio WCF para recibir el IDOC de SALESORDER_CREATEFROMDAT201 desde el sistema SAP. El identificador de NODE especifica una operación receive. Dado que en este ejemplo se trata la recuperación de metadatos, no es necesario especificar los parámetros del agente de escucha en el query_string del URI de conexión.
.\svcutil "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/Receive"
Importante
Debe colocar el URI de conexión entre comillas en la línea de comandos. De lo contrario, svcutil.exe intenta recuperar metadatos para las operaciones que el adaptador de SAP no admite. Los resultados de este intento no están definidos.
De forma predeterminada, svcutil.exe coloca el código generado en el archivo output.cs; Sin embargo, puede cambiar el nombre del archivo de salida y muchas otras opciones que svcutil.exe usa estableciendo modificadores de línea de comandos. Para obtener más información sobre las opciones que svcutil.exe admite, consulte la Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe).
Svcutil.exe no proporciona la capacidad de buscar operaciones (por ejemplo, mediante caracteres comodín). Debe especificar explícitamente los identificadores de nodo para las operaciones específicas de destino. El identificador de nodo de una operación es equivalente a su cadena de acción de mensaje. No se pueden especificar identificadores de nodo que solo hacen referencia a categorías. Para obtener más información sobre los identificadores de nodo que muestra el adaptador de SAP, consulte Identificadores de nodo de metadatos.
El complemento Agregar referencia del servicio adaptador de Visual Studio proporciona funcionalidades avanzadas de exploración y búsqueda que pueden simplificar considerablemente la generación de una clase de cliente WCF y un contrato de servicio WCF. Para obtener más información sobre el complemento agregar referencia de servicio de adaptador, consulte Generación de un cliente WCF o un contrato de servicio WCF para artefactos de solución de SAP.