Beispiel: Anpassen einer EDIFACT Message

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 EDIFACT Message

In diesem Beispiel wird gezeigt, wie Sie EDIFACT-Nachrichten anpassen können, damit MapForce nicht standardkonforme oder geänderte EDIFACT-Formate verarbeiten kann. Sie finden ein Beispielmapping, in dem eine benutzerdefinierte EDIFACT-Datei mit einem etwas erweiterten CTA-(Contact Information)-Segment der ORDERS Message verarbeitet wird, unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2019\MapForceExamples\Orders-Custom-EDI.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 EDIFACT-Konfiguration 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.EDI aus dem Verzeichnis <Dokumente>\Altova\MapForce2019\MapForceExamples\ gelesen. Wenn Sie diese Datei mit einem Text-Editor öffnen, sehen Sie, dass darin ein benutzerdefiniertes CTA-Segment verwendet wird: Zeile 9 enthält den Eintrag Mr und Zeile 11 enthält den Eintrag Mrs:

edi-adapt-1

Bevor Sie Daten aus benutzerdefinierten EDI-Dateien wie der oben gezeigten mappen können, muss eine benutzerdefinierte EDIFACT-Konfiguration erstellt werden. In diesem Beispiel werden wir die EDIFACT-Standardkonfiguration anpassen, indem wir das CTA-Segment durch ein neues Feld für die Anrede der Person ergänzen. Sie finden das angepasste Endergebnis im Verzeichnis <Dokumente>\Altova\MapForce2019\MapForceExamples\ als ZIP-Archiv (EDIFACT.Nanonull.zip). In der unten stehenden Anleitung wird davon ausgegangen, dass Sie die ZIP-Datei noch nicht in das Verzeichnis ..\Programme\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 EDIFACT.Nanonull.
3.Kopieren Sie die folgenden Dateien aus dem Ordner ...\MapForceEDI\EDIFACT in den Ordner EDIFACT.Nanonull.

 

EDI.Collection
Envelope.Config
UNCL.Codelist
Admin.Segment
EDSD.Segment (Electronic Data Segment Definition)
ORDERS.Config

 

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 ORDERS Message und stellen Sie sicher, dass die <Messages>-Tags erhalten bleiben.

 

<?xml version="1.0" encoding="UTF-8"?>
<Messages Version="3">
  <Meta>
    <Version>D</Version>
    <Release>16A</Release>
    <Agency>UN</Agency>
  </Meta>
  <Root File="Envelope.Config"/>  
  <Message Type="ORDERS" File="ORDERS.Config" Description="Purchase order message"/>  
</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 "EDIFACT.Nanonull" enthält. Wenn Sie diese auswählen, sehen Sie in der Collection nur einen Message-Typ: "ORDERS".

 

mf_dlg_edi_customize

 

 

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 enthält, wird im Dialogfeld angezeigt. Die Liste der Message-Typen enthält den Inhalt der Collection-Datei, die in unserem Beispiel nur eine ORDERS Message enthält.

 

Globale Anpassung im Vergleich zu inline-Anpassung

Ziel dieses Beispiels ist es, das CTA (Contact Information) Segment neu zu definieren. Das CTA-Segment besteht aus einem einzigen Feld (F3139) und einem Composite (C056). Für den Inhalt der Anrede (z.B. "Mr" oder "Mrs") fügen wir ein neues Feld namens X1000 zum Composite C056 hinzu. Es gibt verschiedene Methoden, um die Anpassung vorzunehmen:

 

Global durch Anpassen der Datei EDSD.segment. Alle Segmente in allen Messages, in denen das Composite C056 verwendet wird, enthalten daraufhin das neue Element bzw. eine Referenz darauf.
Inline durch Anpassen der Datei ORDERS.Config. Nur das angepasste Segment (CTA) 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 EDSD.Segment Änderungen vorgenommen werden. Alle Segmente in allen Messages, in denen Composite C056 verwendet wird, enthalten/referenzieren dann das neue Element.

 

So definieren Sie das Composite C056 global neu:

 

1.Öffnen Sie die Datei EDSD.Segment in einem Text- oder XML-Editor und navigieren Sie zu Config | Elements | Composite | C056.

<Composite name="C056" info="CONTACT DETAILS">
 <Data ref="F3413" minOccurs="0"/>
 <Data ref="F3412" minOccurs="0"/>
</Composite>

 

2.Fügen Sie im Segment C056 unter "F3412" die folgende Zeile hinzu:

 

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

 

3.Die Composite-Definition sollte nun folgendermaßen aussehen:

<Composite name="C056" info="CONTACT DETAILS">
 <Data ref="F3413" minOccurs="0"/>
 <Data ref="F3412" minOccurs="0"/>

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

 

Im oben gezeigten Codefragment wird das neue Feld X1000 im Gegensatz zu anderen Feldern, für die das "ref" Attribut verwendet wird, mit Hilfe des "name" Attributs definiert. Die beiden anderen Felder werden am Beginn der Datei definiert und hier nur referenziert.

 

