Willi Mako
// PROTOCOL:

EDIFACT-Trennzeichen: Standards & korrekte Nutzung erklärt

ID#142-28
STATUSREAD_ONLY
AUTHORSYS_ADMIN
TAGS [EDIFACT][FEHLERBEHANDLUNG]

Trennzeichen in EDIFACT: Standardvorgaben und korrekte Anwendung

EDIFACT (Electronic Data Interchange for Administration, Commerce and Transport) verwendet ein festgelegtes Set an Trennzeichen, um die Struktur von Nachrichten zu definieren. Diese Trennzeichen sind essenziell für die korrekte Interpretation der Daten und müssen in jeder Implementierung konsistent angewendet werden. Die folgenden Trennzeichen sind gemäß UN/EDIFACT-Syntax (ISO 9735) standardmäßig festgelegt und werden in offiziellen Beispielen verwendet.


1. Standard-Trennzeichen in EDIFACT

Die folgenden Zeichen haben in EDIFACT eine spezifische Funktion und dürfen nicht für andere Zwecke verwendet werden:

Trennzeichen Funktion Standardwert (UNB/UNZ-Segment) Häufigkeit
Segment-Terminator Beendet ein Segment (z. B. UNH, LIN, UNT). ' (Apostroph) Einmal pro Segment
Daten-Element-Trenner Trennt einzelne Datenfelder innerhalb eines Segments. + (Pluszeichen) Zwischen jedem Datenfeld
Komponenten-Trenner Trennt Unterkomponenten innerhalb eines zusammengesetzten Datenfelds. : (Doppelpunkt) Innerhalb eines Datenfelds
Wiederholungs-Trenner Trennt wiederholte Datenfelder (z. B. mehrere Artikelpositionen). * (Sternchen) Bei Wiederholungen
Freigabezeichen Maskiert ein Trennzeichen, wenn es als Nutzdaten vorkommt (Escape-Zeichen). ? (Fragezeichen) Vor einem Trennzeichen in Daten

Beispiel einer EDIFACT-Nachricht mit Standard-Trennzeichen:

UNB+UNOA:2+SENDER123+EMPFÄNGER456+230401:1020+123456'
UNH+1+ORDERS:D:96A:UN'
BGM+220+AB12345+9'
DTM+137:20230401:102'
LIN+1++ART001:IN'
QTY+21:10'
UNS+S'
UNT+6+1'
UNZ+1+123456'

2. Definition der Trennzeichen im UNB-Segment

Die tatsächlich verwendeten Trennzeichen werden im UNB-Segment (Interchange Header) definiert. Dieses Segment steht am Anfang jeder EDIFACT-Datei und legt die Syntax fest. Die Struktur lautet:

UNB+<Syntax-Kennung>:<Syntax-Version>+<Absender>+<Empfänger>+<Datum/Zeit>+<Referenz>+<Anwendungsreferenz>+<Priorität>+<Kommunikationsreferenz>+<Trennzeichen-Definition>'

Relevanter Ausschnitt für Trennzeichen:

  • Syntax-Kennung (erstes Feld nach UNB+):

    • UNOA:2 (Standard-Syntax, Version 2) oder UNOB:3 (erweiterte Syntax).
    • Die Syntax-Version bestimmt, welche Trennzeichen standardmäßig gelten (meist Version 2 oder 3).
  • Trennzeichen-Definition (letztes Feld vor dem Segment-Terminator):

    • Wird nur angegeben, wenn von den Standardwerten abgewichen wird.
    • Format: +<Daten-Element-Trenner><Komponenten-Trenner><Wiederholungs-Trenner><Freigabezeichen><Segment-Terminator>
    • Beispiel: +:+*?' (hier wären : der Daten-Element-Trenner, + der Komponenten-Trenner usw. – Achtung: Dies ist ein fiktives Beispiel! In der Praxis werden die Standardwerte verwendet.)

