Split-EdifactEnvelope #
ÜBERSICHT #
Zerlegt eine EDIFACT-Datei in einzelne Nachrichten und speichert jede als eigenen Mini-Interchange.
SYNTAX #
Split-EdifactEnvelope [-Path] <string> [-Destination] <string> [-PartnerName] <string>
[<CommonParameters>]
BESCHREIBUNG #
- Liest die EDIFACT-Datei segmentgenau über
Get-EdiMessageLinesmit Switch-KeepControlSegmentsein. - Gruppiert pro Interchange (UNB…UNZ) alle Nachrichten (UNH…UNT).
- Für jede Nachricht wird eine neue Datei geschrieben mit:
- (UNA, falls im Interchange vorhanden)
- UNB 1:1 aus dem Interchange (unverändert, inkl. Qualifiern/EANCOM/Testflag)
- UNH…UNT unverändert (UNT-Zähler wird nicht korrigiert, falls diese falsch waren)
- UNZ immer „1+
“
- Segmentterminator wird aus den gelieferten Segmenten abgeleitet; nach jedem Segment wird CRLF eingefügt.
- Dateien werden in Windows-1252 (ANSI) gespeichert.
- Datei-Namen enthalten den Nachrichtentyp, Partner, Referenz sowie „Index-von-Total“ innerhalb des Interchanges.
Ablauf #
- Datei einlesen: Get-EdiMessageLines -KeepControlSegments → Segmentarray inkl. UNA/UNB/UNZ.
- Bei UNB: Control-Ref merken und Anzahl UNH bis zum nächsten UNZ vorab zählen (Total pro Interchange).
- Nachrichten sammeln: von UNH bis UNT; Sonderfall „UNH ohne vorausgehendes UNT“ wird sicher geflusht.
- Schreiben:
- UNA (falls vorhanden) + UNB (1:1) + Nachricht (UNH…UNT) + „UNZ+1+
“ - Encoding 1252, CRLF nach jedem Segment, Segmentterminator erzwingen.
- Index/Total für den Dateinamen aus dem Interchange (z. B. „2-von-3“).
- Interchange-Ende (UNZ) oder Datei-Ende: offene Nachricht ggf. fl ushen (Fallback Total=1).
PARAMETER #
-Path #
Type: string
Pfad zur Eingabedatei (.edi/.edifact).
-Destination #
Type: string
Basiszielordner; es wird pro Nachrichtentyp (z. B. INVOIC, ORDERS) ein Unterordner angelegt.
-PartnerName #
Type: string
Partnerkennung für den Dateinamen (z. B. ESSELUNGA).
AUSGABEN #
string[]
Vollständige Pfade der erzeugten Ausgabedateien.
BEISPIELE #
# Zerlegt eine EDIFACT Interchange in alle enthaltenen Messages
Split-EdifactEnvelope -Path '.\inbound\mixed.edi' `
-Destination '.\postoffice\ESSELUNGA\inbound' `
-PartnerName 'ESSELUNGA' -Verbose
# Ergebnis (Beispiel):
# .\postoffice\ESSELUNGA\inbound\ORDERS\mixed (ORDERS-ESSELUNGA-02404106-1-von-2).edi
# .\postoffice\ESSELUNGA\inbound\INVOIC\mixed (INVOIC-ESSELUNGA-RECH123-2-von-2).edi
# Jede Datei enthält: [UNA?] + UNB (unverändert) + UNH…UNT (unverändert) + UNZ+1+<UNB-Ref>
VERWANDTE LINKS #
HINWEISE #
- UNB wird 1:1 übernommen; UNZ wird immer auf 1 gesetzt und nutzt die UNB-Control-Ref.
- UNT wird nicht korrigiert (Absicht). Eine Validierungsstufe kann das prüfen.
- Mehrere Interchanges pro Datei werden unterstützt; Zählen „x-von-y“ bezieht sich jeweils auf den aktuellen Interchange.
- Erfordert Get-EdiMessageLines mit -KeepControlSegments.