Historie
Den NCo 3.0 von SAP gibt es seit Anfang 2011. In dieser Zeit ist er kontinuierlich verbessert worden, insgesamt 20 Releases; aktuell ist Version 3.0.20 vom 18.01.2018. Im BizTalk ist der NCo 3.0 seit dem BizTalk 2013R2 Cumulative Update 2 vom 31.12.2015 integriert. Dort ist als Connector „NCo“ im Wcf-SAP Adapter zu finden. Auch hier offenbar gut gereift. Von 33 KBs aller Cumulative Updates seit 2013R2 CU2 befassen sich 18 (!) mit dem NCo im Wcf-SAP Adapter.
Einrichtung
Diese ist mit dem NCo deutlich einfacher als beim ClassicRfc.
1. Installation des aktuellsten CUs, ist aufgrund der vielen Fixes empfehlenswert
service-pack-and-cumulative-update-list-biztalk
2. Herunterladen der aktuellen NCo 3.0 Insallationspakete vom SAP Service Marketplace (hierzu sind entsprechende User Berechtigungen nötig).
sap-connectors
Aktuell sind sapnco30dotnet40P_20-20007347 (32bit) und sapnco30dotnet40P_20-20007348 (64bit).
3. Ausführen der 32bit und 64bit Installationen, dabei eine der Optionen wählen, die GAC Registrierung einschließen.
Discovery und Schema Erzeugung
Jetzt werden vom SAP Metadaten abgeholt und die notwendigen Schemas generiert.
1. In einem BizTalk Server Projekt: Add Generated Items -> Consume Adapter Service
2. Binding auswählen und SAP Server URI eintragen
3. Dann Configure… zuerst die Binding Properties
4. Danach die Credentials
5. Connect sollte verbinden und BAPI, IDOC, RFC und TRFC Kategorien zum Browsen anbieten
6. Nun kann entweder im Baum gestöbert oder in der Search Box (mit Platzhaltern) gesucht werden. Wenn die gewünschte Operation gefunden ist, unten einen Filename Prefix für die zu generierenden Schemas eingeben und OK.
7. Es werden ein Binding und Schemas generiert:
8. Mit dem „Rfc“ Schema erzeugen wir mit „Generate Instance“ eine Xml Test Message, die gut genug ist, um die Kommunikation zum SAP zu testen.
Erste Kommunikation
Für einen Minimaltest der Kommunikation weiter mit folgenden Schritten in der BizTalk Admin Console.
1. Neuer Static Solicit-Response Send Port
2. Configure… Zusätzlich zur Server URI den SOAP Action header eintragen, entsprechend der Operation der vorhin generierten Test Message.
3. Im Binding lediglich den Connector Type auf „NCo“ stellen, Credentials setzen, der Rest kann so bleiben und OK.
4. Den so erstellten SP_SAP_NCo Send Port mit einem File Receive Port (für den Request) und einem File Send Port (für den Response) verknüpfen. Bei „harter“ Verknüpfung (über die Port Namen) kann bei allen Pipelines PassThru bleiben.
5. Nun kann die vorhin erstellte Xml Test Message über den File Receive Port und den SP_SAP_NCo verschickt werden.
6. Jetzt sollte beim File Send Port die Antwort einlaufen
<ZDCRMIF_ENTITYResponse xmlns="Microsoft.LobServices.Sap/2007/03/Rfc/">
<E_ATTRIBUTE>IA_ATTRIBUTEIA_ATTRIB</E_ATTRIBUTE>
<E_CODE>10</E_CODE>
<E_ENTITY>IA_ENTITYIA_ENTITYI</E_ENTITY>
<E_ENTITY_ID>IA_ENTITY_IDIA_ENTITY_IDI</E_ENTITY_ID>
<E_MESSAGE>ERROR: Entity ia_entity not recognized IA_ENTITYIA_ENTITYI</E_MESSAGE>
</ZDCRMIF_ENTITYResponse>
Das ist zwar ein Fehler, aber hier ein voller Erfolg – SAP redet mit uns
Falls es nicht gleich klappt, so könnte es an folgenden häufigen Fehlern liegen:
Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: An error occurred while parsing the XML.
Mögliche Ursache: Schema passt nicht (ganz falsch oder z.B. auch kleine Änderungen im RFC Baustein, die bei der SAP seitigen Entwicklung passiert sein können).
System.ArgumentNullException: Value cannot be null. Parameter name: key
at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Microsoft.BizTalk.Adapter.Wcf.Runtime
.WcfClient`2.CreateChannelFactory[TChannel](IBaseMessage bizTalkMessage)
Mögliche Ursache: Action Mapping fehlt oder ist nicht korrekt.
Viel Erfolg!