X12InputCheckUnit

Gruppe

Integration Units

Funktion

Die X12InputCheckUnit dient zur Eingangsprüfung der Datenqualität von X12-Daten und der Erzeugung formalisierter Fehlermeldungen.

Beschreibung


Die X12InputCheckUnit dient zur Eingangsprüfung der Datenqualität von X12-Daten und der Erzeugung formalisierter Fehlermeldungen.

Siehe auch Abschnitte Automatische Fehlerbereinigung und Systemüberwachung mit Profilen.

Grundstruktur der X12 Daten


In einer X12-Datei können mehrere Sendungen sein, jede innerhalb eines Segment-Paares ISA und IEA. Das ISA-Segment hat eine eindeutige ID. Das ISA-Segment definiert auch die Trennzeichen für Segment, Datenelement und Komponente.

Eine Sendung kann mehrere Transaktions-Gruppen GS bis GE enthalten. Jede Transaktionsgruppe beginnt mit einem Segment GS und endet mit GE. Die Gruppe hat eine ID, die innerhalb der Sendung eindeutig ist.

Jede Gruppe enthält üblicherweise mehrere Transaktionen. Jede Transaktion beginnt mit ST und endet mit SE. Jede Transaktion hat eine ID, die innerhalb der Gruppe eindeutig ist.

Die Transaktion besteht aus mehreren Datensegmenten. Jedes Datensegment beginnt mit einem Bezeichner und einer Liste von Datenelementen, die durch das Datenelement-Trennzeichen (üblicherweise *) getrennt sind. Den Abschluss bildet das Segment-Trennzeichen (üblicherweise ~).

Die Datenelemente können entweder einfache Werte darstellen oder einen zusammengesetzten Wert, dessen Subelemente mit dem Subelement-Trennzeichen (üblicherweise :) getrennt werden.

Arbeitsweise der X12InputCheckUnit


Die Unit wird in Phase 5 eines Profils (Check-Profil) verwendet. Sie liest immer die Backup-Datei (der Eingangsdaten) des aktuellen Jobs, unabhängig von der Zielstruktur des Check-Profils. Das Mapping kann für die Bereitstellung der Parameter zur Konfiguration der X12InputCheckUnit verwendet werden. Insbesondere wird erst aus dem ST-Segment die konkrete Datenstruktur erkannt. Das passende Verarbeitungs-Profil (Target-Profil) für diesen X12-Dokument-Typ wird also erst durch das Check-Profil ermittelt. Der Name des Target-Profils wird der Integration Unit deshalb üblicherweise in einer Variablen übergeben.

Die Unit prüft für jede Sendung (ISA bis IEA) zuerst die Integrität, also ob ISA und IEA die gleiche ID haben und ob der Zähler in IEA mit der Anzahl der enthaltenen Gruppen übereinstimmt.

Jede Gruppe (GS bis GE) wird einzeln geprüft, ob GS und GE die gleiche ID haben und der Zähler in GE mit der Zahl der Transaktionen in der Gruppe übereinstimmt.

Innerhalb jeder Gruppe wird jede Transaktion (ST bis SE) einzeln geprüft, ob ST und SE die gleiche ID haben und der Zähler mit der Anzahl der Segmente übereinstimmt.

Innerhalb jeder Transaktion werden die Segmente geprüft. Dazu werden sie mit dem X12-Parser gegen den Quellbaum des Target-Profils geprüft.

Der X12-Parser wird mit dem Parameter strong check=true angewiesen, ein Datensegment, für das es in der Quellstruktur keine Definition gibt, als Fehler zu erkennen. Mit dem Parameter instant check=true wird die Prüfung auf Pflichtfelder, Datentypen und Feldgrößen sofort ausgeführt. Das ist die Grundlage dafür, dass bei einem Fehler die Segmentnummer und die originalen Segment-Daten in die Fehlermeldung übernommen werden können.

Wenn z. B. eine Gruppe vier Transaktionen enthält, von denen drei fehlerfrei sind und eine einen Fehler enthält, dann wird die fehlerhafte Transaktion aus den Originaldaten herausgenommen und der Zähler im GE-Segment dieser Gruppe entsprechend korrigiert. Die auf diese Weise "bereinigten Daten" werden an das Target-Profil per Message gesendet.

Die fehlerhafte Transaktion wird in eine Kopie ihrer GS- und GE-Sätze gestellt, der GE-Zähler korrigiert und diese Gruppe dann in eine Kopie ihrer ISA- und IEA-Segmente mit korrigiertem IEA-Zähler gestellt. Diese X12-Datei wird dann an das konfigurierte Error Profile per Message gesendet. Falls der Integration Unit-Parameter für das Error-Profil leer gelassen wurde, werden die Daten stattdessen an das Profil gesendet, das in Phase 1 des Target-Profils als Fehler-Profil konfiguriert wurde.

Ein formales Prüfprotokoll wird dem konfigurierten X12_997 Profile per Message gesendet, das für jede gültige Transaktion einen OK-Status enthält und für jede fehlerhafte Transaktion einen ERR-Status.

