Beispiel: Anpassen einer ANSI X12-Transaktion

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele >  EDI  > Anpassen der EDI-Struktur >

Beispiel: Anpassen einer ANSI X12-Transaktion

In diesem Beispiel wird gezeigt, wie Sie MapForce anpassen können, damit es nicht standardkonforme oder geänderte X12-Formate verarbeiten kann. Das Beispielmapping dazu finden Sie unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2019\MapForceExamples\Orders-Custom-X12.mfd. Beachten Sie, dass MapForce dieses Mapping nicht erfolgreich validieren kann, falls Sie das Mapping öffnen, ohne vorher die Anleitungen zur benutzerdefinierten Anpassung befolgt zu haben. Der Grund hierfür ist, dass das Mapping eine benutzerdefinierte X12-Collection referenziert, die auf Ihrem Rechner noch nicht zur Verfügung steht (Sie wird in diesem Beispiel erstellt).

 

Im Beispielmapping werden Daten aus der Datei Orders-Custom.X12 aus dem Verzeichnis <Dokumente>\Altova\MapForce2019\MapForceExamples\ gelesen. Wenn Sie diese Datei mit einem Text-Editor öffnen, sehen Sie, dass darin ein benutzerdefiniertes N2-Segment verwendet wird: Zeile 6 enthält den den zusätzlichen Eintrag ++Mrs:

x12-source1

Bevor Sie Daten aus benutzerdefinierten X12-Dateien wie der oben gezeigten mappen können, muss eine benutzerdefinierte X12-Konfiguration erstellt werden. In diesem Beispiel werden wir die X12-Standardkonfiguration anpassen, indem wir das N2-Segment durch ein neues Datenelement für die Anrede der Person erweitern. Sie finden das angepasste Endergebnis im Verzeichnis <Dokumente>\Altova\MapForce2019\MapForceExamples\ als ZIP-Archiv (X12.Nanonull.zip). In der unten stehenden Anleitung wird davon ausgegangen, dass Sie die ZIP-Datei noch nicht in das Verzeichnis C:\Programme\Altova\MapForce2019\MapForceEDI extrahiert haben.

 

Vorbereiten der anzupassenden Dateien

1.Öffnen Sie das MapForce-Installationsverzeichnis (C:\Programme\Altova\MapForce2019\). Ändern Sie den Pfad bei Verwendung einer 32-Bit-MapForce-Version auf 64-Bit-Betriebssystemen in C:\Programme (x86)\Altova\MapForce2019\MapForceEDI.
2.Erstellen Sie im Verzeichnis ..\MapForceEDI\ ein Verzeichnis mit dem Namen X12.Nanonull.
3.Kopieren Sie die folgenden Dateien aus dem Ordner ...\MapForceEDI\X12 in den Ordner X12.Nanonull.

 

EDI.Collection
Envelope.Config
850.Config
X12.Segment
X12.Codelist

 

Wozu die einzelnen Dateien dienen, ist unter EDI-Konfigurationsdateien beschrieben.

 

Anmerkung: Ändern Sie die Attribute der Dateien in Lese/Schreibzugriff, um sie editierbar zu machen.

 

Konfigurieren der Datei EDI.Collection

1.Öffnen Sie die Datei "EDI.Collection" in einem XML-Editor (z.B. XMLSpy).
2.Entfernen Sie alle "Message"-Elemente mit Ausnahme der "Purchase Order"-Message und stellen Sie sicher, dass die <Messages>-Tags erhalten bleiben.

 

<?xml version="1.0" encoding="UTF-8"?>
<Messages Version="3">
  <Meta>
    <Release>6040</Release>
    <Agency>X12</Agency>
  </Meta>
  <Root File="Envelope.Config"/>
  <Message Type="850" File="850.Config" Description="Purchase Order"/>
</Messages>

 

3.Speichern Sie die Datei.

 

 

Die neue EDI.Collection-Datei sollte nun von MapForce aufgerufen werden können. Sie können dies folgendermaßen testen:

 

