Parsing SAP IDOC files

2020-07-22 17:19发布

问题:

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:

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" ...



回答2:

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



回答3:

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.



回答4:

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



回答5:

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.



标签: .net sap