Difference between revisions of "Workshop:Integration von JasperReports in ADempiere"

From ADempiere
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.
(Jasper Bericht erstellen)
(Screenshots..)
Line 20: Line 20:
 
** Datenquelle mit dem org.postgresql.Driver anlegen (Button: Neu)
 
** Datenquelle mit dem org.postgresql.Driver anlegen (Button: Neu)
 
** query: select * from c_order;
 
** query: select * from c_order;
 +
 
[[Image:berichtsassistent5.png]]
 
[[Image:berichtsassistent5.png]]
 
* Felder c_order_id und description hinzufügen
 
* Felder c_order_id und description hinzufügen
 +
 +
[[Image:bericht_starten.png]]
 
* testen ohne Datenquelle mit "Bericht starten" (Build -> Report starten)
 
* testen ohne Datenquelle mit "Bericht starten" (Build -> Report starten)
 
** Bericht wird ohne Daten angezeigt (nur Layout)
 
** Bericht wird ohne Daten angezeigt (nur Layout)
 
* testen mit Datenquelle mit "Bericht starten (Aktive Verbindung nutzen)"  
 
* testen mit Datenquelle mit "Bericht starten (Aktive Verbindung nutzen)"  
 
** Sämtliche Aufträge werden angezeigt
 
** Sämtliche Aufträge werden angezeigt
 +
 
[[Image:parameter1.png]][[Image:parameter2.png]]
 
[[Image:parameter1.png]][[Image:parameter2.png]]
 
* Parameter "C_Order_ID" hinzufügen (Gross-/Kleinschreibung beachten für die Parameterübergabe aus ADempiere)
 
* Parameter "C_Order_ID" hinzufügen (Gross-/Kleinschreibung beachten für die Parameterübergabe aus ADempiere)
Line 33: Line 37:
 
* testen - bei Abfrage der C_Order_ID "100" eingeben
 
* testen - bei Abfrage der C_Order_ID "100" eingeben
 
** Bericht enthält nur den Auftrag mit der ID 100
 
** Bericht enthält nur den Auftrag mit der ID 100
 +
 +
[[Image:subreport1.png]]
 
* Felder in PageHeader rücken
 
* Felder in PageHeader rücken
 
* Subreport anlegen
 
* Subreport anlegen
Line 38: Line 44:
 
** Bereich für Subreport malen
 
** Bereich für Subreport malen
 
** neuen Bericht erstellen
 
** neuen Bericht erstellen
 +
 +
[[Image:subreport2.png]][[Image:subreport3.png]]
 
** Query: Select * from c_orderline;
 
** Query: Select * from c_orderline;
 
** Felder raussuchen
 
** Felder raussuchen

Revision as of 04:55, 24 June 2008

Einführung

Dieser Workshop fand auf dem Linuxtag 2008 statt und wurde von User:nwessel gehalten. Ziel war es, Know-How über Jasper in die Deutsche Community zu bringen.

Voraussetzung

Ziel

Austauschen des Standardberichts für einen Verkaufsbericht durch einen JasperReport

Vorgehensweise

Jasper Bericht erstellen

Berichtsassistent1.png

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

Berichtsassistent5.png

  • Felder c_order_id und description hinzufügen

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

Parameter1.pngParameter2.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

Subreport1.png

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

Subreport2.pngSubreport3.png

    • Query: Select * from c_orderline;
    • Felder raussuchen
    • wichtig: Tabellen Layout
    • Parameter c_order_id anlegen (im Subreport)
    • Paramenter in SQL Query eintragen (Bearbeiten -> Report Anfrage)
  • 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
        • auf Box klicken und c_order_id aus Parameterlist aussuchen
  • 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 leer Datei namens Berichtsname_en_US.properties hängen
  • 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