Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
EDI (EDIFACT) Parser mit C#
Geraldo23
myCSharp.de - Member



Dabei seit:
Beiträge: 19
Herkunft: Österreich

Themenstarter:

EDI (EDIFACT) Parser mit C#

beantworten | zitieren | melden

Hallo!

Ich muss einen EDIFACT Parser mit C# erstellen, hab mich ein bisschen in EDI eingelesen, kenn mich jedoch noch nicht sehr gut aus. Ich soll Informationen aus der EDI Nachricht auslesen und diese dann in einer DB (SQL Server) speichern.

Kann mir vielleicht jemand ein paar Tipps geben wie ich das am besten angehe, der weiß jemand gute Seiten mit Beispielen zu EDI mit C#?

Danke für eure Hilfe,

Mfg

Gerald
private Nachricht | Beiträge des Benutzers
Xqgene
myCSharp.de - Member



Dabei seit:
Beiträge: 2.051

beantworten | zitieren | melden

Was für Beispiele willst du denn haben? Du hast die Spezifikation des EDI Formates. Ist ja reine Textdatei. Du liest sie Zeile für Zeile ein und arbeitest sie ab. Jeder diesen kryptischen Sätze hat einen Header, ein Endzeichen und weitere Felder und ist in der Spezifikation beschrieben. Also geht der nach.

P.S. Oh, ich hasse EDIFACT. Wie konnte man bloß so was ausdenken?
"A programmer is a tool which converts coffein to code."

Evely ToDo-Manager 1.2 (Build 1.2.585)
private Nachricht | Beiträge des Benutzers
cdr
myCSharp.de - Member



Dabei seit:
Beiträge: 980
Herkunft: Zürich

beantworten | zitieren | melden

Ist die Sprache Kontextfrei? Falls du eine (E)BNF Grammatik vorliegen hast kannst du den Parser zb. mit ANTLR gleich automatisch daraus generieren lassen ... (ansonsten ist das erstellen einer BNF Grammatik meist auch nicht allzu schwierig)
private Nachricht | Beiträge des Benutzers
magog96
myCSharp.de - Member



Dabei seit:
Beiträge: 8
Herkunft: Deutschland

beantworten | zitieren | melden

Also ich habe schon einiges mit EDI gemacht und das was mir dazu einfällt ist das Folgende:
"Das gute an Standards ist, es gibt so viele davon."

Das trifft schon auf EDI selbst zu, da es für jeden Bereich, sei es nun Holz- und Baustoffhandel (OBI und Co), der Lebensmittelbereich (REWE und Co),... einen mehr oder weniger eigenen Standard gibt.

Muß Du speziell Daten verarbeiten oder muß es wirklich eine Low-Level Hilfe (ala Parser) sein?
Das einfachste ist nämlich sich die EDI Daten von einem Dritthersteller wie Seeburger (und die anderen Konverter-Hersteller) aufbereiten zu lassen und dann das vereinfachte Format, was die Konverter ausspucken, zu nutzen.
private Nachricht | Beiträge des Benutzers
Geraldo23
myCSharp.de - Member



Dabei seit:
Beiträge: 19
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Also es dreht sich dabei um Statusmeldungen von Containern(Autoteiletransport).

Es wird IFTSTA verwendet, Version D.

Kennst du vielleicht ein paar gute Links welche mir mehr Einblick in die Materie geben?

Danke

Gerald
private Nachricht | Beiträge des Benutzers
magog96
myCSharp.de - Member



Dabei seit:
Beiträge: 8
Herkunft: Deutschland

beantworten | zitieren | melden

Hallo!
Zitat
Original von Geraldo23
Also es dreht sich dabei um Statusmeldungen von Containern(Autoteiletransport).
Es wird IFTSTA verwendet, Version D.

Ich hatte bisher mehr mit EANCOM (96) und den darin verankerten Nachrichten zu tun (ORDERS, INVOIC, DESADV, PRICAT,...).
Zu IFTSTA kann ich leider nichts sagen.
Zitat
Kennst du vielleicht ein paar gute Links welche mir mehr Einblick in die Materie geben?

Links und EDI? Also das sieht ziemlich schlecht aus.
Informationsmaterial wird ziemlich unter Verschluß gehalten.
Bei der EANCOM kann man eine CD bestellen, aber ich denke die wirst Du schon haben.

