4.4.Anzeige-Layouts

Funktionsweise

Eine EDI-Datei (EDIFACT/IDOC/VDA/ANSIX12) wird standardmäßig lt. Syntax-Directory angezeigt,
also mit Feldname und Feldinhalt. Wird jedoch ein Layout-Directory angegeben, und gibt es für das
erkannte File-Format ein passendes Layout, so wird dieses zur Aufbereitung der EDI-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_96A_INVPRT_en.jrxml
    - EDIFACT_96A_INVRPT_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

  1. In der DATASEL-Datei werden die Datenselektionen zur Erzeugung einer CSV-Datei definiert.
  2. In der JRXML-Datei wird das Layout definiert, um die CSV-Daten anzuzeigen.
  3. 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
F[_ISAI06][_ISAI07][_GS479].datasel

JRXML

F[_UNB0004][_UNB0010][_UNB0026][_L].jrxml
F[_ISAI06][_ISAI07][_GS479][_L].jrxml

JASPER

F[_UNB0004][_UNB0010][_UNB0026][_L].jasper
F[_ISAI06][_ISAI07][_GS479].[_L].jasper


Bedeutung

F

File-Format aus dem Reiter „File statistics", also z.B.:
- EDIFACT_96A_DELFOR
- SAPIDOC_DELFOR02
- VDA_ALL_4905
- ANSIX12_004010_830

_UNB0004  _ISAI06
_UNB0010  _ISAI07
_UNB0026  _GS479

Optional möglich bei Edifact/Odette/AnsiX12-Dateien, wobei folgende
Suchstrategie verwendet wird:
1. _UNB0004_UNB0010_UNB0026
2. _UNB0010_UNB0026
3. _UNB0004_UNB0026
4. _UNB0004_UNB0010
5. _UNB0026
6. _UNB0010
7. _UNB0004
8. File-Format_XXX_Nachricht (z.B. EDIFACT_XXX_INVOIC)

_L

Optionales Sprachkürzel in Kleinbuchstaben (de,en,fr), wobei folgende
Suchstrategie verwendet wird:
1. Suche in der Wunschsprache lt. Startparameter
2. Suche in Englisch
3. Suche in Deutsch
4. Suche in Französisch
5. Suche ohne Sprachkürzel

Gültige Beispiele:

  • VDA_ALL_4905.datasel
  • VDA_ALL_4905_de.jrxml
  • VDA_ALL_4905_de.jasper
  • SAPIDOC_DELFOR02_de.jrxml
  • EDIFACT_96A_DELFOR_O0013000202GOODYEAR_de.jrxml
  • ANSIX12_004010_830_en.jrxml

(tick) Direktive
Mit der 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.

Über das Customizing können DATASEL-Dateien angelegt (mit oder ohne Vorlage), geändert,
umbenannt, verschoben und gelöscht werden.

Dazu muss:

  1. die EDI-Datei, für die eine DATASEL-Datei gecustomized werden soll,
    im Anzeigereiter sichtbar sein
  2. Layout-Verzeichnis:
    1. Für das Anlegen einer DATASEL-Datei muss mindestens ein eigenes
      Layout-Verzeichnis vorhanden sein.
    2. 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.

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

  1. Für jedes im späteren Report gewünschte Edifeld wird eine Selektionsanweisung in folgendem
    Format benötigt:
    Edifeld = Reportfeld ( Bedingung1 &| Bedingung2 )
  2. Für jedes Reportfeld wird dann eine CSV-Spalte in der Reihenfolge
    der Selektionsanweisungen erzeugt
  3. Die Reportfelder sind Initial immer Blank
  4. Die Reihenfolge der Selektionsanweisungen hängt von der Struktur der EDI-Nachricht ab,
    nicht vom späteren Report
  5. Ein CSV-Satz wird erzeugt, 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 Bedinungsergebnis (wahr/falsch) 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, 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

Beispiel: (I_DTM_QUALIF==171&I_RFF_QUALIF==AIF)

|

ODER: Mindestens eine Bedingung muss wahr sein


5. Eine Bedingung kann folgende Vergleichsoperatoren haben:

Operator

Bedeutung

==

Gleich

Beispiel: (C_PARVW==LF)

!=

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,
wenn evtl. vorhandene Vorbedingungen wahr sind.

Beispiel: (I_COUNTART++)

7. Eine Bedingung kann aus einem Befehl bestehen:

