Neuen Bericht anlegen

Aus ADempiere Handbuch von metas GmbH

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

ADempiere Berichtswesen mit Jasper Reports

Einrichten eines Jasper Berichts in ADempiere

Um einen neuen Bericht im ADempiere Hauptmenü einrichten zu können, muß man sich als Systemadministrator einloggen. Änderungen am Hauptmenü (ad_menu) sowie an Berichten und Prozessen (ad_process) unterliegen dem Application Dictionary und können somit nur unter dem Mandanten System angelegt werden. Möchte man nicht, dass neue Berichte allen Benutzern zur Verfügung gestellt werden, so sind nach Einrichtung die entsprechenden Berechtigungen zu korrigieren.

Die Einbindung aller Jasper Berichte (und Belege) geschieht in ADempiere über das fenster Berichte und Prozesse sowie über Menü

  • Einloggen als System Administrator
  • Öffnen des Fensters Bericht und Prozesse und Einrichtung des Prozesses
  • Öffnen des Fensters Menü und Verknüpfung des Prozesses mit einem Menüeintrag und einer ensprechenden Aktion

Fenster Bericht und Prozess

Bericht und Prozess
  • Anlegen eines neuen Prozesses
  • In diesem Beispielprozess soll ein Standalone Bericht eingerichtet werden, welches direkt über einen Aufruf im Hauptmenü erreichbar ist.

Die Dateninhalte für die Einrichtung eines neuen Jasper Prozesses

  • Mandant
  • Organisation
  • Suchschlüssel
  • Name
  • Beschreibung
  • Kommentar/ Hilfe
  • Entitätsart
    • User maintained
  • Bericht
    • Checkbox Y/ N
  • Classname
    • org.compiere.report.ReportStarter
  • Procedure
  • Berechtigungsstufe
    • Mandant+Organisation
  • Show Help
    • Zeigt die Sichtbarkein des Parameterfensters beim Aufruf des Prozesses an. Die folgenden Möglichkeiten stehe zur Auswahl
      • Show Help: Ein Parameterfenster wird geöffnet welches die Vorgabe von Parameterwerten erlaubt
      • Don't show Help: Es wird kein Fenster geöffnet
      • Run silently: Es wird kein Fenster geöffnet
  • Jasper Report
    • Laden des Berichts aus dem Klassenpfad: resource:de/metas/reports/umsatzprokunde/report.jasper
    • Laden des Berichts aus einem Attachment zum jeweiligen Prozess: attachment:report.jasper
    • Jasper Dateien können auch als unkompilierte Dateien (*.jrxml) zur Verfügung gestellt werden. Im Rahmen der Prozessausführung wird geprüft ob der Bericht bereits kompiliert ist. Wenn nicht wird der Bericht entsprechend von einem Jasper Generator in eine Java Datei umgewandelt und im Anschluss über einen Java Compiler in eine Java-Klasse (*.jasper) umgewandelt und zur Ausführung gebracht.
  • Statistic count
    • Zeigt an wie oft dieser Prozess bereits gestartet wurde
  • Statistic seconds
    • Zeigt an wie lange die Ausführung des Prozesses zuletzt benötigt hat.
Parameter