http://www.eancom.de/
http://www.google.com/custom?q=IFTSTA&sa=Google+Suche&cof=GIMP%3Ablue%3BT%3Ablack%3BLW%3A142%3BBIMG%3Awhite%3BALC%3A%23144b8b%3BL%3Ahttp%3A%2F%2Fwww.ccg.de%2Fcommon%2FLogos%2Flogo.gif%3BGFNT%3Ared%3BLC%3A%23144b8b%3BLH%3A43%3BBGC%3Awhite%3BAH%3Acenter%3BVLC%3A%23660000%3BS%3Ahttp%3A%2F%2Fwww.ccg.de%3BGALT%3Agreen%3BAWFID%3A88a9a8b51387d77c%3B&domains=www.ccg.de%3Bwww.ean.de%3Bwww.ecr.de%3Bwww.epcglobal.de%3Bwww.sinfos.de%3B&sitesearch=www.ean.de

Du kannst auch mal schauen, ob Seeburger was bietet.
Mit denen habe ich hauptsächlich zu tun gehabt. Seeburger ist Anbieter von Konvertern für verschiedene EDI Formate, aber eben auch nicht ganz preisgünstig.
http://www.seeburger.de/

Ich suche noch den Namen der anderen Firma mit den Konvertern raus...kann aber etwas dauern.
private Nachricht | Beiträge des Benutzers
Pulpapex
myCSharp.de - Member



Dabei seit:
Beiträge: 939
Herkunft: Rostock

beantworten | zitieren | melden

Hallo,

ich habe gerade mit Google nach EDI gesucht und bin durch Zufall mal wieder hier gelandet.

Wollte nur sagen, ein anderer EDI-Konverter ist Magic-Eddy von B&N. Der Konverter überträgt EDI-Nachrichten direkt in die Datenbank. Und zwar in eine Tabelle mit hunderten von Spalten für verschiedene Datentypen. Welches Datenfeld aus der EDI-Nachricht in welcher Spalte aufschlägt, wird in Profilen hinterlegt, die von B&N für jeden EDI-Partner erstellt werden. Eine EDI-Nachricht umfasst letztendlich mehrere Reihen in der Tabelle, identifiziert durch Nachrichten-ID, Hierarchie-Level und Zeilennummern.

Die Daten müssen dann wieder ausgelesen und ins firmeneigene Datenbank-Schema übertragen werden. Auch nicht ganz ohne Aufwand, aber immer noch einfacher als einen EDI-Parser zu schreiben, denke ich.

Gruss
Pulpapex

Edit: das ganze funktioniert natürlich in beide Richtungen.
private Nachricht | Beiträge des Benutzers
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo Geraldo,

normalerweise sind EDI-Daten recht einfach strukturiert. Bei EDI ist es immer eine Hierarchie, die auftretenden Segmente sind immer einheitlich (aber natürlich mit unterschiedlicher Anzahl). Bei Deinem konkreten Thema (IFTSTA, Version D, Statusmeldungen von Containern(Autoteiletransport)) vermute ich, dass es nicht mehr als 5-6 Segmenttypen sind, die in einer Hierarchie abgebildet sind.

Für Inbound-Zwecke (Import der EDI-Daten ins eigene System) Einen Parser mit ANTLR hierfür zu erzeugen ist meines Erachtens "schick" aber unnötig. Geh einfach iterativ vor, laufe durch alle Segmente, verfolge den letzten Knoten und füge die Blätter nach und nach hinzu (hierarchisch "einsortieren").

Outbound (Export aus dem eigenen System) eben umgekehrt.

Beginnen würde ich mal, die verschiedenen Segmenttypen von IFTSTA zunächst mal aufzuschreiben. Dann wird das schon viel klarer.

Viele Grüße
Hape
private Nachricht | Beiträge des Benutzers
Spaghetti
myCSharp.de - Member



Dabei seit:
Beiträge: 69

beantworten | zitieren | melden

hi hape,

der thread ist 2 Jahre alt.
Meinste nicht der OP ist zwischenzeitlich Experte oder hat sich einen anderen
Job gesucht.

Aber zu deiner Antwort ich finde EDI nicht sonderlich einfach.
Da es einerseits EDIFact ( die europäische Variante ) und ASC 12 (die amerikanische
Variante ) gibt. Und ich habe dummerweise wahrscheinlich mit beiden zu tun.

Kennst du oder hast du denn eine Lösung für EDI programmiert.
Wenn ja erzähl mal ws drüber. Interessiert mich. :-)

gruß
spaghetti
private Nachricht | Beiträge des Benutzers
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo Spaghetti,

der Thread ist wohl alt, das hab ich nicht bemerkt. Oops, das Thema denke ich, immer noch aktuell. Dass EDI einfach sei hab ich nicht gesagt, ich halte die *hierarchisch strukturierte Ablage* der Daten "an sich" für einfach, gut.