1.Starten Sie MapForce.
2.Wählen Sie im Menü Einfügen den Eintrag EDI oder klicken Sie auf die Symbolleistenschaltfläche "EDI-Datei einfügen" ic-edi. Daraufhin wird ein Dialogfeld wie das unten gezeigte geöffnet, das eine neue Collection mit dem Namen "X12.Nanonull" enthält. Wenn Sie diese auswählen, sehen Sie in der Collection nur einen Message-Typ: "Purchase Order".

mf_x12_customize_01

 

Anmerkung:

MapForce durchsucht beim Start alle gleichrangigen Unterordner im Verzeichnis ...\MapforceEDI\ und sucht nach einer Datei namens "EDI.Collection". Jeder Ordnername, der eine EDI.Collection-Datei enthält, wird im Dialogfeld angezeigt. Die Liste der Message-Typen enthält den Inhalt der Collection-Datei, die in unserem Beispiel nur eine "Purchase Order" Message enthält.

 

Globale Anpassung im Vergleich zu inline-Anpassung

Ziel dieses Beispiels ist es, das N2 "Additional Name Information"-Segment neu zu definieren, sodass es ein benutzerdefiniertes X1000-Datenelement enthält, in dem die Anrede einer Person (z.B. "Mrs") gespeichert wird. Vor der Anpassung besteht N2 aus nur einem Datenelement "F93 Name". Es gibt verschiedene Methoden, um die Anpassung vorzunehmen:

 

Global durch Anpassen der Datei X12.Segment. Global bedeutet, dass alle Segmente in allen Transaktionen, in denen N2 verwendet wird, das neue Element bzw. eine Referenz darauf enthalten.
Inline durch Anpassen der Datei 850.Config. Nur das angepasste Segment (N2) in der aktuellen Message enthält daraufhin das neue Element.

 

Globale Anpassung

Um den Zugriff auf das neue Feld X1000 global zu machen, müssen nur an der Datei X12.Segment Änderungen vorgenommen werden. Alle Segmente in allen Transaktionen, in denen N2 verwendet wird, enthalten/referenzieren dann das neue Element.

 

So definieren Sie das Composite N2 global neu:

 

1.Öffnen Sie die Datei X12.Segment in einem XML-Editor und navigieren Sie zu Config | Elements | Segment name="N2".

 

<Segment name="N2" info="Additional Name Information">
  <Data ref="F93" mergedEntries="2"/>
</Segment>

 

2.Fügen Sie unter "F93" die folgende Zeile hinzu und speichern Sie die Datei:

<Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>

Die Segment-Definition sollte nun folgendermaßen aussehen:

<Segment name="N2" info="Additional Name Information">
  <Data ref="F93" mergedEntries="2"/>

  <Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>
</Segment>

Anmerkungen:

 

Das neue X1000-Feld wurde im Gegensatz zu anderen Feldern des Segments, für die das ref-Attribut verwendet wurde, mit Hilfe des Attributs name definiert. Das Feld F93 ist am Anfang der Datei X12.Segment definiert und wird hier nur referenziert.
Das Attribut mergedEntries von F93 legt fest, dass es zwei aufeinander folgende Instanzen dieses Elements mit demselben Namen geben darf. Dies entspricht der Definition dieses Felds in der ASC X12-Spezifikation. Aus diesem Grund sieht das N1-Segment in der EDI-Quelldatei, die hier angepasst wird, folgendermaßen aus:

N2+Michelle Butler++Mrs'

Beachten Sie in der Zeile oben die beiden aufeinander folgenden "+"-Trennzeichen zwischen "Michelle Butler" und "Mrs". Der Grund hierfür ist, dass das N2-Segment aus einem "F93"-Datenelement ("Michelle Butler"), gefolgt von einem "+"-Trennzeichen, gefolgt vom zweiten "F93" Element (welches leer ist), gefolgt von einem "+"-Trennzeichen, gefolgt vom benutzerdefinierten Datenelement "X1000" ("Mrs") besteht. Nähere Informationen zum Attribut mergedEntries finden Sie unter Behandlung mehrerer aufeinander folgender Datenelemente.

 