Befehl

Bedeutung

CheckWriteRecord

Bedinungsergebnis (wahr/falsch) wird intern gespeichert.
Nur wenn alle CheckWriteRecord-Bedingungen wahr sind,
wird ein CSV-Satz geschrieben.

Beispiel:
BGM-010-1001=G_DOC(CheckWriteRecord&EdiValue!=393)
Konsignationsrechnungen(Factored invoice) werden ignoriert.

ClearReportfield==ReportfeldLöscht sofort den Variablenwert vom angegebenen Reportfeld,
wenn evtl. vorhandene Vorbedingungen wahr sind.

Beispiel:
COM-010-3155=I_TYP(EdiValue!=FX&ClearReportfield==C_FAX)
ClearWriteRecord==ReportfeldLöscht sofort das Bedinungsergebnis (wahr/falsch) vom
angegebenen Reportfeld, wenn evtl. vorhandene Vorbedingungen
wahr sind.

Beispiel:
UNS-010-0081=G_UNS(ClearWriteRecord==I_TYPE)

EdiValue

Es wird der Wert des Edifeldes verwendet (statt des Reportfeldes).
Benutzbar als Operand1 oder Operand2.

Beispiele:
BGM-010-1001=MSGTYP(EdiValue==241)
TAX-050-5278=C_TAXRATE(C_TAXRATE1!=EdiValue)

Format4905CalloffDate

Die VDA4905-Abrufdatümer in den Satzarten 513/514 werden
speziell formatiert, damit die Sonder-Datumsformate nach einem
555555-Datum verständlicher für den Anwender werden.

Beispiel:
513-008=G_DVON(Format4905CalloffDate)

Goto==ZielEdiFeld

Springe zum ZielEdifeld und beginne dort erneut mit der
Verarbeitung. Reportfelder mit einer Goto-Bedingung erscheinen
in der CSV-Datei, aber nur mit dem Wert "<NU>" (not used).
Erst das ZielEdiFeld verarbeitet den Ediwert.

Beispiel:
513-010=DATUM2(Goto==513-008)

InitialPrü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
CSV-Satz geändert haben.

Beispiel:
E2EDP14-005=PACKFILLMENGE(NewLine)

SegmentName

Gibt den aktuellen Segmentnamen (BGM) / Satzart (511) aus.

Beispiel:
INTERN-002=I_SA(SegmentName)

ValueAppend

Der Wert des Edifeldes wird, getrennt durch Blank, an den bisherigen
Reportfeldwert angehängt.

Example:
E2EDKT2001-001=C_HEADERTEXT(ValueAppend)

ValueNotEmptyZero

Der Wert des Edifeldes darf nicht Blank oder nur
Nullen (00000...) enthalten.

Beispiel:
513-009=MENGE(ValueNotEmptyZero)

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
JasperreportNameAngabe 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-Tool wird JasperReports von Jaspersoft unterstützt:

- Download: Design-Tool "Jaspersoft Studio" zum entwickeln von JasperReports
- Wiki: Designing a Report with Jaspersoft Studio

4.4.2.1 Data Adapter

Als "Data Adapter" ist "CSV file" zu verwenden.
Als Datenquelle ist dann die, durch die DATASEL-Datei erzeugte CSV-Datei anzugeben.

4.4.2.2. 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 User- oder "private" Verzeichnis zur Verfügung gestellt werden.

4.4.2.3. JAR-Files

Kann R2EdiViewer einen JasperReports nicht anzeigen, da JasperReports-Supportbibliotheken
fehlen, können diese JAR-Files im User- oder "private" Verzeichnis zur Verfügung gestellt werden.

 

4.4.3. Layoutdateien auflisten und überprüfen

Über das Customizing werden mit "List and check of layout files" alle Layout-Verzeichnisse
durchsucht. Angelistet werden alle DATASEL-, JRXML- und JASPER-Dateien.

  1. DATASEL-Datei:
    1.    Änderung innerhalb der letzten 30 Tage
    2. Syntaxfehler gefunden
    3. JRXML- und JASPER-Datei fehlt
    4. JRXML- oder JASPER-Datei fehlt
    5. Durch die Direktive {JasperreportName} angegebene JRXML-Datei
    6. Keine Fehler gefunden
  2. JRXML-Dateien:
    1. Eine DATASEL-Datei verweist auf diese JRXML-Datei