Als Verbindungstyp wird ClassicRFC zwischen BizTalk und SAP abgelöst durch den NCo (.NET SAP Connector). Auch wenn der der bisherige Weg meist noch gut funktioniert, gibt es Situationen wie die folgende, in denen der neue Connector verwendet werden muss:
Kürzlich liefen wir auf einen Fehler im Visual Studio, wenn wir den Contract des Funktionsbausteins GOS_API_INSERT_AL_ITEM ziehen wollten. Darin ist die Struktur GOS_S_ATTCONT nicht verfügbar, weil sie unlimitierte Strings im SAP benutzt.
Die Fehlermeldungen leiten leider nicht direkt zu dem Problem, aber es ist in SAP nachstellbar, indem mit SE37 der Contract dieser Struktur gezogen wird (mit RFC_GET_UNICODE_STRUCTURE). Wenn man dort „Allow half deep“ anhakt, verhindert man den Fehler.
Die schlechte Nachricht: Im ClassicRFC existiert dieser Haken nicht – im NCo ist dies aber gelöst worden und es kommt zu keinem Problem.
Hier die Fehlermeldung, falls jemand darauf stößt:
Error while retrieving or generating the WSDL. Adapter message: Retrieval of Type Metadata has failed while building WSDL at 'SAPTABLE/GOS_S_ATTCONT'
Microsoft.ServiceModel.Channels.Common.MetadataException: Retrieval of Type Metadata has failed while building WSDL at 'SAPTABLE/GOS_S_ATTCONT' ---> Microsoft.ServiceModel.Channels.Common.MetadataException: The SAP system returned error: Details: ErrorCode=RFC_EXCEPTION.
ErrorGroup=RFC_ERROR_APPLICATION_EXCEPTION.
SapErrorMessage=UNSUPPORTED_TYPE. AdapterErrorMessage=The RfcGetStructureInfoAsTable API returned the error code 2 when obtaining metadata for the type GOS_S_ATTCONT. Check the RFC SDK trace files for details..when trying to retrieve metadata for table: GOS_S_ATTCONT. ---> Microsoft.Adapters.SAP.RFCException: Details: ErrorCode=RFC_EXCEPTION. ErrorGroup=RFC_ERROR_APPLICATION_EXCEPTION.
SapErrorMessage=UNSUPPORTED_TYPE. AdapterErrorMessage=The RfcGetStructureInfoAsTable API returned the error code 2 when obtaining metadata for the type GOS_S_ATTCONT.
In den RFC Logs steht gleichzeitig:
T:10984 Error in program 'devenv': RfcGetStructureInfoAsTable(GOS_S_ATTCONT) exception UNSUPPORTED_TYPE
T:10984 Error in program 'devenv': <* RfcGetStructureInfoAsTable [2] : returns 2:RFC_EXCEPTION
Die Lösung besteht darin, auf den neuen Verbindungstyp „NCo“ (SAP .NET Connector) zu wechseln. Diesen kann man im SAP Marketspace herunterladen.
Christoph Hanser, QUIBIQ Hamburg