Laden...

Edifact IDOC SAP Format in C# Parsen

Erstellt von andreglatz vor 9 Jahren Letzter Beitrag vor 9 Jahren 3.931 Views
A
andreglatz Themenstarter:in
1 Beiträge seit 2014
vor 9 Jahren
Edifact IDOC SAP Format in C# Parsen

Hallo
vielleicht kann mir einer von den Großen Helfen.
Bin Anfänger in c# und soll jetzt im Praktikum einen Parser erstellen, der Dokumente von SAP (IDOC-Format) in das EDIFACT-Format konvertiert.
Meine Frage: Wie lese ich den Dateninhalt ein und konvertiere sie in das EDI-Format. Vielleicht mit Arrays? Ich habe überhaupt keine Ahnung, vielleicht kann mir ja jemand einen Tipp geben, wie ich die Sache angegehen kann.

gruß
andre

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo andreglatz,

EDIFACT sieht nach einem relativ einfachen textuellen Datenformat aus. Das kannst du mit normalen Dateioperationen (z.B. File.ReadAllLines) auslesen und mit String-Operationen (z.B. String.Split) oder vermutlich besser Regex zerlegen, siehe z.B. [Artikel] Regex-Tutorial (und zum Testen On-the-fly Regex-Tester: Regex-Lab).

Bitte beachte allerdings, dass wir den Umgang mit Dateien, Strings und Regex (und auch mit Arrays) als bekannt voraussetzen, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1. Ich lassen den Thread nur offen, falls jemand spezifische Angaben zu Edifact machen kann bzw. vielleicht sogar fertige Parser oder Bibliotheken kennt.

herbivore

G
497 Beiträge seit 2006
vor 9 Jahren

SAP Idocs sind Textdateien mit fester Länge und verschiedenen Satzarten. Zum Einlesen musst du die Satzarten kennen und wissen, welche Satzart welche Felder hat, wie lang diese sind und in welcher Reihenfolge die in der Zeile stehen. Im SAP-System kannst du die Idoc-Dokumentation u.a. über die Transaktion WE60 erhalten. In jedem Fall solltest du die Doku von deinem Auftraggeber erhalten.

EDIFACT ist auch ein Textformat, allerdings anders aufgebaut. Auch EDIFACT kennt Nachrichtenarten, Segmentarten und Semente, die Felder werden aber durch konfigurierbare Trennzeichen (üblicherweise "+" für Segmente und ":" für Felder innerhalb der Segmente) getrennt. Segmentarten werden durch das '-Zeichen getrennt. Eine ganz praktische Übersicht über die Nachrichtenarten und die dazugehörigen Inhalte gibts u.a. hier: http://www.stylusstudio.com/edifact/frames.htm . Die Standards werden von der UN (UNECE) festgelegt und können auch auf den Seiten der UNECE heruntergeladen werden (allerdings nicht sondern bequem).

Die Idocs wirst du Zeile für Zeile einlesen müssen. Ob du zuerst das ganze Idoc einliest und auswertest oder Satz für Satz direkt EDIFACT-Daten erzeugst, ist dir überlassen. Da man aber häufiger auch Daten über mehrere Datensätze (wie z.B. alle Rechnungspositionen mit einem bestimmten Steuersatz) in ein EDIFACT-Segment übergeben muss, macht es mehr Sinn, zuerst das gnaze Idoc einzulesen und in ein internes Format zu konvertieren, auf das du einfacher zugreifen kannst.