Split Edifact Envelope
Zuletzt geändert: 14.03.2026 05:56

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-EdiMessageLines mit Switch -KeepControlSegments ein.
  • 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 #

  1. Datei einlesen: Get-EdiMessageLines -KeepControlSegments → Segmentarray inkl. UNA/UNB/UNZ.
  2. Bei UNB: Control-Ref merken und Anzahl UNH bis zum nächsten UNZ vorab zählen (Total pro Interchange).
  3. Nachrichten sammeln: von UNH bis UNT; Sonderfall „UNH ohne vorausgehendes UNT“ wird sicher geflusht.
  4. Schreiben:
  • UNA (falls vorhanden) + UNB (1:1) + Nachricht (UNH…UNT) + „UNZ+1+
  • Encoding 1252, CRLF nach jedem Segment, Segmentterminator erzwingen.
  1. Index/Total für den Dateinamen aus dem Interchange (z. B. „2-von-3“).
  2. 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>

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.