Im Parameter Tab (Register) des Bericht und Reports Fensters werden Parameter wir gewohnt als neuen Datensätze angelegt. Die nachfolgenden Felder müssen je nach Parameter mit unterschiedlichen Vorgaben erfasst werden

  • Mandant, Organisation, Prozess
  • Name: Festlegung des Parameter Namen. Dieser Name wird im Parameterfenster in ADempiere als Label angezeigt.
  • Beschreibung
  • Kommentar/ Hilfe
  • Entitätsart
  • Reihenfolge
  • Spaltenname: Name des Parameters wie er im Jasper Report definiert ist (Achtung: Auf Groß- und Kleinschreibung achten). Es empfiehlt sich bei der Verwendung von Parameternamen eng an die Bezeichnungen der Spaltennamen in den ADempiere Datenbanktabelle anzulehnen. Mit dieser Vorgehensweise erspart man sich viele Probleme die bei der Einrichtung von Berichten und Prozessen auftreten können. Weiterhin erwartet ADempiere zur Ausgabe GUI-Felder im Parameterfenster, dass die Parameternamen mit ID Namen versehen sind, die für die entsprechende Feldreferenz (ad_reference) vorgesehen sind. So ist es z.B. notwendig um eine Geschäftspartnerinfo für die Suche eines Geschäftspartners zu öffnen den Spaltennamen korrekt mit C_BPartner_ID zu kennzeichnen.
  • Referenz (ad_reference): Welche Funktionalität/ Format soll das Parameterfeld annehmen
    • Search: Je nach Spaltenname individuelles Info Form (z.B. C_BPartner_ID öffnet Geschäftspartner Info)
    • Date/ Date+Time: Dateumsmaske zur Erfassung von Datümern
    • String: Einfaches Textfeld
    • Yes/ No: Checkbox
    • Table Direct: Dropdown Menü mit den Inhalten einer bestimmten Tabelle
    • Number: Einfache Zahl (Calculator)
  • Systemelement
  • Referenzschlüssel/ Dynamische Validierung: Funktionalität zur weiteren Eingrenzung der Ergebnisse des entsprechenden Parameterfelds.
  • Länge: Eingabelänge zum Parameter
  • Standardwert-Logik: Möglichkeit zur Vorgabe von Standardwerten in der Erfassungsmaske
Menü
  • Anlegen eines neuen Menüeintrags zum neu erstellen Bericht

Die Dateninhalte für die Einrichtung eines neuen Jasper Prozesses

  • Mandant
  • Organisation
  • Name
  • Beschreibung
  • Kommentar/ Hilfe
  • Entitätsart
    • User maintained
  • Aktion: Bericht
  • Prozess: Name des neu erstellten Berichts auswählen

Test

Um den neuen Bericht zu testen sind unter Umständen auch noch Änderungen an den Berechtigungen notwendig. Dies ist im Einzelfall jeweils zu prüfen. In der Regel ist jedoch der neu erstellte Bericht jederzeit unter dem Login des SuperUsers und Mandanten Administrators erreichbar. Hierzu als SuperUser einloggen und den bericht im Menübaum aufrufen.

Erstellen eine Jasper Berichts mit iReport

Das folgende Beispiel solle den Einstieg in die Erstellung von Berichten für ADempiere mit iReport erleichtern. Das Theme des Beipielreports kann beliebig gewählt werden. Ziel ist es einen grundlegenden Einstieg in iReport zu bekommen und fundierte Kenntnisse über das ADempiere Datenmodell zu erhalten.

Voraussetzungen

  • Mindestens ADempiere 3.40s
  • ADempiere Standardversion zur deutschen Lokalisierung
  • iReport 2.04
  • Java SDK 1.5
  • org.postgresql.Driver

Jasper Bericht mit iReport erstellen

Image:berichtsassistent1.png

  • Header Report: Assistenten starten (Datei -> Berichtsassistent)
    • Datenquelle mit dem org.postgresql.Driver anlegen (Button: Neu)
    • query: select * from c_order;

Image:berichtsassistent5.png

  • Felder c_order_id und description hinzufügen

Image:bericht_starten.png

  • testen ohne Datenquelle mit "Bericht starten" (Build -> Report starten)
    • Bericht wird ohne Daten angezeigt (nur Layout)
  • testen mit Datenquelle mit "Bericht starten (Aktive Verbindung nutzen)"
    • Sämtliche Aufträge werden angezeigt

Image:parameter1.pngBild:Parameter2.png

  • Parameter "C_Order_ID" hinzufügen (Gross-/Kleinschreibung beachten für die Parameterübergabe aus ADempiere)
    • Haken bei interaktiv abfragen um testen zu können
  • Paramenter in Datenquelle übernehmen (Bearbeiten -> Report Anfrage)
    • where c_order_id = $P{C_Order_ID}
  • testen - bei Abfrage der C_Order_ID "100" eingeben
    • Bericht enthält nur den Auftrag mit der ID 100

Image:subreport1.png

  • Felder in PageHeader rücken
  • Subreport anlegen
    • Icon Subreport anklicken
    • Bereich für Subreport malen
    • neuen Bericht erstellen

