Formulare bearbeiten
Categories:
Wie in der Bearbeitung von Formularen vorgehen
Bereiche eines Formulars
Es hat sich bewährt, die Bereiche, welche Bands genannt werden, die nicht benötigt werden, mit Löschen zu entfernen. Die üblichen Standardbereiche (z.B. Summary) erscheinen dann in Grau und können jederzeit wieder aktiviert werden.
Title
Daten, die vom Kieselstein-ERP Server angeliefert werden
Parameter
Fields
Variablen
Empfehlungen zum Bearbeiten
wo findet man im Jasperstudio was?
Seiteneigenschaften:
- Report anklicken, rechte Maus
- Show Properties
- dann im rechten Eingabedialog, rechts unten
Edit Page Format - hier kann auch die Darstellung der Feldeinheiten (Pixel, mm) eingerichtet werden.
wie findet man Parameter / Field - Namen?
Manchmal kommt es vor, dass man einfach den Namen des Parameters / des Feldes nicht findet (weil schon 100-Mal überlesen). Dafür einfach in den Reiter Source gehen und hier nach Teilen des erwarteten Namens suchen. Meist wird es dann klar, wie der Name genau lautet.
Hyperlink
Hyperlink sind praktische zusätzliche Eigenschaften innerhalb der Reports.
In Verbindung mit dem Report-GoTo kann man hier fast einen Drilldown implementieren. D.h. aus dem Report heraus auf einen bestimmten Datensatz springen oder dies für eine externe Verlinkung, z.B. zur Kieselstein ERP Homepage nutzen.
Info:
Um für den Hyperlink auch die Tooltips bearbeiten zu können, klickst du das gewünschte Feld an und wechselst dann auf Advanced
. Hier findest du auch den Hyperlink Tooltip
. Dieser muss von seinem Inhalt her immer ein String, keine Konstante, sein.
kann man Parameter / Fields von einem zum anderen Report kopieren?
Nein!
Da die Werte / Inhalte der Parameter / Fields über sogenannte Call-Back abgerufen werden, werden vom Kieselstein ERP Server nur die Inhalte angeliefert, die auch tatsächlich programmtechnisch vorgesehen sind.
In allen Hauptreports stehen folgende Parameter zur Verfügung, auch wenn sie nicht in den Formularen ausgeführt sind (historisch bedingt).
- REPORT_DIRECTORY
- REPORT_ROOT_DIRECTORY
- P_LOGO_IMAGE
- P_MANDANT_OBJ
- P_SUBDIRECTORY
- P_MODUL
- P_SQLEXEC
- P_SQLEXEC.execute(QueryString mit einem Rückgabewert)
- P_SQLEXEC.executes(QueryString mit einem Array von Rückgabewerten)
Als Beispiel siehe pers_benutzerstatistik.jrxml, Variable MaxAB_Pos_1 bzw. siehe - P_SQLEXEC.subreport(QueryString mit Rückgabewert(en) die wiederum in einem Subreport verwendet werden können)
Der Parameter REPORT_ROOT_DIRECTORY
Dieser Parameter zeigt direkt auf das Report Rootverzeichnis der Standard-Reports. Also z.B. auf LW:\kieselstein\dist\wildfly-26.1.2.Final\kieselstein\reports. Üblicher Weise wurde diese Definition dazu genutzt, auf ein Logo, ein allgemeines Formular, welches im Bereich der Anwender-Reports definiert ist (sein muss), zu zeigen. Eine Möglichkeit diesen Parameter weiter zu nutzen ist, diesen wie folgt zu nutzen.
new java.io.File($P{REPORT_ROOT_DIRECTORY}.substring(0,$P{REPORT_ROOT_DIRECTORY}.toLowerCase().lastIndexOf( "dist" ))+
"/data/reports/allgemein/iso9001.png").toURL()
Beachte auch hier die entsprechende Schreibweise für Windows / Linux.
kann man Formulare kopieren?
Das kommt darauf an!
Will man eine Reportvariante erstellen, so muss immer vom Originalformular ausgegangen werden. Die meisten Fehler passieren, wenn man unterschiedliche Formulare, die optisch gleich sind, übertragen möchte.
Ein Beispiel:
Das Los Ablieferetikett wurde schön gestaltet, es funktioniert alles. In diesem konkreten Falle wurde auch die Referenznummer der Stückliste mitgedruckt.
Nun bestand auch der Wunsch, dass das Losetikett gleich aussehen sollte, einziger Unterschied, die Chargennummer kommt aus dem Kommentar.
Nun wurde einfach das Ablieferetikett kopiert und als Losetikett definiert. Ging eigentlich ganz gut, nur die Referenznummer wurde nicht gedruckt.
Hintergrund: Die Fields und Parameter sind leider, aus den verschiedensten Gründen nicht immer gleich benannt. Daher findet der Callback das Field, den Parameter nicht und somit kann es nicht funktionieren.
Um nun, gerade bei Etiketten diese effizient vom einem Formular zum anderen zu übertragen hat sich folgende Arbeitsweise bewährt:
- Kopieren der neuen Ziel-Etikette auf den gewünschten Namen (alles klein, keine Umlaute nur Underline)
- Öffnen der optisch zu kopierenden Etikette und der Zieletikette im Reportgenerator
- Verschieben der Originalfelder in der Zieletiketten z.B. rechts raus, damit im eigentlichen Feld Platz wird.
- Kopieren aller Felder in die Zieletikette
- üblicherweise sind die Felder um 10x10 Pixel nach rechts unten verschoben. Also mit Strg+Cursor nach oben und nach links an die richtige Stelle schieben
- Speichern
- die Größe der Zieletikette anpassen
- die Felder / Parameter auf die richtigen Namen umbenennen
- die überzähligen Felder löschen
- Kompilieren. Hat man vergessen ein Feld umzubenennen, kommt ein entsprechender Fehler.
Merke
Fields und Parameter immer nur vom Original-Ausgangsreport nachtragen. NIE von irgendeinem anderen Report, auch wenn er sehr ähnlich zu sein scheint.was bedeuten die gelben Rufzeichen?