Die Reihenfolge ist:

1) Prüfung der Daten mit Hilfe der Quellstruktur des Target Profile.
2) Senden des Prüfprotokolls an das X12_997-Profile.
3) Senden der fehlerfreien Daten an das Target Profile.
4) Senden der Fehlerdaten an das Error Profile.

Dieses Prüfprotokoll kann genutzt werden, um automatisch für jede einzelne Transaktion Bestätigungen, oder Fehlermeldungen zu erzeugen. In der X12-Spezifikation gibt es den Transaktionstyp 997, der speziell für solche Rückmeldungen bestimmt ist.

Aufbau des X12-Check-Protokolls


Das Prüfprotokoll enthält als ersten Datensatz den ISA-Satz, darunter den GS-Satz und darunter die Status-Sätze (OK bzw. ERR) für jede Transaktion der Gruppe. Unmittelbar hinter dem Status-Satz folgt die komplette Transaktion von ST bis SE und dahinter eine Leerzeile, nach der wieder ein Status-Satz folgen kann.

Danach wiederholt sich das mit dem nächsten GS-Satz, falls die Sendung mehrere Gruppen enthält.

Der ISA-Satz, der GS-Satz und die gesamte Transaktion sind nur zur Information, bzw. zur weitergehenden Auswertung enthalten. Die eigentliche Information steckt in den Status-Sätzen. Status-Sätze haben eine CSV-Struktur, mit dem Pipe-Zeichen als Feldtrenner. Es gibt die Satzarten OK und ERR.

Hier ein einzeiliger Ausschnitt des Protokolls, mit einem ERR-Status-Satz.

ERR|000000602|603|0603|§1001|2|F337-1|BIA*08*DC*DAILY STATUS*20130424|mandatory field has no value


ERR

Satzart, hier Fehlerstatus.

000000602

Sendungsnummer (ISA-ID).

603

Gruppennummer (GS-ID).

0603

Transaktion (ST-ID).

§1001

Fehlernummer, hier 1001: "Pflichtfeld hat keinen Wert". Eine vollständige Liste der Fehlernummern finden Sie im Abschnitt unten.

Hinweis: Die Bedeutung des Fehlercodes ist immer nochmal im letzten Teilstück des ERR-Satzes sprachlich beschrieben. Hier z. B. mit mandatory field has no value.

2

Nummer des falschen Segments innerhalb der Transaktion.

F337-1

Name des Feldes oder Knotens.

BIA*08*DC*DAILY STATUS*20130424

Daten, in denen der Fehler ist.

mandatory field has no value

Fehlerursache.


Ein OK-Status-Satz beginnt mit der Satzart OK und endet mit der ST-ID, also vor dem Zeichen § für die Fehlernummer.

Parameterbeschreibung


Parametername

Erlaubte Werte

Default-Wert

Beschreibung

Error Profile



Name des Profils, an das die fehlerhaften Daten gehen.

instant check

true|false

true

Sofortige Prüfung jedes Segments.

strong check

true|false

true

Intensive Prüfung.

Target Profile


@VAR_TARGET_PROFILE@

Name des X12-Verarbeitungsprofils.

X12_997 Profile



Name des Profils, das die Prüfungsergebnisse erhält.

Fehlernummern


Fehlernummer

Bedeutung

90

Nachricht leer.

999

Unbekannter Fehler.

1001

Pflichtfeld fehlt.

1002

Feldlänge überschritten.

1003

Unerwarteter Feldwert.

1100

Element ist nicht als Knoten sondern als Feld definiert.

1101

Im Knoten kein Feld für ein wiederholendes Datenfeld gefunden.

1103

Element hat Komponenten, aber ist als einfaches Feld definiert.

1104

Element ist mehrfach vorhanden.

1197

Ungültiger Feld-Trenner.

1198

Ungültiger Komponenten-Trenner.

1199

Ungültiger Segment-Trenner.

1209

Mehr Werte für Komponente gefunden als definiert.

1300

Segment hat kein Eltern-Element.

1301

Segment ist leer.

1302

Fehlende Segment-Definition.

1303

Fehlendes Pflicht-Segment.

1308

Segment hat weniger Felder als definiert.

1309

Mehr Felder als im Segment definiert gefunden.

1311

Ungültiges Format, ISA-Segment erwartet.

1319

Ungültiges Format, IEA-Segment erwartet.

1321

Ungültiges Format, GS- oder ST-Segment erwartet.

1329

Ungültiges Format, GE- oder SE-Segment erwartet.

1501

IEA-Zähler inkonsistent.

1502

GE-Zähler inkonsistent.

1503

SE-Zähler inkonsistent.

1511

IEA Interchange Control Number deckt sich nicht mit der von ISA.

1512

GE Interchange Control Number deckt sich nicht mit der von GS.

1513

SE Interchange Control Number deckt sich nicht mit der von ST.