myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » EDI (EDIFACT) Parser mit C#
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

EDI (EDIFACT) Parser mit C#

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Geraldo23 Geraldo23 ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.07.2004
Beiträge: 19
Entwicklungsumgebung: Visual Studio .NET 2003
Herkunft: Österreich


Geraldo23 ist offline

EDI (EDIFACT) Parser mit C#

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
18.11.2004 19:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Xqgene
myCSharp.de-Mitglied

Dabei seit: 29.04.2004
Beiträge: 2.051


Xqgene ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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? großes Grinsen
18.11.2004 21:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
cdr cdr ist männlich
myCSharp.de-Mitglied

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


cdr ist offline MSN-Passport-Profil von cdr anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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)
19.11.2004 20:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
magog96 magog96 ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.11.2004
Beiträge: 8
Entwicklungsumgebung: Eclipse
Herkunft: Deutschland


magog96 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von magog96 am 25.11.2004 01:18.

22.11.2004 00:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Geraldo23 Geraldo23 ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.07.2004
Beiträge: 19
Entwicklungsumgebung: Visual Studio .NET 2003
Herkunft: Österreich

Themenstarter Thema begonnen von Geraldo23

Geraldo23 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
23.11.2004 11:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
magog96 magog96 ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.11.2004
Beiträge: 8
Entwicklungsumgebung: Eclipse
Herkunft: Deutschland


magog96 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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...arch=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.
25.11.2004 01:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Pulpapex Pulpapex ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.07.2003
Beiträge: 939
Entwicklungsumgebung: Eclipse / VC# 2005
Herkunft: Rostock


Pulpapex ist offline Füge Pulpapex Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Pulpapex am 17.12.2004 17:31.

17.12.2004 17:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegt mehr als ein Jahr.
hape hape ist männlich
myCSharp.de-Mitglied

avatar-1958.jpg


Dabei seit: 19.05.2006
Beiträge: 121
Entwicklungsumgebung: VS 2005 Pro / SQL 2005
Herkunft: Stuttgart


hape ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
20.05.2006 12:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Spaghetti
myCSharp.de-Mitglied

Dabei seit: 06.02.2006
Beiträge: 69


Spaghetti ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

hi hape,

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

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
20.05.2006 13:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
hape hape ist männlich
myCSharp.de-Mitglied

avatar-1958.jpg


Dabei seit: 19.05.2006
Beiträge: 121
Entwicklungsumgebung: VS 2005 Pro / SQL 2005
Herkunft: Stuttgart


hape ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
20.05.2006 13:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Rainbird Rainbird ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2834.jpg


Dabei seit: 28.05.2005
Beiträge: 3.721
Entwicklungsumgebung: Visual Studio 2012
Herkunft: Mauer


Rainbird ist offline

Edi

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
20.05.2006 19:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
maxE maxE ist männlich
myCSharp.de-Mitglied

Dabei seit: 27.04.2004
Beiträge: 456
Entwicklungsumgebung: SharpDevelop
Herkunft: Sachsen


maxE ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hier hat jemand schon mal was dazu gemacht:
 http://www.codeproject.com/csharp/edix.asp
Vielleicht ganz nützlich.
20.05.2006 20:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
magog96 magog96 ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.11.2004
Beiträge: 8
Entwicklungsumgebung: Eclipse
Herkunft: Deutschland


magog96 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von magog96 am 21.05.2006 18:16.

21.05.2006 18:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 10 Jahre.
DerHulk DerHulk ist männlich
myCSharp.de-Mitglied

avatar-1789.png


Dabei seit: 23.12.2005
Beiträge: 270
Entwicklungsumgebung: VisualStudio
Herkunft: Koblenz


DerHulk ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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/
16.10.2016 11:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 15 Jahre.
Der letzte Beitrag ist älter als 3 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 23.02.2020 02:55