Freigeben über


Abrufen von Metadaten mithilfe von WS-Metadata Exchange in SAP

Als benutzerdefinierte Windows Communication Foundation (WCF)-Bindung stellt der Microsoft BizTalk-Adapter für mySAP Business Suite einen WS-Metadata Exchange-Endpunkt (MEX) zur Verfügung, mit dem Sie Metadaten für bestimmte Vorgänge aus dem Microsoft BizTalk-Adapter für mySAP Business Suite abrufen können.

WCF bietet eine umfassende Infrastruktur zum Exportieren, Veröffentlichen, Abrufen und Importieren von Metadaten zu einem Dienst. WCF-Dienste wie der Adapter verwenden Metadaten, um die Interaktion mit den Dienstendpunkten zu beschreiben, sodass Tools wie svcutil.exe automatisch Clientcode für die Nutzung des Diensts generieren können. WCF stellt die Metadaten für einen Dienst als instance des MetadataSet-Typs dar, der stark an das in WS-Metadata Exchange (MEX) definierte Metadatenserialisierungsformat gebunden ist. Sie können ein MetadataSet für zielorientierte Vorgänge auf dem Adapter erstellen, indem Sie einen MetadataExchangeClient verwenden.

Wcf-Unterstützung für den Metadatenaustausch ist ein umfangreiches Thema und geht über den Rahmen dieser Dokumentation hinaus. Weitere Informationen zur Unterstützung von Metadaten in WCF finden Sie unter "Metadaten" in der WCF-Dokumentation unter https://go.microsoft.com/fwlink/?LinkId=105634. Eine besonders gute Beschreibung der Architektur, klassen und Namespaces, die WCF für Metadaten verfügbar macht, finden Sie unter "Übersicht über die Metadatenarchitektur" unter https://go.microsoft.com/fwlink/?LinkId=105635. Sie sollten sich mit dem Inhalt im Zusammenhang mit dem Abrufen von Metadaten aus einem WCF-Dienst in diesen WCF-Themen vertraut machen, bevor Sie fortfahren.

Die folgenden Themen enthalten Informationen zur Verwendung eines MetadataExchangeClient zum Abrufen von Metadaten aus dem SAP-Adapter.

Verwenden eines MetadataExchangeClient zum Abrufen von Metadaten

Um einen MetadataExchangeClient verwenden zu können, müssen Sie einen Verbindungs-URI und eine Bindung (SAPBinding) angeben. Der Verbindungs-URI identifiziert die Vorgänge, für die Sie Metadaten abrufen möchten.

Die folgenden Abschnitte enthalten Informationen zum Angeben des Verbindungs-URI, wichtige Bindungseigenschaften und zum Abrufen von Metadaten aus dem Adapter mit einem MetadataExchangeClient .

Verbindungs-URI

Um metadataExchangeClient zu verwenden, müssen Sie einen SAP-Verbindungs-URI angeben, der einen MEX-Endpunkt und den Vorgang oder die Vorgänge angibt, für die Sie Metadaten abrufen möchten. Sie geben einen MEX-Endpunkt und Zielvorgänge im Verbindungs-URI auf folgende Weise an:

  • Sie müssen den Parameter "wsdl" in die Abfragezeichenfolge einschließen. Wenn es sich um den ersten Parameter in der Abfragezeichenfolge handelt, wird er direkt nach dem Fragezeichen (?) angegeben. Wenn es sich nicht um den ersten Parameter handelt, sollte ihm ein ampersand (&) vorangestellt werden.

  • Sie müssen dem Parameter "wsdl" durch einen oder mehrere "op"-Parameter folgen. Jedem "op"-Parameter wird ein ampersand (&) vorangestellt und gibt die Nachrichtenaktion (Knoten-ID) eines Zielvorgangs an.

    Der folgende Verbindungs-URI zielt beispielsweise auf den Sendevorgang für das SALESORDER_CREATEFROMDAT201 IDOC und das SALESORDER_CREATEFROMDAT202 IDOC ab. Die Parameter "wsdl" und "op" sind hervorgehoben.

"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"

Hinweis

Es ist nicht erforderlich, Listenerparameter in den Verbindungs-URI für eingehende Vorgänge einzuschließen. Der Adapter stellt eine Verbindung als Client her, um Metadaten aus dem SAP-System abzurufen.

Sie können auch die unter Microsoft.Adapters.SAP.SAPAdapterConstants.ActionConstants definierten Konstanten verwenden, um Vorgänge beim Erstellen eines Verbindungs-URI anzugeben. Dies wird im Codebeispiel am Ende dieses Themas veranschaulicht.

Wie Sie diesen Verbindungs-URI an metadataExchangeClient übergeben, hängt davon ab, welche der überladenen Methoden Sie verwenden, um den Client zu erstellen und Metadaten vom Adapter abzurufen.

Weitere Informationen zum SAP-Verbindungs-URI finden Sie unter Erstellen des SAP-Systemverbindungs-URI.

Bindungseigenschaften

Wenn Sie den MetadataExchangeClient erstellen, müssen Sie eine SAPBinding-Datei angeben.

Es gibt mehrere Bindungseigenschaften, die beeinflussen, wie der Adapter Metadaten generiert. Diese Eigenschaften sind:

Beispiel

Im folgenden Beispiel wird ein MetadataExchangeClient verwendet, um eine Dienstbeschreibung (WSDL-Dokument) für die vorgänge BAPI_TRANSACTION_COMMIT und BAPI_TRANSACTION_ROLLBACK zu erstellen.

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");

            }

        }
    }
}

Weitere Informationen

Programmgesteuertes Abrufen von Metadaten aus SAPAbrufen von Metadaten in SAP mithilfe von IMetadataRetrievalContract