Das neue Feld X1000 steht nun für alle Transaktionen, in denen das N2-Segment verwendet wird, zur Verfügung. Sie können in MapForce folgendermaßen eine Vorschau auf das neue Feld anzeigen:

 

1.Wählen Sie die Menüoption Einfügen | EDI, oder klicken Sie auf die Symbolleistenschaltfläche "EDI-Datei einfügen" ic-edi.
2.Klicken Sie auf die Collection "X12.Nanonull" und wählen Sie die "Purchase Order" Message aus.
3.Wenn Sie aufgefordert werden, eine EDI-Quelldatei auszuwählen, klicken Sie auf die Schaltfläche "Überspringen". Die 850-Komponente ist nun im Mapping-Fenster sichtbar.
4.Klicken Sie auf die Komponentenüberschrift, drücken Sie Strg + F und geben Sie als Suchtext "X1000" ein. Klicken Sie auf Weitersuchen, um zur nächsten Instanz des neuen Elements "X1000" zu gelangen. (es sollte sich unter Envelope/Interchange/Group/Message_850/Loop_N1/N2 befinden).

mf_x12_customize_02

 

Lokale Anpassung

Um den Zugriff auf das neue Feld X1000 lokal zu machen, müssen nur an der Datei 850.Config Änderungen vorgenommen werden. In diesem Fall enthält/referenziert nur das Segment N2 in der Transaktion "850 - Purchase Order" das neue Feld X1000.

 

So definieren Sie das N2-Segment lokal um:

 

1.Öffnen Sie die Datei 850.Config in einem Text- oder XML-Editor und navigieren Sie zu Group name="LoopN1" (oder suchen Sie nach LoopN1).

 

<Group name="LoopN1" maxOccurs="10" minOccurs="0">
  <Segment ref="N1"/>
  <Segment ref="N2" minOccurs="0" maxOccurs="2"/>

 
  ... ...

 

</Group>

 

2.Ersetzen Sie die Zeile <Segment ref="N2" minOccurs="0" maxOccurs="2"/> durch die folgenden Zeilen:

 

<Segment name="N2" info="Additional Name Information">
  <Data ref="F93" mergedEntries="2"/>
  <Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>
</Segment>

 

Die Group-Definition sollte nun folgendermaßen aussehen:

 

<Group name="LoopN1" maxOccurs="10" minOccurs="0">
  <Segment ref="N1"/>
  <Segment name="N2" info="Additional Name Information">
    <Data ref="F93" mergedEntries="2"/>
    <Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>
  </Segment>

 
  ... ...

 

</Group>

 

Sie können nun in MapForce eine Vorschau auf das neue Feld anzeigen. Gehen Sie dabei vor, wie oben für globale Anpassungen beschrieben.

mf_x12_customize_02

 

Verwendung der benutzerdefinierten Message in Mappings

Wenn Sie alle Anleitungen oben befolgt haben, können Sie nun die benutzerdefinierte X12-Konfiguration in Ihren Mappings verwenden. Ein Beispielmapping, in dem die oben erstellte benutzerdefinierte EDIFACT-Konfiguration verwendet wird, ist Orders-Custom-X12.mfd im Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\. In diesem Beispiel wird die Datei ORDERS-Custom.X12 auf das Schema Order-EDI.xsd gemappt. Das benutzerdefinierte Feld X1000, das in der Anleitung oben hinzugefügt wurde, wird im Zielschema auf das Datenelement Salutation gemappt.

mf_x12_customize_03

Orders-Custom-X12.mfd

Wenn Sie die obige Anleitung befolgt haben, können Sie dieses Mapping öffnen und es erfolgreich ausführen. Um eine Vorschau auf das Mapping-Ergebnis zu sehen, klicken Sie auf das Register Ausgabe. Wie erwartet, wird das Zieldatenelement Salutation mit dem aus dem benutzerdefinierten X1000-Datenelement der X12-Datei extrahierten Wert "Mrs" befüllt.

x12-example2


© 2019 Altova GmbH