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) oderUNOB: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
UNZundUNT). - Darf nicht in Nutzdaten vorkommen (ggf. mit
?maskieren).
- Muss am Ende jedes Segments stehen (auch nach
- Daten-Element-Trenner (
+):- Trennt einzelne Datenfelder (z. B.
BGM+220+AB12345). - Leere Felder werden durch zwei aufeinanderfolgende
+dargestellt (z. B.LIN++ART001).
- Trennt einzelne Datenfelder (z. B.
- Komponenten-Trenner (
:):- Wird nur innerhalb zusammengesetzter Datenfelder verwendet (z. B.
ART001:INfür Artikelnummer und Einheit).
- Wird nur innerhalb zusammengesetzter Datenfelder verwendet (z. B.
- Wiederholungs-Trenner (
*):- Trennt wiederholte Datenfelder (z. B. mehrere
QTY-Segmente:QTY+21:10*QTY+22:5).
- Trennt wiederholte Datenfelder (z. B. mehrere
- Freigabezeichen (
?):- Maskiert ein Trennzeichen, wenn es als Nutzdaten vorkommt (z. B.
NAD+BY+Firma?+ GmbHfür "Firma+ GmbH").
- Maskiert ein Trennzeichen, wenn es als Nutzdaten vorkommt (z. B.
b) Behandlung von Sonderfällen
- Leere Felder:
- Werden durch kein Zeichen zwischen zwei Trennern dargestellt (z. B.
DTM++20230401).
- Werden durch kein Zeichen zwischen zwei Trennern dargestellt (z. B.
- Wiederholte Segmente:
- Werden durch mehrfaches Auftreten des Segments dargestellt (z. B. zwei
LIN-Segmente für zwei Positionen).
- Werden durch mehrfaches Auftreten des Segments dargestellt (z. B. zwei
- 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).
- Beispiel: Der Firmenname "Müller & Co." wird zu
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:
#
- Daten-Element-Trenner:
Wichtig: Solche Abweichungen müssen vorab mit allen Partnern abgestimmt werden.
- Hier wären die Trennzeichen:
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
- Standard-Trennzeichen verwenden:
- Halten Sie sich an
+,:,*,?,'– diese sind universell kompatibel.
- Halten Sie sich an
- 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.
- Geben Sie die Syntax-Version an (z. B.
- Testen mit Referenznachrichten:
- Nutzen Sie offizielle EDIFACT-Beispiele (z. B. von UN/CEFACT) zum Abgleich.
- Dokumentation der Trennzeichen:
- Halten Sie in Ihrer Implementierungsdokumentation fest, welche Trennzeichen verwendet werden.
- Fehlerbehandlung:
- Implementieren Sie eine Validierung, die prüft, ob Trennzeichen korrekt gesetzt sind.
6. Weiterführende Ressourcen
- UN/EDIFACT-Syntax (ISO 9735): Offizielle Spezifikation: ISO 9735
- EDIFACT-Verzeichnisse: Nachrichtenstrukturen: UN/EDIFACT Directories
- Tools zur Validierung:
- EDI Notepad (kostenpflichtig)
- EDI Validator (Online-Tool)
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.