Das neue Feld X1000 steht nun für alle Messages, in denen Composite C056 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 "EDIFACT.Nanonull" und wählen Sie die ORDERS Message aus.
3.Wenn Sie aufgefordert werden, eine EDI-Quelldatei auszuwählen, klicken Sie auf die Schaltfläche "Überspringen". Die ORDERS-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_ORDERS/SG2/SG5/CTA/C056 befinden).

mf_map_Orders-Custom-EDI_1

 

Inline Anpassung

Um den Zugriff auf das neue Feld X1000 lokal (oder inline) zu machen, müssen nur an der Datei ORDERS.config Änderungen vorgenommen werden. In diesem Fall enthält/referenziert nur das umdefinierte CTA-Segment in der aktuellen Message das neue Element, d.h. das CTA-Segment wird lokal umdefiniert, sodass es ein umdefiniertes Composite C056 mit einem benutzerdefinierten neuen Feld X1000 enthält.

 

So definieren Sie das Composite C056 lokal um:

 

2.Öffnen Sie die Datei EDSD.Segment in einem Text- oder XML-Editor und navigieren Sie zu Group name="SG5" (oder suchen Sie nach SG5).

 

<Group name="SG5" minOccurs="0" maxOccurs="5" info="CTA - Contact information">
  <Segment ref="CTA"/>
  <Segment ref="COM" minOccurs="0" maxOccurs="5"/>
</Group>

 

1.Ersetzen Sie die Zeile <Segment ref="CTA"/> durch die folgenden Zeilen:

 

<Segment name="CTA" id="CTA_ORDERS_SG5" info="CONTACT INFORMATION">
  <Data ref="F3139" minOccurs="0"/>
  <Composite name="C056" minOccurs="0" info="DEPARTMENT OR EMPLOYEE DETAILS">
          <Data ref="F3413" minOccurs="0"/>
          <Data ref="F3412" minOccurs="0"/>
          <Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>
  </Composite>
</Segment>

 

Die Group-Definition sollte nun wie unten gezeigt aussehen:

 

<Group name="SG5" minOccurs="0" maxOccurs="5" info="CTA - Contact information">
  <Segment name="CTA" id="CTA_ORDERS_SG5" info="CONTACT INFORMATION">
  <Data ref="F3139" minOccurs="0"/>
  <Composite name="C056" minOccurs="0" info="DEPARTMENT OR EMPLOYEE DETAILS">
          <Data ref="F3413" minOccurs="0"/>
          <Data ref="F3412" minOccurs="0"/>
          <Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>
  </Composite>
  </Segment>
  <Segment ref="COM" minOccurs="0" maxOccurs="5"/>
</Group>

 

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 "EDIFACT.Nanonull" und wählen Sie die ORDERS Message aus.
3.Wenn Sie aufgefordert werden, eine EDI-Quelldatei auszuwählen, klicken Sie auf die Schaltfläche "Überspringen". Die ORDERS-Komponente ist nun im Mapping-Fenster sichtbar.
2.Navigieren Sie zu Envelope/Interchange/Group/Message_ORDERS/SG2/SG5/CTA/C056, um das neue Element X1000 zu sehen.

mf_map_Orders-Custom-EDI_1

 

Verwendung der benutzerdefinierten Message in Mappings

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

mf_map_Orders-Custom-EDI_2

Wenn Sie die obige Anleitung befolgt haben, können Sie dieses Mapping öffnen und es erfolgreich ausführen. Wenn Sie die Anleitung zur benutzerdefinierten Anpassung jedoch nicht befolgt haben, können Sie dieses Mapping folgendermaßen ausführen:

 

1.Erstellen Sie unter dem Pfad "C:\Programme\Altova\MapForce2019\MapForceEDI\" ein neues Verzeichnis mit dem Namen "EDIFACT.Nanonull". Bei Ausführung einer 32-Bit-MapForce-Version auf einem 64-Bit-Betriebssystem passen Sie den Pfad an in C:\Programme (x86)\Altova\MapForce2019\MapForceEDI.
2.Entpacken Sie die Datei EDIFACT.Nanonull.zip (im Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\) in das neue Verzeichnis.
3.Öffnen Sie Orders-Custom-EDI.mfd.

 

Um eine Vorschau auf das Mapping-Ergebnis zu sehen, klicken Sie auf das Register Ausgabe.

edi-adapt-9

Wie andere Mapping-Design-Dateien in MapForce können Sie auch EDI-Mappings außerhalb von MapForce ausführen. So können Sie diese etwa auf einem anderen Server für die Ausführung mit MapForce Server oder FlowForce Server bereitstellen oder Programmcode generieren, um das Mapping auszuführen. Wenn Sie dieses Mapping-Beispiel durch Generierung von C++-Code ausführen möchten, so beachten Sie, dass eine Klasse namens "CX1000Type" generiert wird, die über die Klasse "CC056Type" aufgerufen werden kann.


© 2019 Altova GmbH