Um in SAP zum Beispiel EDI-Nachrichten individuell zu verarbeiten (z.B. Liefer-Avise, Bestellungen, Bestellbestätigungen, Rechnungen), iteriert man die Bestandteile der erzeugten IDocs, um die darin enthaltenen Daten zu erhalten und verbuchen zu können. Oder erzeugt IDocs - hierarchisch Segemt für Segment, per Hand.

Die großen fetten EDI Konverter hingegen, die das Mapping von A<-->B machen, sind sicherlich ein komplexes Thema, ohne Zweifel.

Grüße, Hape
private Nachricht | Beiträge des Benutzers
Rainbird
myCSharp.de - Experte

Avatar #avatar-2834.jpg


Dabei seit:
Beiträge: 3.728
Herkunft: Mauer

Edi

beantworten | zitieren | melden

Für den firmenübergreifenden Datenaustausch würde ich dringend zu einer Lösung wie z.B. dem BizTalk Server raten. Alles selber hart zu codieren ist letztlich unflexibel und viel zu teuer. Für EDIFACT und den Zugriff auf SAP Systeme (IDOC, BAPI) werden bei BizTalk Server 2006 fertige Adapter kostenlosn dazu geliefert. Beim EDIFACT Adapter muss man allerdings anmerken, dass es sich um eine Light-Version des BizTalk EDI-Adapters von Convast handelt.

Der BizTalk Server senkt die Kosten, wenn es um Theman Anwendungsintegration oder B2B-Kommunikation (EDI) geht. Trotzdem ist der BizTalk Server selbst eine komplexe Angelegenheit und setzt auch ein gewisses Budget vorraus.

http://www.microsoft.com/germany/biztalk/default.mspx
private Nachricht | Beiträge des Benutzers
maxE
myCSharp.de - Member



Dabei seit:
Beiträge: 456
Herkunft: Sachsen

beantworten | zitieren | melden

Hier hat jemand schon mal was dazu gemacht:
http://www.codeproject.com/csharp/edix.asp
Vielleicht ganz nützlich.
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
private Nachricht | Beiträge des Benutzers
magog96
myCSharp.de - Member



Dabei seit:
Beiträge: 8
Herkunft: Deutschland

beantworten | zitieren | melden

Hallo!

Ich habe im letzten Jahr auch mal wieder was mit EDIFACT zu tun gehabt und zur Abwechslung mal einen eigenen Konverter gebaut.
Das ganze war auf Basis von Visual Foxpro 9 und wurde an ein bestehendes ERP-System das ebenfalls Visual Foxpro nutzt angedockt.

Das was ich da verbrochen habe war im Grunde der Parser, der die EDIFACT Nachrichten eingelesen hat und die Daten in einem (oder auch mehrere) FoxPro Cursor (Datenbanktabellen im Speicher) ablegt und das Gegenstück zum Export von EDIFACT Nachrichten. Da es als Komponente angelegt war, hat die Warenwirtschaft direkten Zugriff auf diese Tabellen und auch die grundlegenden Funktionen werden von außen gesteuert. Somit wurde zu bestimmten Zeitpunkten am Tag der Import/Export der Daten angestossen.

Die EDIFACT Basiskomponente verwendet verschiedene Klassen die ein den eigentlichen Import/Export der EDIFACT Daten vornehmen.
Der Name der zu ladenden Klasse wird dabei über Parameter gesteuert (Nachrichtentyp [ORDERS;INVOIC;...], Version [D96A], Kunde [Karstadt;Globus;...]).
Damit ist man sehr flexibel.

Die meiste Zeit ist mit der Basiskomponente und der ersten EDIFACT Nachrichtenklasse drauf gegangen. Danach ging es sehr sehr schnell voran, da die verschiedenen Kunden alle relativ ähnliche EDIFACT Nachrichten verschicken.

Interessant war es aber wieder zu sehen das auch die großen Firmen einige Klopper in Ihren Daten haben (z.B. Artikelbezeichnungen die EDIFACT Steuerzeichen enthalten die nicht escaped wurden).
private Nachricht | Beiträge des Benutzers
DerHulk
myCSharp.de - Member

Avatar #avatar-1789.png


Dabei seit:
Beiträge: 270
Herkunft: Koblenz

beantworten | zitieren | melden

Bin auf meiner Suche nach einer Lib über diesen Thread gestolpert, und
für kommende Suchende kann ich dieses Lib empfehlen:

https://github.com/indice-co/EDI.Net

gibt es auch bei Nuget

https://www.nuget.org/packages/indice.Edi/
private Nachricht | Beiträge des Benutzers