Image:subreport2.pngBild:Subreport3.png

    • Query: Select * from c_orderline;
    • Felder raussuchen
    • wichtig: Tabellen Layout
    • Parameter c_order_id anlegen (im Subreport)
    • Paramenter in SQL Query eintragen - where c_order_id = $P{c_order_id} (Bearbeiten -> Report Anfrage)

Image:subreport_verknuepfung.png

  • Verknüpfung zwischen Header und Subreport
    • Parameter im Header Report anlegen wie Datei ohne .jasper (Beispiel: "Auftrag_subreport0") mit Typ String
    • Doppelklick auf den Subreport-Bereich im Header Report
    • Reiter Subreport (anderer)
      • Parameter in Feld "Ausdruck für Unterreport" eintragen, der genauso heißt wie die Datei ohne .jasper
      • auf "Hinzufügen" klicken um c_order_id als Subreport-Parameter zu übergeben
  • Im Header Report den Parameter Subreport_Dir löschen

Diese Art der Verknüpfung funktioniert nur wenn der Report aus ADempiere heraus gestartet wird! Nicht wundern, wenn in der Vorschau aus IReport der Subreport nicht eingebunden wird. Zum Testen in IReport kann einfach der Name des Subreports + .jasper (in Anführungszeichen) als Ausdruck für den Unterreport angegeben werden ("Auftrag_subreport0.jasper").

Vorgehensweise bei Sub-Subreports

Bei tiefer verschachtelten Reports (Subreport der einen weiteren Subreport beinhaltet) reicht es nicht aus im Subreport einfach nur einen Parameter mit dem gleichen Namen wie dem Sub-Subreport anzulegen und im "Ausdruck für Unterreport" einzutragen. Zusätzlich muss dieser Parameter vom Hauptreport an den Subreport übergeben werden:

  • Im Hauptreport einen Parameter mit dem Namen des Sub-Subreports anlegen (Typ String)
  • Nach Doppelklick auf den Subreport im Reiter 'Subreport (anderer)'
    • auf "Hinzufügen" klicken und einen Subreport Parameter mit dem Namen des Sub-Subreports anlegen
    • als Ausdruck für den default Wert $P{Sub-SubreportName} eintragen
  • Im Subreport wie oben beschrieben vorgehen um den Sub-Subreport einzubinden

Einbindung in ADempiere

  • System Admin: Reports & processes öffnen
  • neuen Prozess anlegen
    • Show help: Bei Belegen muss hier Run silently - Take Defaults stehen
    • JasperReport: Hier steht der JasperReport als angehängtes Attachments in der Syntax "attachment:"<Dateiname>
      • anderer prefix kann z.B. http sein
      • ressource: erwartet kompilierte .jar Datei im Adempiere lib-Verzeichnis
  • an den Prozess sämtliche Attachments wie .jasper file hinterlegen
  • an den Prozess eine leere Datei (Textdatei mit einem Zeilenumbruch) namens Berichtsname_en_US.properties hängen
  • Achtung: Für jede Sprache wird eine weitere Textdatei benötigt (Berichtsname_de_DE.properties usw.)
  • in Tab Parameter wechseln
    • DB Column Name: enthält den DB-Spaltenname in Klartext
    • System Element: enthält AD_element, das übergeben werden soll
    • Reference: String einstellen
    • Default Logic: Enthält System Element Name mit der Syntax "@"<system element>"@"
    • wichtig: Groß- und Kleinschreibung bei Systemelement beachten!
  • In Mandant wechseln =>System Admin =>General Rules => Printing => Print Format
  • Neuen Orderheader anlegen
    • in Feld Jasper Process den vorher definierten Prozess hinterlegen
    • Tablenamen übernehmen
  • Druckformat in DocType in Feld Print Format das neue Druckformat hinterlegen

Für Fenster ohne DocType wie z.B. Mail Template oder Request

  • System Admin: Jasper Prozess anlegen (wie oben)
  • Application Dictionary -> Window, Tab & Field
    • Fenster wählen aus dem gedruckt werden soll (z.B. Request)
    • Tab wählen aus dem gedruckt werden soll
    • Den neuen Jasper Process im Feld 'Process' setzen
Ansichten
Persönliche Werkzeuge