New-EdifactParser #
ÜBERSICHT #
Erzeugt ein EdifactParser-Objekt zur Verarbeitung, Analyse und Generierung von EDIFACT-Dokumenten.
SYNTAX #
New-EdifactParser [[-Data] <string>] [<CommonParameters>]
BESCHREIBUNG #
Die Funktion New-EdifactParser erstellt ein neues Objekt der Klasse EdifactParser. Dieses bietet umfangreiche Methoden, um EDIFACT-Nachrichten wie INVOIC, ORDERS, DESADV usw. strukturiert einzulesen, zu analysieren, zu verändern und bei Bedarf wieder auszugeben. Beim Einlesen wird die Nachricht in das EULANDA-META-XML-Format überführt. Umgekehrt kann beim Schreiben eine EDIFACT-Nachricht aus diesem Format generiert werden. Das EULANDA-META-XML dient dabei als neutrales Zwischensystem und lässt sich direkt in die EULANDA-SQL-Datenbank importieren oder daraus exportieren. Auf diese Weise können sämtliche Prüf- und Monitoring-Werkzeuge, die für EULANDA-META-XML vorhanden sind, auch für EDIFACT-Nachrichten genutzt werden. Zudem lässt sich dieses XML leicht in andere Formate transformieren, etwa eine EDIFACT-INVOIC-Nachricht in eine XRechnung. Die Parser-Logik basiert auf speziell erzeugten Syntaxdefinitionen aus offiziellen UN-ECE-Dokumenten. Dadurch kann gezielt auf verschiedene EDIFACT-Versionen und Subsets reagiert werden, inklusive nationaler oder branchenspezifischer Erweiterungen.
Das erzeugte Objekt bietet: #
- Einlesen von EDIFACT-Daten aus Dateien oder Textstrings.
- Dynamische Segmentbearbeitung (Hinzufügen, Löschen, Ändern).
- Zugriff auf einzelne Felder und Komponenten mittels komfortabler Methoden.
- Export der EDIFACT-Struktur als EULANDA-META-XML zur weiteren Verarbeitung.
- Lesen und Speichern in unterschiedlichen Encodings und Formaten.
Standardmäßig verwendet das Objekt die EDIFACT-Syntax D96A, kann aber auch flexibel mit einer benutzerdefinierten Syntax initialisiert werden, um andere EDIFACT-Standards zu unterstützen.
Methoden #
LoadEdifact(string $edifactFilePath)Lädt und parst eine bestehende EDIFACT-Nachricht aus einer Datei zur internen Weiterverarbeitung.SaveEdifact(string $outputFilePath)Speichert die aktuelle EDIFACT-Nachricht wieder in eine Datei, einschließlich aller Änderungen.ParseSegments()Analysiert und zerlegt die geladene EDIFACT-Nachricht in einzelne Segmente und Felder zur Weiterverarbeitung.GetFieldValue(int $segmentIndex, int $fieldIndex [, int $componentIndex])Liest den Wert eines spezifischen Feldes (optional auch einer Komponente) im angegebenen Segment.SetFieldValue(int $segmentIndex, int $fieldIndex, string $value [, int $componentIndex])Setzt einen neuen Wert für ein spezifisches Feld oder eine Komponente innerhalb eines Segments.MoveFirst()Setzt den Cursor auf das erste Segment der EDIFACT-Nachricht zurück.MoveNext()Bewegt den Cursor zum nächsten Segment; liefertfalsebei Erreichen des Nachrichtenendes.MovePrevious()Positioniert den Cursor auf das vorherige Segment, sofern vorhanden.GetCurrentSegmentName()Gibt den Namen des aktuellen Segments zurück.FindSegment(string $segmentName [, int $startPosition])Sucht nach dem nächsten Segment mit dem angegebenen Namen, optional ab einer Startposition.InsertSegment(int $position, string $segmentData)Fügt ein neues Segment an der angegebenen Position innerhalb der Nachricht ein.DeleteSegment(int $segmentIndex)Entfernt ein Segment an der angegebenen Position aus der EDIFACT-Nachricht.EscapeString(string $value)Kodiert Sonderzeichen im EDIFACT-Format entsprechend den Syntaxregeln.UnescapeString(string $value)Dekodiert EDIFACT-spezifisch kodierte Sonderzeichen zur weiteren Verarbeitung.ValidateMessage()Prüft die EDIFACT-Nachricht auf strukturelle und syntaktische Korrektheit anhand der EDIFACT-Definitionen.GenerateXml()Wandelt die geladene EDIFACT-Nachricht vollständig in ein strukturiertes XML-Dokument um.
PARAMETER #
-Data #
Type: string
Default: ''
Optionaler Parameter zur Übergabe einer benutzerdefinierten Syntaxdefinition als mehrzeiliger String. Die Syntax definiert Struktur und Bedeutung der Segmente und ihrer Felder gemäß UN-ECE-Vorgaben.
Beispiel einer Syntaxdefinition: BGM+(C002)1001:1131:3055:1000+1004+1225+4343
Wird kein Parameter angegeben, nutzt das Objekt standardmäßig die integrierte EDIFACT D96A Syntax.
AUSGABEN #
EdifactParser
Das instanzierte Parser-Objekt für EDIFACT-Daten.
BEISPIELE #
# Erzeugt ein EdifactParser-Objekt mit Standard D96A-Syntax
$edi = New-EdifactParser
# Erzeugt ein EdifactParser-Objekt mit eigener Syntaxdefinition
$customSyntax = @'
BGM+(C002)1001:1131:3055:1000+1004+1225+4343
LIN+1082+(C212)7140:7143:1131:3055:7143
'@
$edi = New-EdifactParser -Data $customSyntax
# Lädt ein EDI File mit automatischer Zeichensatz-Erkennung
$edi.LoadFromFile('C:\Path\To\File.edi')
# Fügt ein neues Segment hinzu
$edi.AddSegment("BGM+380:9:6:12345+4711+2'")
# Verteilt einen langen String auf mehrdeutige Felder einer Komponente
$edi.SetComponentFields("C080", '3036', "EULANDA Software GmbH und Co KG für alle Internet GmbH", $true)
# Exportiert die aktuelle EDIFACT-Struktur als formatierte XML
$xmlString = $edi.GetXmlString()
# Setzt ein einzelnes Feld in einem Segment
$edi.SetField('3207', "IT")
# Liest ein einzelnes Feld aus einem Segment
$edi.GetField('3207')
# Gezielter Zugriff auf das erste Feld einer mehrdeutigen Komponente
$edi.GetComponentField('C080', '1')
# Speichert das EDIFACT-Dokument als ANSI-Datei
$edi.SaveToFile("C:\Path\To\File.edi", "ANSI")
# Zeigt einen detaillierten Segment-Bericht mit Metainfos
$edi.GetSegmentReport()
HINWEISE #
Kompatibilität: PowerShell 5.1 und höher
Das Objekt unterstützt methodische Segmentnavigation, Field- und Component-Level-Manipulation sowie XML-Transformationen, was besonders bei komplexen Integrationsszenarien hilfreich ist.