Hinweis:

  • In 99 % der Fälle werden die Standard-Trennzeichen (+, :, *, ?, ') verwendet.
  • Eine Abweichung muss explizit im UNB-Segment kommuniziert werden und ist nur in Ausnahmefällen sinnvoll (z. B. bei Systemen, die bestimmte Zeichen nicht verarbeiten können).

3. Korrekte Anwendung in der eigenen Implementierung

Um EDIFACT-Nachrichten korrekt zu generieren oder zu parsen, müssen folgende Regeln beachtet werden:

a) Konsistente Verwendung der Trennzeichen
  • Segment-Terminator ('):
    • Muss am Ende jedes Segments stehen (auch nach UNZ und UNT).
    • Darf nicht in Nutzdaten vorkommen (ggf. mit ? maskieren).
  • Daten-Element-Trenner (+):
    • Trennt einzelne Datenfelder (z. B. BGM+220+AB12345).
    • Leere Felder werden durch zwei aufeinanderfolgende + dargestellt (z. B. LIN++ART001).
  • Komponenten-Trenner (:):
    • Wird nur innerhalb zusammengesetzter Datenfelder verwendet (z. B. ART001:IN für Artikelnummer und Einheit).
  • Wiederholungs-Trenner (*):
    • Trennt wiederholte Datenfelder (z. B. mehrere QTY-Segmente: QTY+21:10*QTY+22:5).
  • Freigabezeichen (?):
    • Maskiert ein Trennzeichen, wenn es als Nutzdaten vorkommt (z. B. NAD+BY+Firma?+ GmbH für "Firma+ GmbH").
b) Behandlung von Sonderfällen
  • Leere Felder:
    • Werden durch kein Zeichen zwischen zwei Trennern dargestellt (z. B. DTM++20230401).
  • Wiederholte Segmente:
    • Werden durch mehrfaches Auftreten des Segments dargestellt (z. B. zwei LIN-Segmente für zwei Positionen).
  • Maskierung von Trennzeichen in Daten:
    • Beispiel: Der Firmenname "Müller & Co." wird zu NAD+BY+Müller ?& Co. (das & wird nicht maskiert, da es kein Trennzeichen ist).
c) Validierung der Trennzeichen
  • Parser-Implementierung:
    • Ein EDIFACT-Parser muss die Trennzeichen aus dem UNB-Segment auslesen und dynamisch anwenden.
    • Falls keine Trennzeichen definiert sind, müssen die Standardwerte verwendet werden.
  • Generierung von Nachrichten:
    • Die Trennzeichen müssen durchgehend konsistent sein.
    • Testen Sie die Ausgabe mit einem EDIFACT-Validator (z. B. EDI Validator).
d) Abweichungen von den Standard-Trennzeichen
  • Nur in Ausnahmefällen sollten andere Trennzeichen verwendet werden (z. B. wenn ein Partner-System bestimmte Zeichen nicht verarbeitet).

  • Beispiel für abweichende Trennzeichen im UNB-Segment:

    UNB+UNOA:2+SENDER+EMPFÄNGER+230401:1020+123456++:;*?#'
    
    • Hier wären die Trennzeichen:
      • Daten-Element-Trenner: :
      • Komponenten-Trenner: ;
      • Wiederholungs-Trenner: *
      • Freigabezeichen: ?
      • Segment-Terminator: #

    Wichtig: Solche Abweichungen müssen vorab mit allen Partnern abgestimmt werden.


4. Häufige Fehler und Lösungen

Fehler Ursache Lösung
Parser erkennt Segmente nicht Falscher Segment-Terminator (z. B. " statt ') UNB-Segment prüfen und Standardwert (') verwenden.
Datenfelder werden falsch zugeordnet Falscher Daten-Element-Trenner (z. B. , statt +) Konsistente Verwendung von + sicherstellen.
Komponenten werden nicht erkannt Komponenten-Trenner fehlt oder falsch (z. B. ART001-IN statt ART001:IN) Doppelpunkt (:) korrekt einsetzen.
Wiederholte Felder werden ignoriert Wiederholungs-Trenner fehlt (z. B. QTY+21:10QTY+22:5 statt QTY+21:10*QTY+22:5) Sternchen (*) für Wiederholungen verwenden.
Trennzeichen in Nutzdaten Unmaskierte Trennzeichen (z. B. Firma+GmbH statt Firma?+GmbH) Freigabezeichen (?) vor Trennzeichen setzen.

5. Empfehlungen für die Implementierung

  1. Standard-Trennzeichen verwenden:
    • Halten Sie sich an +, :, *, ?, ' – diese sind universell kompatibel.
  2. UNB-Segment korrekt aufbauen:
    • Geben Sie die Syntax-Version an (z. B. UNOA:2).
    • Definieren Sie nur dann abweichende Trennzeichen, wenn es zwingend erforderlich ist.
  3. Testen mit Referenznachrichten:
    • Nutzen Sie offizielle EDIFACT-Beispiele (z. B. von UN/CEFACT) zum Abgleich.
  4. Dokumentation der Trennzeichen:
    • Halten Sie in Ihrer Implementierungsdokumentation fest, welche Trennzeichen verwendet werden.
  5. Fehlerbehandlung:
    • Implementieren Sie eine Validierung, die prüft, ob Trennzeichen korrekt gesetzt sind.

6. Weiterführende Ressourcen


Zusammenfassung

EDIFACT verwendet standardmäßig die Trennzeichen + (Daten-Element), : (Komponente), * (Wiederholung), ? (Freigabe) und ' (Segment). Diese werden im UNB-Segment definiert und müssen in jeder Implementierung konsistent angewendet werden. Abweichungen sind möglich, erfordern aber eine explizite Vereinbarung mit allen Kommunikationspartnern. Durch die Einhaltung der Syntax-Regeln und eine gründliche Validierung lassen sich Fehler vermeiden und eine reibungslose Datenübertragung gewährleisten.