Frage

Ich bin neu zu EDI, und ich habe eine Frage.

Ich habe gelesen, dass Sie die meisten bekommen können, was Sie brauchen, um über ein EDI-Format in den letzten drei Zeichen der ISA Linie suchen. Das ist in Ordnung, wenn jeder EDI Pause Linie getrennte Einheiten, aber ich habe festgestellt, dass viele einzelne Zeilen Dateien mit einem beliebigen Anzahl von Zeichen verwendet als Pause sind. Ich habe bemerkt, dass das allerletzte Zeichen in jedem EDI ich analysiert habe, ist der Bruch Charakter. Ich habe auf ein paar hundert sah, und haben keine Ausnahmen von dieser Regel gefunden. Wenn ich zum ersten Mal greifen, dass Charakter und die Nutzung, dass die letzten 3 der ISA Linie zu erhalten, soll ich vernünftigerweise erwarten, dass ich in der Lage sein werde, Daten von einem EDI zu analysieren?

Ich weiß nicht, ob das hilft, aber die EDI ‚Typen‘ in Frage neigen 850, zu sein 875. Ich bin mir nicht sicher, ob das ein Standard ist oder nicht, aber es kann erwähnenswert sein.

War es hilfreich?

Lösung

die Transaktionsart von edi nicht wirklich wichtig (850 = Auftrag, 875 = Lebensmittel po). ein paar edi Parser geschrieben zu haben, hier sind ein paar Dinge, die ich gefunden habe:

sollten Sie in der Lage sein, auf dem ISA zu zählen (und der ISA nur), die eine feste Breite (105 Zeichen, wenn der Speicher dient). Streifen, die ersten 105 Zeichen ab. alles danach und vor dem ersten Auftreten von „GS“ ist Ihr Leitungsabschluss (dies kann alles sein, gehören ein 0x07 - der Ton - also aufpassen, wenn Sie Ausgabe auf die Standardausgabe für das Debuggen oder Sie können eine Reihe von Pieptönen haben kommen aus dem Lautsprecher). normalerweise ist dies 1 oder 2 Zeichen, manchmal kann es sein (wenn die Person, die Sie das Senden von Daten fügt einen zusätzlichen Terminator aus irgendeinem Grund). sobald Sie den Leitungsabschluss haben, können Sie das Segment (Feld) Trennzeichen erhalten. i normalerweise ziehen Sie den 3 Charakter der GS Linie und verwenden, die, obwohl das 4. Zeichen der ISA Linie sollte auch funktionieren.

auch darüber im Klaren sein, dass Sie eine Datei mit mehreren ISA in ihm bekommen können. in diesem Fall, dass Sie kann nicht count auf die Linie oder Feldtrennzeichen das gleiche in jedem ISA zu sein.

Eine andere Sache .. es ist auch möglich (auch hier nicht sicher, ob seine Spezifikation) für eine EDI-Datei eine variable Länge ISA zu haben. das ist sehr selten, aber ich hatte es aufzunehmen. Wenn das passiert, müssen Sie die Zeile in seine Felder analysieren. das letzte Feld in der ISA ist nur ein Zeichen lang, so dass Sie die reale Länge des ISA davon bestimmen können. wenn es nach mir ginge, würde ich nicht kümmern, wenn Sie eine Datei wie es zu sehen. es ist ein seltenes Vorkommen.

, was ich oben gesagt habe, kann nicht auf das Schreiben der „spec“ sein ... das heißt, ich bin nicht sicher, ob ihre Rechts verschiedenen Zeilenseparatoren in der gleichen Datei zu haben, aber in unterschiedlichen ISAs, aber es technisch möglich ist, und ich unterbringen, weil ich Dateien zu verarbeiten, das in dieser Art und Weise durchkommen. der edi Prozessor i Prozesse nach oben von 5000 Dateien pro Tag mit über 3000 möglichen Datenquellen verwenden (so ich viele seltsame Dinge zu sehen).

Mit freundlichen Grüßen, don

Andere Tipps

EDI-Gehalt von Segmenten und Elementen.

Um es zu analysieren, müssen Sie es in Segmente zuerst brechen, und dann Elemente wie so (in PHP):

<?php 

$edi = "YOUR EDIT STRING!";
$segment_delimeter = "~";
$element_delimeter = "*";

//First break it into segments
$segments = explode($segment_delimiter, $edi);

//Now break each segment into elements
$segs_and_elems = array();
foreach($segments as $segment){
    $segs_and_elems[] = explode(element_delimeter, $segment);
}

//To echo out what type of EDI this is for example:
foreach($segs_and_elems as $seg){
    if($seg[0] == "GS"){ echo($seg[1]); }
}

?>

Hope, das hilft Ihnen den Start.

Für Header-Informationen der folgenden Java erhalten Sie die grundlegenden Informationen recht einfach erhalten lassen. C # hat die Spaltung als auch und der Code sieht sehr ähnlich

try {
    String sCurrentLine;
    fileContent = new BufferedReader(new FileReader(filePathName));

    sCurrentLine = fileContent.readLine();

    // get the delimiter after ISA, if you know your field delimiter just force it.
    // we look at lots of different senders messages so never sure what it will be.

    delimiterElement = sCurrentLine.substring(3,1); // Grab the delimiter they are using
    String[] splitMessage = sCurrentLine.split(delimiterElement,16); // to get the messages if everything is on one line of course
    senderQualifier = splitMessage[5]; //who sent something we need fixed qualifier
    senderID = splitMessage[6]; //who sent something we need fixed alias
    ISA = splitMessage[13]; // Control number
    testIndicator = splitMessage[15]; 
    dateStamp = splitMessage[9];  
    timeStamp = splitMessage[10];

    ... do stuff with the pieces of info ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top