Eine EDI-Datei (EDIFACT/IDOC/VDA/ANSIX12) wird standardmäßig lt. Syntax-Directory angezeigt,
also mit Feldname und Feldwert.
Bei XML-Dateien werden Zeilenumbrüche eingefügt oder, wenn ShortView aktiv ist,
zeilenweise, komprimiert angezeigt.
Wird jedoch ein Layout-Directory angegeben, und gibt es für das erkannte File-Format ein
passendes Layout, so wird dieses zur Aufbereitung der Datei verwendet.
Als Layout-Tool wird JasperReports unterstützt.
Das folgende Beispiel basiert auf:
- EDIFACT-INVRPT-Nachricht
- Als Layout-Directory wurde das Standardverzeichnis „layouts" ausgewählt
Als Wunschsprache wurde „Englisch" ausgewählt
Im Layout-Directory „layouts" existieren zum File-Format drei passende Layout-Dateien,
- EDIFACT_96A_INVRPT.datasel
- EDIFACT_XXX_INVPRT_de_en.jrxml
- EDIFACT_XXX_INVRPT_de_en.jasper
was dann zu folgender Layout-Aufbereitung führt:
Über die Report-Toolbar kann im Report geblättert, gezoomt und gedruckt werden.
Layout-Directory
Die standardmäßig ausgelieferten Beispiel-Layout-Dateien befinden sich in den Verzeichnissen
„layouts" und "layoutsEdifileChecker".
Über das Customizing können eigene Layout-Verzeichnisse angelegt, gelöscht und umbenannt werden.
Layout-Verzeichnisse können im Userverzeichnis und, mit Schreibrechten, auch im
Programmverzeichnis angelegt werden. Layout-Verzeichnisse müssen mit „layout" beginnen.
Wurde im ausgewählten Layout-Verzeichnis keine passende Datenselektionsdatei (DATASEL) gefunden,
so wird auch das Standard-Verzeichnis "layouts" durchsucht.
3 Layout-Dateien
- In der DATASEL-Datei werden die Datenselektionen zur Erzeugung einer CSV-Datei definiert.
- In der JRXML-Datei wird das Layout definiert, um die CSV/XML-Daten anzuzeigen.
- Die JASPER-Datei ist eine kompilierte JRXML-Datei und wird von R2EdiViewer
zur Anzeige der EDI-Datei verwendet.
Existiert nur eine JRXML-Datei wird diese zu einer JASPER-Datei kompiliert.
Namenskonventionen
Für die 3 Layout-Dateien gelten folgende Namenskonventionen:
Layout-Datei | Format |
---|---|
DATASEL | F[_UNB0004][_UNB0010][_UNB0026].datasel |
JRXML | Identisch zu DATASEL plus optionalem Sprachkürzel [_L].jrxml |
JASPER | Identisch zu DATASEL plus optionalem Sprachkürzel [_L].jasper |
Bedeutung | |
---|---|
F | File-Format aus dem Reiter „File statistics", also z.B.: |
_UNB0004 _ISAI06 | Optional möglich bei Edifact/Odette/AnsiX12-Dateien, wobei folgende |
DC40DIRECT | Optional möglich bei IDoc-Dateien, wobei folgende |
_L | Optionales Sprachkürzel in Kleinbuchstaben (de,en,fr), wobei folgende |
Gültige Beispiele:
- VDA_ALL_4905.datasel
- VDA_ALL_4905 _de.jrxml
- VDA_ALL_4905 _de.jasper
- SAPIDOC_ORDERS05_2_DELORD _de.jrxml
- EDIFACT_97A_DELFOR _1234567890TEST.datasel
ANSIX12_004010_830 _en.jrxml
|
---|
Mit der DATASEL-Direktive {JasperreportName} kann ein beliebiger Layoutname angegeben werden. |
4.4.1. Datenselektion in der DATASEL-Datei
In der DATASEL-Datei werden die nötigen Datenselektions-Anweisungen zur Erzeugung
einer CSV-Datei hinterlegt, d.h. hiermit wird festgelegt, welche EDI-Felder für das neue Layout
verwendet werden sollen.
Für XML-Layouts wird keine DATASEL-Datei benötigt.
Über das Customizing können DATASEL-Dateien angelegt (mit oder ohne Vorlage), geändert,
umbenannt, verschoben und gelöscht werden.
Dazu muss:
- die EDI-Datei, für die eine DATASEL-Datei gecustomized werden soll,
im Anzeigereiter sichtbar sein - Layout-Verzeichnis:
- Für das Anlegen einer DATASEL-Datei muss mindestens ein eigenes
Layout-Verzeichnis vorhanden sein. - Für das Ändern, Umbenennen, Verschieben und Löschen einer DATASEL-Datei
muss das eigene Layout-Verzeichnis in der Haupt-Toolbar ausgewählt worden sein.
- Für das Anlegen einer DATASEL-Datei muss mindestens ein eigenes
Sobald für das File-Format eine passende DATASEL-Datei gefunden wurde, wird eine
CSV-Datei erzeugt.
INVRPT-Beispieldatei: EDIFACT_96A_INVRPT.datasel
Gibt es nur die DATASEL-Datei (also keine JRXML/JASPER-Datei), so wird die CSV-Datei angezeigt.
Gibt es auch eine JRXML/JASPER-Datei, so kann mit dem Umschalter / zwischen der
CSV-Ansicht und Report-Ansicht gewechselt werden. Damit können die
DATASEL-Anweisungen kontrolliert werden, da nur eine korrekte CSV-Datei zu einer
korrekten Report-Anzeige führt.
Eine CSV-Datei wird als Tabelle angezeigt:
- Beginnen die Spalten mit C_, G_, I_ werden diese farblich hervorhoben
- Ein Klick in eine Zelle färbt den Zellenwert
- Doppelklick auf den Spaltennamen versteckt die Spalte
- Spreadsheet-Button macht alle versteckten Spalten wieder sichtbar
4.4.1.1. Grundregeln
- Für jedes im späteren Report gewünschte Edifeld wird eine Selektionsanweisung in folgendem
Format benötigt:
Edifeld = Reportfeld ( Bedingung1 &| Bedingung2 ) - Für jedes Reportfeld wird dann eine CSV-Spalte in der Reihenfolge
der Selektionsanweisungen erzeugt - Die Reportfelder sind Initial immer Blank
- Die Reihenfolge der Selektionsanweisungen hängt von der Struktur der EDI-Nachricht ab,
nicht vom späteren Report - Ein CSV-Satz wird erzeugt:
- nachdem im letzten Reportfeld ein Wert gespeichert wurde
- sobald ein Rücksprung in den Selektionsanweisungen erfolgt
Beispiel:
Das Reportfeld G_MENGE wurde mit der Einteilungsmenge gefüllt. Danach kommt
für eine neue Lieferabruf-Position eine neue Artikelnummer in G_ARTNR.
G_ARTNR liegt vor G_MENGE, es findet also ein Rücksprung statt,
also wird ein CSV-Satz erzeugt.
4.4.1.2. DATASEL-Syntax
Edifeld
Format des Edifeldes: S-G-F
- S = Segmentname (z.B. BGM,512, E2EDK09003)
- G = Gruppennummer (z.B. 020)
- F = Feldnummer (z.B. 1004,004,003)
Gibt es ein Edifeld mehrfach in einem Segment (z.B. NAD-030-3124), so muss, beginnend mit dem
zweiten Edifeld, ein #2 (NAD-030-3124#2) und beim dritten Edifeld ein #3 (NAD-030-3124#3)
angehängt werden, usw.
Beispiele für das Feld Lieferabrufnummer:
- EDIFACT = BGM-020-1004
- ANSIX12 = BFR-030-328
- VDA = 512-004
- IDOC = E2EDK09003-003
Benötigt man interne Reportfelder, z.B. als Zähler, definiert man einfach ein Edifeld,
was es in der Edidatei nie gibt, wie z.B. INTERN-001.
Reportfeld
Grundsätzlich ist der Name des Reportfeldes beliebig. Ausnahmen:
a) Keine Unterstriche verwenden
b) Beginnt der Reportfeldname mit folgenden Buchstaben, erfolgt eine Sonderverarbeitung:
- G_ = Gruppenwechsel-Feld, d.h. vor der Abspeicherung in dieses Feld wird dieses Feld und
ALLE in den Selektionsanweisung folgende Reportfelder gelöscht,
einschliesslich dem Bedingungsergebnis (true/false) vom CheckWriteRecord-Befehl
(bei einen Rücksprung in den Selektionsanweisungen wird auch ein CSV-Satz erzeugt). - C_ = Cancel-Feld, d.h. es werden keine Reportfelder gelöscht und trotz Rücksprung in den
Selektionsanweisungen wird kein CSV-Satz geschrieben,
es sei denn:
- in das letzte Cancel-Feld aller Selektionsanweisungen wurde ein Wert geschrieben
- das EOF der Edidatei wurde erreicht - I_ = Internes-Feld, ist nie Auslöser zum Löschen von Feldern oder
Schreiben eines CSV-Satzes (auch kein EOF).
Beispiele für Reportfeldnamen:
- LABNEU
- G_SNDPRN
- C_PARVW
- I_COUNTART
Standardmäßig werden folgende Reportfelder automatisch in jeder CSV-Datei erzeugt:
- R2EdiFilename = Name der Edidatei
- R2LayoutDirPath = Kompletter Pfad des Layout-Verzeichnisses
(sinnvoll bei der Verwendung von "subreportExpression" und "dataSourceExpression") - R2Language = Sprache
Bedingung
Grundsätzlich muss eine Bedingung erfüllt sein, damit das Reportfeld mit dem Wert aus
dem Edifeld versorgt wird.
1. Die ganze Bedingung muss in einfachen Klammern stehen, also z.B.: ( C_PARVW==LF )
2. Eine Bedingung besteht aus: Operand1 Operator Operand2
3. Als Operand1 wird ein Reportfeld oder ein Befehl erwartet
4. Mehrere Bedingungen können durch logischen Operatoren verknüpft werden:
Operator | Bedeutung |
---|---|
& | UND: Beide Bedingungen müssen wahr sein |
| | ODER: Mindestens eine Bedingung muss wahr sein |
5. Eine Bedingung kann folgende Vergleichsoperatoren haben:
Operator | Bedeutung |
---|---|
== | Gleich |
!= | Ungleich |
> | Größer |
< | Kleiner |
>= | Größer oder Gleich |
<= | Kleiner oder Gleich |
Als Operand2 wird dann ein Ediwert erwartet oder die Befehle "Initial, EdiValue".
Erlaubte Zeichen sind:
Buchstaben, Zahlen und Blank, Komma, Minus, Punkt, Raute, Schrägstrich, Semikolon, Unterstrich
6. Eine Bedingung kann arithmetische Operatoren haben:
Operator | Bedeutung |
---|---|
++ | Erhöht das Reportfeld sofort um 1, |
7. Eine Bedingung kann aus einem Befehl bestehen:
Befehl | Bedeutung |
---|---|
CheckWriteRecord | Das Bedingungsergebnis (true / false) wird mit dem Reportfeld Beispiel: |
ClearReportfield==Reportfeld | Löscht sofort den Variablenwert vom angegebenen Reportfeld, wenn evtl. vorhandene Vorbedingungen wahr sind. Beispiel: COM-010-3155=I_TYP(EdiValue!=FX& ClearReportfield==C_FX ) |
ClearWriteRecord==Reportfeld | Löscht sofort das Bedingungsergebnis (true / false) vom angegebenen Reportfeld, wenn evtl. vorhandene Vorbedingungen wahr sind. Beispiel: UNS-010-0081=G_UNS( ClearWriteRecord==G_DOC ) |
EdiValue | Es wird der Wert des Edifeldes verwendet Beispiele: |
Format4905CalloffDate | Die VDA4905-Abrufdatümer in den Satzarten 513/514 werden |
Goto==ZielEdiFeld | Springe zum ZielEdifeld und beginne dort erneut mit der |
Initial | Prüft das Reportfeld auf Initialwert (leer). Beispiel: DTM-010-2380=DOCDAT(I_DTM_Q==137& I_RFF_Q== Initial ) |
NewLine | Erzeugt einen neuen CSV-Satz, falls sich die Daten zum letzten |
SegmentGroup | Es wird die aktuelle Segmentgruppennummer verwendet Beispiel: |
SegmentName | Gibt den aktuellen Segmentnamen (BGM) / Satzart (511) aus. |
ValueAppend | Der Wert des Edifeldes wird, getrennt durch Blank, an den Beispiel: |
ValueNotEmptyZero | Der Wert des Edifeldes darf nicht Blank oder nur |
4.4.1.3. Direktiven
Direktiven haben folgendes Format und sind am Zeilenanfang einer DATASEL-Datei zu notieren:
{Direktivenname==Direktivenwert}
Mögliche Direktiven:
Direktive | Bedeutung |
---|---|
JasperreportName | Angabe eines beliebigen JasperReports (JRXML/JASPER-Datei) der sich im Layoutverzeichnis befinden muss. Beispiel: { JasperreportName ==EDI file checker} |
4.4.2. Layout erstellen mit JasperReports in eine JRXML-Datei
In der JRXML-Datei wird das Layout des Reports definiert.
Als Layout-Reporting-Engine wird JasperReports von Jaspersoft verwendet.
Die Version von der Design-Entwicklungsumgebung "Jaspersoft Studio" darf dabei nicht größer sein
als die Version von <R2EdiViewer-Programmverzeichnis>/lib/jasperreports-n.nn.n.jar:
- Download: "Jaspersoft Studio" die Design-Entwicklungsumgebung für JasperReports
- Wiki: Designing a Report with Jaspersoft Studio
Sechs Schritte zum Ändern eines ausgelieferten Layouts:
- Im R2EdiViewer-Customizing-Menü ein eigenes Layoutverzeichnis anlegen.
- Die DATASEL-, JRXML- und JASPER-Datei vom zu ändernden Layout
aus dem "layouts"-Verzeichnis in das neu erstellte Layoutverzeichnis kopieren. - In R2EdiViewer das neue Layoutverzeichnis auswählen, auf die CSV-Anzeige umschalten
und die EDI-Datei als CSV-File speichern. - Im Jaspersoft Studio ein "Data Adapter" für das CSV-File anlegen.
- Im Jaspersoft Studio die JRXML-Sourcedatei aus dem neuen Layoutverzeichnis öffnen und anpassen.
- Wird Jaspersoft Studio und R2EdiViewer mit der gleichen Java-Version ausgeführt,
kann die JASPER-Datei (Binärdatei) im Jaspersoft Studio erzeugt werden (Icon "Compile Report").
Bei unterschiedlichen Java Versionen muss die alte JASPER-Datei aus dem neuen Layoutverzeichnis
gelöscht werden. Bei der ersten Ausführung des neuen JRXML-Layouts kompiliert R2EdiViewer
die JRXML-Datei automatisch zur binären JASPER-Datei.
4.4.2.1. Data Adapter
Als "Data Adapter" ist "CSV file" oder "XML document" zu verwenden.
Als Datenquelle ist dann die, durch die DATASEL-Datei erzeugte CSV-Datei
oder die XML-Datei anzugeben.
Bei einem "XML-Dokument":
- Aktivieren/Deaktivieren Sie "Enable namespace support", abhängig von Ihrer XML-Datei
- Unter Jaspersoft Studio->Properties muss Xalan als XPATH-Executer eingetragen werden,
damit Namespace-Angabe im XML-Element korrekt erkannt werden, also:
net.sf.jasperreports.xpath.executer.factory = net.sf.jasperreports.engine.util.xml.XalanXPathExecuterFactory - Mit JasperReports ab Version 6.20.6 werden die "org.apache"-Klassen aus xalan.jar nicht mehr ausgeliefert.
In das "org"-Verzeichnis von "Jaspersoft Studio\plugins\net.sf.jasperreports_6.20.6.final.jar"
muss deshalb das "apache"-Verzeichnis aus dem Verzeichnis "org" von xalan.jar kopiert werden.
4.4.2.2. R2EdiViewerXL.CFG
XML-Dateien können von JasperReport direkt über den Data Adapter eingelesen werden.
Damit wird keine DATSEL-Datei für die Erzeugung einer CSV-Datei benötigt.
Eine XML-Datei muss nur einem JasperReport zugewiesen werden.
Diese Zuweisungen werden über das Customizing ("Layout XML/Configuration") vorgenommen.
Eine XML-Datei wird dabei nach selbstdefinierten Suchbegriffen durchsucht.
Bei der ersten vollständigen Übereinstimmung aller Suchbegriffe ist so der JasperReport
und das Layoutverzeichnis bestimmt.
Der ermittelte JasperReport wird aber nur verwendet, wenn das Layout-Verzeichnis
auch ausgewählt wurde.
Die Syntax lautet:
LayoutDir:XML_ALL_ReportName: InclPrefix|ExclPrefix = SearchString1[~SearchString2][~SearchStringN...]
- Feld 1: Layout-Verzeichnis, wo sich der JasperReport befindet
- Trennzeichen: Doppelpunkt
- Feld 2: Name des existierenden JasperReports (JASPER/JRXML), muss mit "XML_ALL" beginnen
- Trennzeichen: Doppelpunkt
- Feld 3: InclPrefix = XML-Tags enthalten ein Namensraumpräfix
ExclPrefix = XML-Tags enthalten keinen Namensraumpräfix - Trennzeichen: Gleichheitszeichen
- Feld 4: Suchstrings (getrennt durch Tilde-Zeichen), die alle in der XML-Datei
enthalten sein müssen
4.4.2.3. Font Extension
Werden eigene "Schriftarten Erweiterungen" in einem Report verwendet, so muss die
aus Jasperstudio exportierte JAR-Datei (enthält u.a. die TTF-Schriftart) auch R2EdiViewer
im "private" Verzeichnis zur Verfügung gestellt werden.
Als JAR-Dateiname muss einer der 5 leeren R2EdiViewer_CustomerExtensionLibraryXX.jar
Dateien verwendet werden.
4.4.2.4. JAR-Dateien
Kann R2EdiViewer einen JasperReports nicht anzeigen, da JasperReports-Supportbibliotheken
fehlen, können diese JAR-Dateien im "private" Verzeichnis zur Verfügung gestellt werden.
Als JAR-Dateiname muss einer der 5 leeren R2EdiViewer_CustomerExtensionLibraryXX.jar
Dateien verwendet werden.
4.4.3. Layoutdateien auflisten inkl. Syntaxprüfung
"List" durchsucht alle Layout-Verzeichnisse, führt eine Syntax-Prüfung durch, und zeigt dann
das Ergebnis in einer Übersicht für alle DATASEL-, JRXML- und JASPER-Dateien an.
- DATASEL-Datei:
- Änderung innerhalb der letzten 30 Tage
- Syntaxfehler gefunden
- JRXML- und JASPER-Datei fehlt
- JRXML- oder JASPER-Datei fehlt
- Durch die Direktive {JasperreportName} angegebene JRXML-Datei
- Keine Fehler gefunden
- JRXML-Datei:
- Eine DATASEL-Datei verweist auf diese JRXML-Datei
- Syntaxwarnung gefunden
- Syntaxfehler gefunden (es kann keine neue JASPER-Datei erzeugt werden)