tags:

views:

674

answers:

4

Hi,

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.

+1  A: 

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

Mitch Wheat
Thx for this but I can't really see how it would work like I want it to work. This would seem useful if you are actually running SAP and would want to write an application for your own SAP server that needs to factor in the SAP business logic.What I need is a library that can parse the IDOC format and tell me in a humanly readable format what is going on so that I can map it myself to new orders in our system etc.Is this something that SAP .NET Connector can do? We are not interested in RFC, BAPIs, etc. Just the IDOC files generated for us.
SpoBo
A: 

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.

IronGoofy
We don't have the SAP running. It's a partner of ours. They provided us with such an HTML file detailing what fields are on what lines and a short discription of it.But basically I'll have to write my own classes to read the IDOC files. With the help of the HTML documentation. There is no library for that :(
SpoBo
Some of the EAI tools should be able to help you to transform IDocs into a format that is easier to work with. Not sure if that's a real help for you.
IronGoofy
+1  A: 

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-infrastructure (which is Java based) to send out the IDocs in an XML format. That should be much easier to handle than "plain text" ...

IronGoofy
Interesting. The Java Library looks like something I could realy use. Too bad we don't have a SAP account yet. I could use something like http://www.devx.com/interop/Article/19945 to call the Java from .NET I guess.No possibilityto test this now but it seems like a good way to go.
SpoBo
You can get a trial SAP system to try out a few things .. look for the IDES system (sometimes included in SAP programming books) or google `ABAP Trial`. I've got a little system running in a VM on my laptop .. helps to be able to play around a bit!
IronGoofy
A: 

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

Jim Murrin