in “alten” Reports werden für sehr viele Felder diese Ausrufezeichen angezeigt. Diese bedeuten generell, dass mit diesem Feld irgendwas nicht stimmt. Da man beim normalen Arbeiten diese Information benötigt, sollten die “falschen” Fehler / Warnungen entfernt werden.
Fährt man mit der Maus auf das Ausrufezeichen, so sieht man eine genauere Fehlermeldung. 
Das bedeutet nun, dass man, um diesen Hinweis wegzubekommen, die PDF Font Namen aus dem Source entfernen muss. Also:
- auf den Reiter Source klicken

- Strg+F (Finden und Ersetzen) und PDFFontName eingeben

- damit findet man den ersten Eintrag von

- diesen durch nichts (leer) im gesamten XML ersetzen
- üblicherweise sind pdfFontName=“Helvetica” und pdfFontName=“Helvetica-Bold” verwendet. Diese alle entfernen. Damit sind die Warnungen bzgl. PdfFontName weg und die Rufzeichen haben wieder ihre übliche Bedeutung.
Um das Ausrufezeichen bei einem einzelnen Feld zu entfernen, dieses markieren, in den Properties auf den Reiter Advanced gehen und unter PDF abschalten.

Leider wird dadurch der Eintrag im Source nicht entfernt, daher muss man, wie oben beschrieben, diesen manuell aus dem Source entfernen.
Sammlung von praktischen Sonderzeichen
| Sonderzeichen | Bedeutung | Bemerkung |
|---|---|---|
| • | Interpunktion | |
| · | Middle Dot | |
| √ | ok Häckchen | ACHTUNG: Anzeige im Browser geht so nicht. |
| Ø | Durchmesserzeichen, Alt+0216 | Hinweis: Das original UTF Durchmesserzeichen, wird vom Tahoma-Font leider nicht unterstützt |
| ∑ | Summenzeichen | |
| ► | Hinweis in den Reports auf GoTo | ACHTUNG: Anzeige im Browser geht so nicht. |
Siehe dazu auch https://wiki.selfhtml.org/wiki/Zeichenreferenz oder auch https://seo-summary.de/html-sonderzeichen/
Für Sonderzeichen in den message-dateien (Sprachübersetzungen) müssen die Unicodezeichen verwendet werden. Eine Definition ist in den jeweiligen Sprachen enthalten, siehe aber auch z.B. https://symbl.cc/de/unicode/table/.
Farbverläufe darstellen
Manchmal will man z.B. die zusammengehörenden Ebenen farblich darstellen um so rasch zu sehen was zusammen gehört. Dies kann man z.B. mit Styles machen. Als Beispiel sei auf den Report ../fertigung/fert_gesamtkalkulation.jrxml verwiesen.
Fehlermeldung: Parameter msg must not be empty
Wenn ein Formular, mit einem Barcode nicht gedruckt werden kann -> es kommt schwerer Fehler und es steht im Detail der Fehlertext:
java.lang.NullPointerException: Parameter msg must not be empty
So bedeutet dies, dass versucht wurde einen Barcode für einen Leerstring auszudrucken.
Das muss bitte in der Druckbedingung für den Barcode abgefangen werden, sodass gar kein Barcode erzeugt wird.
Druck von Datamatrix Codes
Es kommt immer wieder mal vor, dass Datamatrix Barcodes mal quadratisch und das andere Mal rechteckig gedruckt werden.
Wenn das für dich wichtig ist, so muss im Reportgenerator (iReport)

