Verwenden des ServiceModel-Metadaten-Hilfsprogramms mit dem BizTalk-Adapter für mySAP Business Suite
Sie können das ServiceModel Metadata Utility Tool (svcutil.exe) verwenden, um eine WCF-Clientklasse oder einen WCF-Dienstvertrag (Schnittstelle) für Vorgänge zu generieren, die der Microsoft BizTalk-Adapter für mySAP Business Suite verfügbar macht. Nachdem Sie svcutil.exe ausgeführt haben, um entweder eine WCF-Clientklasse oder einen WCF-Dienstvertrag zu generieren, können Sie die generierte Datei in Ihren Code einschließen und Instanzen der generierten Klasse erstellen oder einen WCF-Dienst über die generierte Schnittstelle implementieren, um Vorgänge im SAP-System auszuführen.
Wenn Sie svcutil.exe verwenden, müssen Sie einen Verbindungs-URI angeben, der Anmeldeinformationen enthält. Da der SAP-Adapter standardmäßig Anmeldeinformationen im Verbindungs-URI deaktiviert, müssen Sie svcutil.exe konfigurieren, um eine nicht standardmäßige Bindung für den SAP-Adapter zu verwenden. Sie können auch andere Bindungseigenschaften in der nicht standardmäßigen Bindung konfigurieren. Um beispielsweise einen WCF-Client für BAPI-Vorgänge zu erstellen, müssen Sie die Bindungseigenschaft EnableSafeTyping auf true festlegen.
In den folgenden Abschnitten wird gezeigt, wie Sie svcutil.exe konfigurieren und svcutil.exe verwenden, um WCF-Clientcode oder einen WCF-Dienstvertrag mit dem SAP-Adapter zu generieren.
Konfigurieren svcutil.exe für den SAP-Adapter
Um svcutil.exe für die Verwendung einer nicht standardmäßigen Bindung zu konfigurieren, müssen Sie eine lokale Kopie von svcutil.exe erstellen und dann eine lokale Kopie der svcutil.exe.config Konfigurationsdatei erstellen oder ändern.
Erstellen Sie einen Ordner, und kopieren Sie svcutil.exe in den neuen Ordner. In der Regel finden Sie svcutil.exe am Installationsspeicherort des Windows SDK, insbesondere C:\Programme\Microsoft SDKs\Windows\v6.0\Bin.
Erstellen Sie eine Datei mit dem Namen svcutil.exe.config im neuen Ordner.
Fügen Sie der datei svcutil.exe.config eine Bindung und einen Clientendpunkt hinzu. Sie müssen svcutil.exe aus dem neuen Ordner ausführen, um sicherzustellen, dass die richtige Konfiguration verwendet wird.
Wichtig
Das name-Attribut des Clientendpunkts muss das im Verbindungs-URI verwendete Schema angeben. Bei diesem Wert wird die Groß-/Kleinschreibung beachtet.
<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>
Sie können eine der Bindungseigenschaften des SAP-Adapters in der Bindungskonfiguration festlegen. Sie können beispielsweise die folgende nicht standardmäßige Bindung angeben, um svcutil.exe zum Generieren eines WCF-Clients für BAPI-Vorgänge zu verwenden.
<bindings>
<sapBinding>
<binding name="SAPBinding" acceptCredentialsInUri="true"/>
</sapBinding>
</bindings>
Weitere Informationen zum Konfigurieren einer nicht standardmäßigen Bindung für svcutil.exe finden Sie unter Benutzerdefinierter Endpunkt für sichere Metadaten.
Erstellen einer WCF-Clientklasse oder eines WCF-Dienstvertrags mit svcutil.exe
Wenn Sie svcutil.exe verwenden möchten, um WCF-Clientcode oder einen WCF-Dienstvertrag (Schnittstelle) für den SAP-Adapter zu generieren, müssen Sie einen Verbindungs-URI angeben, der einen WS-Metadata Exchange-Endpunkt (MEX) und den Vorgang oder die Vorgänge angibt, für die Sie Code generieren svcutil.exe möchten. Sie müssen auch Die Anmeldeinformationen für die Verbindung für das SAP-System im Verbindungs-URI angeben.
Hinweis
Bevor Sie svcutil.exe mit dem SAP-Adapter verwenden können, müssen Sie ihn für die Verwendung einer nicht standardmäßigen Bindung konfigurieren. Informationen dazu finden Sie unter Konfigurieren von svcutil.exe für den SAP-Adapter.
Sie geben einen MEX-Endpunkt und Zielvorgänge im SAP-Adapterverbindungs-URI wie folgt 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 hinter dem Fragezeichen (?) angegeben. Wenn es sich nicht um den ersten Parameter handelt, sollte ihm ein ampersand (&) vorangestellt werden.
Sie müssen dem Parameter "wsdl" einen oder mehrere "op"-Parameter folgen. Jedem "op"-Parameter ist ein ampersand (&) vorangestellt und gibt die Knoten-ID eines Zielvorgangs an.
Die folgenden drei Beispiele zeigen, wie verschiedene Vorgänge mithilfe von svcutil.exe als Ziel verwendet werden.
In diesem Beispiel wird eine WCF-Clientklasse für RFC_CALCULATE_TAXES erstellt.
.\svcutil "sap://User=YourUserName; Passwd=YourPassword; Client=800; Lang=DE;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Rfc/RFC_CALCULATE_TAXES"
In diesem Beispiel wird eine WCF-Clientklasse für das SALESORDER_CREATEFROMDAT201 und SALESORDER_CREATEFROMDAT202 IDOC erstellt.
.\svcutil "sap://User=YourUserName; Passwd=YourPassword; Client=800; Lang=DE;@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"
In diesem Beispiel wird ein WCF-Dienstvertrag erstellt, um die SALESORDER_CREATEFROMDAT201 IDOC vom SAP-System zu empfangen. Die NODE-ID gibt einen Empfangsvorgang an. Da sich dieses Beispiel mit dem Abrufen von Metadaten befasst, müssen die Listenerparameter im query_string des Verbindungs-URI nicht angegeben werden.
.\svcutil "sap://User=YourUserName; Passwd=YourPassword; Client=800; Lang=DE;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT201//620/Receive"
Wichtig
Sie müssen den Verbindungs-URI in Anführungszeichen in der Befehlszeile platzieren. Andernfalls versucht svcutil.exe, Metadaten für Vorgänge abzurufen, die vom SAP-Adapter nicht unterstützt werden. Die Ergebnisse eines solchen Versuchs sind nicht definiert.
Standardmäßig platziert svcutil.exe den generierten Code in der output.cs-Datei. Sie können jedoch den Namen der Ausgabedatei und viele andere Optionen ändern, die svcutil.exe verwendet, indem Sie Befehlszeilenoptionen festlegen. Weitere Informationen zu den Optionen, die svcutil.exe unterstützt, finden Sie im ServiceModel Metadata Utility Tool (Svcutil.exe).
Svcutil.exe bietet nicht die Möglichkeit, nach Vorgängen zu suchen (z. B. mithilfe von Feldhalterzeichen). Sie müssen Knoten-IDs explizit für die spezifischen Vorgänge angeben, auf die Sie abzielen möchten. Die Knoten-ID eines Vorgangs entspricht seiner Nachrichtenaktionszeichenfolge. Sie können keine Knoten-IDs angeben, die sich nur auf Kategorien beziehen. Weitere Informationen zu den Knoten-IDs, die vom SAP-Adapter angezeigt werden, finden Sie unter Metadatenknoten-IDs.
Das Visual Studio-Plug-In "Adapterdienstreferenz hinzufügen" bietet erweiterte Such- und Suchfunktionen, die das Generieren einer WCF-Clientklasse und eines WCF-Dienstvertrags erheblich vereinfachen können. Weitere Informationen zum Add Adapter Service Reference Plug-In finden Sie unter Generieren eines WCF-Clients oder eines WCF-Dienstvertrags für SAP-Lösungsartefakte.