We are currently planning on communicating with a partner that is running SAP. The problem is that our ERP offers no way of communicating with SAP and we will need to extract the necessary info out of the IDOC files ourselves.
Is there an easy way of doing this in .NET? Like a library (free/commercial) that does all the grunt work?
I'm just looking for something like 'IDocLibrary.Parse(file)' and it'll return me a collection of objects that translate directly to the orders etc in the IDOC file.
I did read about some sort of SAP .NET Connector. Is this capable of doing what I want it to do?
edit:
SAP .NET Connector is no option it seems.
According to http://www.dataxstream.com/2009/07/introduction-to-the-sap-net-connector/
In particular, there is no
functionality built-in to the SAP .Net
Connector for parsing the various data
fields from an IDOC. It is up to the
receiving program to know what the
format of the IDOC is, and how to
extract the data from the IDOC.
There is a C++ library from SAP that handles IDocs, but it's quite old:
Here's a PDF describing it. Not sure if you can still get the software and if that's going to help you today.
Most newer libraries seem to be developed for Java (one example can be found here) .. I guess that won't help you much if you're looking for a .Net solution.
However, as I suggested in my comment to your question, you may be able to get the XI (Exchange Integration) / PI (Process Integration)-infrastructure (which is Java based) to send out the IDocs in an XML format. That should be much easier to handle than "plain text" ...
I would suggest trying the SAP web site, SAP .NET Connector:
The SAP .NET Connector is a
development environment that enables
communication between the Microsoft.
NET platform and SAP systems. This
connector supports RFCs and Web
services, and allows you to write
different applications such as Web
form, Windows form, or console
applications in the Microsoft Visual
Studio.Net. With the SAP .NET
Connector, you can use all common
programming languages, such as Visual
Basic. NET, C#, or Managed C++.
Features Using the SAP .NET Connector
and SAP .NET Proxy Wizard, you can:
· Write .NET Windows and Web
form applications that have access to
SAP business objects (BAPIs).
· Develop client applications
for the SAP Server. Here you can use
either RFCs or HTTP/SOAP/XML
(outside-in).
· Write RFC server applications
that run in a .NET environment and can
be installed starting from the SAP
system (inside-out).
IDoc Receiver as a Windows Service
There is a way of dumping the IDoc type definition (similar to a DTD) from within the SAP system. Then use that as a meta-description of what is sent to you. AFAIK there are different ways to output the definition, HTML, C-Header, maybe even "real" DTD.
Haven't used this in quite a while, but look around where the IDocs types are defined (somewhere in the wedi menu, possibly we30).
The IDocs themselves are pretty much plain text with fixed field lengths, so you have to know where the "boundaries" between the fields/structures are. With the IDoc definitions, this shouldn't be too difficult.
I work for the company, DataXstream, who offers a connector (you reference them in the initial message) to do exactly what you want. Typically our connector is used to integrate a 3rd party application into SAP. I'm not sure that you can assume that the iDOC will contain the information you always want, since most SAP implementations are very customized and unique. Anyway, we'd be happy to help you either leverage the connector as is, or the pieces you are looking for to peform the integration you seek. Just let me know.
Jim
For all those who are stumbling upon this old question here:
The most comfortable way to work with IDocs and IDoc-XML, which is offered by SAP at no additional charge, is to use the SAP Java IDoc Class Library add-on for the SAP Java Connector.
It can be downloaded from the SAP Java Connector Homepage at https://support.sap.com/jco .
Unfortunately such an IDoc Class Library add-on is missing for the SAP Connector for Microsoft .NET environment - at least there is currently none offered by SAP as far as I know.
Alternatively one may also have a look and consider to use the SAP Business Connector which also offers appropriate APIs for dealing with IDocs and IDoc-XML. Of course, this is an integration platform product for exchanging business data between various systems, and no development library for being included in own Java application projects. But it is also offered free of charge to all SAP customers owning a NetWeaver license.
The prerequisite for all solutions offered by SAP is that you are an SAP customer or partner and own a license for an ABAP system.