bzw. im Jasper Studio im Reiter Barcode

unter Shape auf Force Square gestellt werden.
Beachte bitte zusätzlich, dass die verwendete Library für den Datamatrix Code, so wie alle freien Bibliotheken, fehlerhafte Inhalte liefert, wenn drei oder mehr Sternchen in den Daten enthalten sind.
Kennzeichnung Ausdruck Art
Woher kommen die Informationen der Ausdruckart (große Druckvorschau, E-Mail, …).
Auf den offiziellen Belegen, Anfrage bis Proformarechnung wird bei der Aktivierung auch mit angedruckt, auf welchen Weg dieser Beleg erzeugt wurde. D.h. es wird am rechten Rand der tatsächliche Ausdruckzeitpunkt und der Weg des Ausdrucks eingeblendet.

Dieser Streifen setzt sich aus zwei Informationen zusammen:
- im Report Background wird der Text (Erzeugt durch…) und der Ausdruckzeitpunkt ausgeführt. Dieser kann auch Sprachabhängig sein.

- Im Report Ausdruckmedium wird anhand der Drucktype definiert welche Information dafür angedruckt wird.

Da diese Information in der Regel für dich, bzw. dein Finanzamt von Bedeutung ist, ist dies nicht Sprachabhängig.
Der Inhalt dieses Reports wird programmtechnisch beim tatsächlichen “Druck”, also der Aktivierung des Beleges in den Ausdruck eingebunden.
Pfade
Nachdem immer öfter die Frage nach den Pfaden bzw. wie hängen denn die Reports untereinander zusammen kommt, hier der Versuch einer Aufstellung derselben.
Grundsätzlich beginnt es damit, welche Reports werden verwendet:
- die Standardreports, welche in der Titelzeile mit einem S gekennzeichnet sind
- die Anwenderspezifischen Reports, welche in der Titelzeile mit einem A gekennzeichnet sind
Für die Erklärung gehen wir hier nun z.B. von der Standard Rechnung aus.
Es wird vom Applicationserver (wildfly) das hinterlegte Rechnungsformular aufgerufen. In Abhängigkeit von Mandanten und Sprachen siehe wird der programmtechnisch hinterlegte Report rech_rechnung.jasper aufgerufen.
Der Source für dieses Jasper-File ist rech_rechnung.jrxml.
In diesem sind folgende allgemeine Subreports enthalten:
- background
- background1
- bewegungs_bild
- belegkopfdaten
- mandanten_absender
Die Pfade dafür werden aus folgenden Parametern erzeugt:
| Report | Pfad |
|---|---|
| background | $P{P_LOGO_SUBREPORT}.replaceFirst(“logo.”,“background.”) |
| background1 | $P{P_LOGO_SUBREPORT}.replaceFirst(“logo.”,“background1.”) |
| bewegungs_bild | $P{P_LOGO_SUBREPORT}.replaceFirst(“logo.”,“bewegungs_bild.”) |
| belegkopfdaten | new java.io.File(com.lp.util.HelperReport.getSubreportPath($P{P_MODUL}, “belegkopfdaten”, $P{MANDANT_C_NR}, $P{REPORT_LOCALE}, $P{P_SUBDIRECTORY}) ).toURL() |
| mandanten_absender | $P{P_LOGO_SUBREPORT}.replaceFirst(“logo.”,“mandanten_absender.”) |
Das bedeutet vor allem:
Um für Background usw. den richtigen Pfad definiert zu haben, müssen die Dateien logo.jasper, logo.jrxml und logo.png zusammenpassend im Anwenderverzeichnis sein. Damit findet der Reportgenerator dann auch die richtigen Reportvorlagen.
Besonderheit für background:
Hier sind die beiden Subreports logo und fuss mitenthalten, in denen dann die eigentlichen Logo und Fuß Informationen für das offizielle Briefpapier enthalten sind.