2017-07-27 8 views
1

Ich versuche den .Net-Connector zu verwenden, um Daten an ein SAP-System zu senden. Ich konnte sehr leicht Aufrufe an das RFC-Funktionsmodul senden, aber es scheint keine Möglichkeit zu geben, ein Standard-IDoc direkt zu senden. Das ist ziemlich seltsam, weil Idocs das Standard-Kommunikationstool sein sollen, um mit SAP zu kommunizieren.SAP .Net Connector 3.0 - Wie kann ich ein IDoc von einem Nicht-SAP-System senden?

Hat jemand gefunden, wenn/wie es möglich ist, es zu tun?

Antwort

1

Soweit ich weiß, gibt es zur Zeit keine Entwicklungsbibliothek, die von SAP für den .NET Connector (NCo) zum Umgang mit IDocs angeboten wird. Wenn Sie das NCo verwenden möchten, müssen Sie dieses IDoc-Handling selbst programmieren. Dies ist möglich, weil IDocs normalerweise auch durch Aufruf spezieller Remote-Funktionsbausteine ​​(z.B. IDOC_INBOUND_ASYNCHRONOUS) übertragen werden. Dies kann jedoch sehr umständlich und schwierig werden, insbesondere wenn es auch mit Nicht-Unicode-ABAP-Systemen und Multi-Byte-Codepages wie Chinesisch, Japanisch oder Koreanisch funktionieren sollte.

Aber wenn Sie nicht bei NCo bleiben müssen, denke ich, der einfachste Weg, eigene Entwicklungen mit IDocs zu machen, ist, zu Java zu wechseln und den SAP Java Connector (JCo) in Verbindung mit der SAP Java IDoc Class zu verwenden Bibliothekszusatz. NCo und JCo haben eine sehr ähnliche API, aber dieses Java-IDoc-Klassenbibliothek-Add-on fehlt leider für die .NET-Umgebung - zumindest wird es von SAP nicht angeboten und ich kenne auch keine andere .NET-Bibliothek dafür Dies.

+0

Sie haben Recht. Ich musste einen RFC-Aufruf zu IDOC_INBOUND_ASYNCHRONOUS mit dem IDoc in der SDATA machen. Danke –

+0

Danke für die Rückmeldung. Beachten Sie jedoch, dass auch die anderen Felder in den beiden Tabellen von IDOC_INBOUND_ASYNCHRONOUS eine Bedeutung haben und konsistent gefüllt werden müssen. Sie können auch keine einzelnen IDoc-Felder innerhalb eines Segments in SDATA füllen/ändern, ohne die IDoc-Metadaten (Offsets und Längen) zu haben. Und wenn Sie die Segmentdaten bereits als fortlaufenden Block von Zeichendaten haben, funktioniert das Füllen von SDATA als ganze Zeichenfolge möglicherweise nicht für Nicht-Unicode-Multi-Byte-Codepages, bei denen Zeichen eine Länge von ein, zwei oder sogar mehr Bytes haben können verwendet als eine Mischung innerhalb des SDATA Zeichenarrays). – Trixx

+1

Sie haben auch Recht. Meine Antwort war nur die allgemeine Aussage was ich tat, aber wie Sie angegeben haben, füllte ich den Kontrollsatz auch und ich habe die Offsets/Längen programmatisch durch Abfrage von SAP behandelt, um die Struktur des Segments zu kennen, um meine Daten korrekt zu senden. –

1

Es gibt keine Funktionalität innerhalb des NCO zum Senden von IDOCs, der NCO ist für die Entwicklung von RFC-Clients oder RFC-Servern mit .NET vorgesehen. Eine einfache Suche auf dem Stapel fand ich das folgende mit einigen Vorschlägen, die Ihnen helfen könnten, wenn das immer noch der Weg ist, den Sie gehen möchten.

How to create and send Idocs to SAP using SAP .Net Connector 3

BTW würde ich nicht sagen, dass IDOCs die Standard-Kommunikations-Tool für SAP sind, ist es eine von vielen und sie sind alle gleichermaßen gültig so einfach auf Ihre Situation abhängt.

Später ...

Verwandte Themen