Berichte mit Crystal Reports entwickeln

1                     Themenübersicht

In Comarch ERP Enterprise wird zwischen der Ausgabe von Belegdokumenten und Berichtsdokumenten unterschieden. Belegdokumente unterscheiden sich von Berichtsdokumenten dadurch, dass sie die Daten eines einzelnen Beleges ausgeben und daher in der Regel eine GUID als Parameter benötigen. Berichtsdokumente hingegen stellen beliebige Daten tabellarisch dar. Sie verfügen im Allgemeinen über mehrere Parameter, für die der Benutzer direkt Werte vorgeben kann. Beide Ausgabearten basieren auf Crystal Reports. Ein (Crystal Reports) Bericht kann direkt in Crystal Reports oder in Comarch ERP Enterprise ausgegeben werden. Die Ausgabe in Comarch ERP Enterprise erfolgt dabei über den ERP-System-Output-Manager (SOM).

Eine Unterscheidung zwischen Berichtsdokumenten und Belegdokumenten bei der eigentlichen Bearbeitung von (Crystal Reports) Berichten ist nicht notwendig. Allerdings gibt es naturgemäß Unterschiede. Beispielsweise werden Berichtsdokumente normalerweise im Querformat ausgegeben, während Belegdokumente normalerweise im Hochformat ausgegeben werden.

Dieses Dokument beschreibt, welche Mechanismen durch Comarch ERP Enterprise für die Bearbeitung von Berichten und die Ausgabe von Daten vorgesehen sind. Es soll Sie bei der Erstellung und dem Bearbeiten von Berichten unterstützen und Ihre Aufmerksamkeit auf besondere Gegebenheiten lenken.

Hinweis:
Das Design eines Berichts, d. h. die Komplexität und die Frequenz der durch ihn erzeugten SQL-Anfragen, die übertragenen Datenmengen und die verwendeten Funktionen haben einen wesentlichen Einfluss auf die Leistung eines Comarch-ERP-Enterprise-Systems. Da eine zu komplexe SQL-Anfrage leicht die Datenbank überlasten kann, sollten Berichte nicht im Produktivsystem gestaltet werden und vor der Übertragung in das Produktivsystem mithilfe der Monitoring- und Profiling-Möglichkeiten von Comarch ERP Enterprise analysiert werden.

2                     Begriffsbestimmung

Belegdokumente

Die Ausgabe eines Berichts auf ein Ausgabegerät, wie einem Drucker, oder in eine Datei erzeugt ein Berichtsdokument oder ein Belegdokument. Das Berichtsdokument enthält eine Liste von Objekten, beispielsweise eine Liste von Adressen. Ein Belegdokument umfasst stets ein Objekt, beispielsweise einen Vertriebsauftrag. Die Dokumente können archiviert oder zum Beispiel als Fax oder per E-Mail an einen Partner übermittelt werden.

Berichts-Datei

Mit einer Berichts-Datei wird das Aussehen eines Berichtsdokuments festgelegt. Dazu werden die Berichts-Dateien in Crystal Reports bearbeitet. Berichts-Dateien können sprachabhängig oder sprachunabhängig sein.

Berichtsvorlage

Die Berichtsvorlage ist eine spezielle Berichts-Datei, die als Vorlage für die Erstellung von Berichten dient, die über den ERP-System-Output-Manager (SOM) ausgegeben werden sollen. Die Berichtsvorlage enthält hierfür eine Reihe von Standardparametern und benutzerdefinierten Funktionen. Darüber hinaus sind die Einstellungen in der Berichtsvorlage so gewählt, dass die Ausführungszeit und die entstehende Last möglichst minimiert werden. Neue Berichts-Dateien sollten immer basierend auf der Berichtsvorlage erstellt werden.

ERP-System-ODBC-Treiber

Der ERP-System-ODBC-Treiber ermöglicht den lesenden Zugriff auf die Daten der verschiedenen Datenbanken eines Comarch-ERP-Enterprise-Systems. Hierüber können beispielsweise Reporting-Werkzeuge oder Office-Anwendungen auf diese Daten zugreifen. Dabei werden die im Comarch-ERP-Enterprise-System definierten Berechtigungen auch für Abfragen berücksichtigt.

ERP-System-Output-Manager (SOM)

Ein ERP-System-Output-Manager (SOM) verarbeitet Ausgabeaufträge für ein oder mehrere Comarch-ERP-Enterprise-Systeme. Der SOM erzeugt Dokumente für die Ausgabe und kann sie drucken, faxen, e-mailen oder im Knowledge Store ablegen.

3                     Voraussetzungen

Zur Bearbeitung von Berichten muss eine von Comarch freigegebene Version von Crystal Reports verwendet werden. Sie finden die freigegebenen Versionen im Dokument „Systemvoraussetzungen“. Darüber hinaus müssen die im Dokument „ODBC-Datenquellen“ genannten Datenquellen verwendet werden.

Der Bearbeiter der Berichte muss Kenntnisse über das Datenmodell von Comarch ERP Enterprise besitzen. Des Weiteren werden die in dem Dokument „ODBC- und JDBC-Schnittstelle“ vermittelten Kenntnisse vorausgesetzt.

Bevor Sie beginnen, einen Bericht zu erstellen, stellen Sie sicher, dass Crystal Reports wie im Dokument „Crystal Reports konfigurieren“ eingerichtet ist.

4                     Bericht erstellen oder anpassen

Berichte, die Sie in Crystal Reports für die Verwendung in Comarch ERP Enterprise bearbeiten, müssen bestimmten Anforderungen genügen, damit die Berichte wie gewünscht ausgegeben werden können. Aus diesem Grund sollte jeder Bericht auf Basis der mitgelieferten Berichtsvorlage erstellt werden. Diese enthält viele Einstellungen und Funktionen, die Sie für ein korrektes Design benötigen.

Wenn Sie einen neuen Bericht erfassen möchten, beginnen Sie mit der Berichtsvorlage, oder duplizieren Sie einen vorhandenen Bericht. Verwenden Sie nicht die Crystal-Reports-Funktionen zum Erstellen eines neuen Berichts oder eines Berichts durch den Wizard, da solchermaßen erstellte Berichte nicht auf der Berichtsvorlage beruhen und sie somit alle Einstellungen und Funktionen der Berichtsvorlage manuell nachtragen müssen.

Die Berichtsvorlage können Sie sich mit der Anwendung „Berichte“ herunterladen (siehe auch die Dokumentation „Berichte“). Einen vorhandenen Bericht können Sie entweder in der Anwendung „Berichte“ oder in der Anwendung „Entwicklungsobjekte“, Ansicht „Berichte“, exportieren.

5                     Aufbau der Berichtsvorlage

Die Kenntnis der Berichtsvorlage ist maßgeblich für die Erstellung und das Anpassen von Berichten. Aus diesem Grund wird zunächst der generelle Aufbau dieser Vorlage beschrieben. Die Verwendung der einzelnen Konstrukte wird dann in weiteren Abschnitten beschrieben.

In der Berichtsvorlage werden alle Partner in der Tabelle „app_general_Partner“ (Partner) ausgegeben, die auch Mitarbeiter sind. Diese Tabelle dient als Beispiel für die Formatierung der Ausgaben. Sie hat aber für die Mechanismen der Berichtsvorlage keine Bedeutung und wird hier deshalb nicht genauer beschrieben.

Die Datensatzauswahl wurde gewählt, um die auf der Datenbank erzeugte Last sowie die übertragenen Datenvolumen zu minimieren. Durch die Datensatzauswahl

{app_general_Partner.maintainingOrganization} = GetOrganizationGuid ({?SystemVariables}, {?SystemValues}))

werden nur diejenigen Mitarbeiter angezeigt, für die die aktive Organisation die Datenbearbeitung durchführen darf. Erfolgt die Ausgabe in Crystal Reports, dann ist der Organisationskontext nicht festgelegt und die Funktion „GetOrganizationGuid“ gibt eine ungültige Guid zurück. In diesem Fall werden keine Mitarbeiter angezeigt. Möchten Sie Daten auch in Crystal Reports anzeigen, dann müssen sie entweder die Datensatzauswahl ändern oder für den Systemvariablen „ORGANIZATION_GUID“ einen Namen und eine gültige Guid als Parameter angeben.

Die Berichtsvorlage verwendet die Schriftart „Arial“ mit dem Schriftgrad 9 Punkt. Die Führungslinien sind für einen Raster mit der Größe 2 mm ausgelegt. Nur am rechten Seitenrand wurde die letzte Führungslinie nicht am Raster, sondern am rechten Seitenrand ausgerichtet.

5.1               Unterstützung für Führungslinien

Im „Berichtskopf a“ befinden sich Textfelder, mit deren Hilfe Führungslinien definiert werden können, die den Bericht in gleich breiten Bereichen aufteilen.

Im „Berichtskopf b“ befinden sich Textfelder, die die Mindestbreite von Datenfelder verschiedener Datentypen veranschaulichen, um Umbrüche oder ein Abschneiden der Daten zu vermeiden.

Diese beiden Bereiche werden bei der Ausgabe nicht angezeigt. Je nach Bedarf können die Bereiche aus der Berichtsvorlage gelöscht werden, bevor die fertige Berichts-Datei in Comarch ERP Enterprise importiert wird.

5.2               Einstellungen für die Ausgabe in Crystal Reports

Im „Berichtskopf c“ findet in der Formel „@_DefaultFormattingOptions“ die Initialisierung der Formatierungsinformationen statt. Die Einstellungen sind wirksam, wenn der Bericht direkt in Crystal Reports und nicht über den ERP-System-Output-Manager (SOM) ausgegeben wird. Wird der Bericht über den SOM ausgegeben, dann werden diese Einstellungen durch die benutzerspezifischen Formatierungsinformationen im Unterbericht „Formatting“ ersetzt.

Die Einstellungen in der Formel wurden so gewählt, dass sie von den in Deutschland üblichen Formatierungen abweichen. Dadurch ist besser ersichtlich, ob ein Ausgabefeld benutzerspezifisch formatiert wurde oder nicht.

5.3               Initialisierung des Berichts

Im „Berichtskopf d“ findet die Initialisierung der Systemvariablen und der Textkonstanten statt. Dieser Bereich wird bei der Ausgabe nicht angezeigt. Die hinterlegten Felder sind Formelfelder und beginnen mit „_Initialize“. Dieses Präfix soll den Initialisierungscharakter der Felder kenntlich machen. Die Formeln können in einer beliebigen Reihenfolge innerhalb des Bereichs ausgeführt werden.

Hinweis:
Zur Initialisierung werden benutzerdefinierte Funktionen verwendet. Sie dazu Kapitel „Benutzerdefinierte Funktionen“.

5.3.1          Initialisierung der Systemvariablen

In dem Bericht können verschiedene Informationen verwendet werden, die das ERP-System über den Bericht, den ausführenden ERP-System-Application-Server, die verwendeten Datenbanken und den ausführenden Benutzer hat. Diese Informationen werden durch die Formel des Formelfeldes „_InitializeSystemValues“ als Variablen zur Verfügung gestellt und können durch entsprechende Felder verwendet werden. Eine Aufstellung der Systemvariablen finden Sie im Kapitel „Systemvariablen“.

5.3.2          Initialisierung der Textkonstanten

Die Textkonstanten dienen dazu, den Bericht sprachunabhängig zu erstellen. Sprachunabhängige Berichte können dann ohne Verwendung von Crystal Reports direkt in Comarch ERP Enterprise übersetzt werden. Dazu werden die Werte der Textkonstanten eines Berichts in dem Formelfeld „_InitializeTextValues“ als Variablen zur Verfügung gestellt. Für jede Textkonstante wird ein eigenes Formelfeld erstellt, das den Inhalt der entsprechenden Variablen zurückliefert. Die verwendeten Textkonstanten sind für jeden Bericht anzupassen. Eine Beschreibung der Funktionalität finden Sie im Kapitel „Sprachunabhängigkeit von Berichten“.

Hinweis:

Neben der Verwendung von berichtsspezifischen Textkonstanten können Sie auch berichtsübergreifende, formatierte Texte in Form von „Textbausteinen“ in der Anwendung „Textbausteine“ erfassen. Diese werden in der Berichtsvorlage standardmäßig nicht verwendet. Weitere Informationen zur Verwendung von Textbausteinen finden Sie im Kapitel „Berichtsübergreifende Textbausteine“.

5.3.3          Initialisierung der Nachkommastellen

In dem Formelfeld „_InitializeDecimals“ werden die Anzahl der Nachkommastellen aus den Systemvariablen extrahiert. Die Nachkommastellen werden in Comarch ERP Enterprise in der Anwendung „Customizing“ eingestellt. Mithilfe der bereitgestellten Variablen kann nun der Bericht dieselbe Formatierung für Zahlen, Mengen, Beträge und Preise wie in Comarch ERP Enterprise erhalten. Die Verwendung der Nachkommastellen ist im Kapitel „Zahlen formatieren“ beschrieben.

5.4               Formatierung

Im „Berichtskopf e“ ist ein Unterbericht mit dem Namen „Formatting“ eingebunden. In diesem Unterbericht werden aus der virtuellen Funktion „pgm_Formats“ die Formatierungsinformationen ausgelesen und in Variablen zur Verfügung gestellt. Dass das Lesen der Daten in einem Unterbericht realisiert ist, hat verschiedene Gründe. Durch den Unterbericht kann sichergestellt werden, dass immer eine Datenbankanfrage erfolgt. Gleichzeitig ist dadurch auch dafür gesorgt, dass die Anfrage nur ein einziges Mal erfolgt. Zusätzlich erscheint die verwendete Funktion nicht im Dialog-Fenster des Datenbank-Assistenten für den Hauptbericht.

Die Ausgabe des „Berichtskopf e“ darf nicht unterdrückt werden, da sonst die Daten aus der virtuellen Funktion „pgm_Formats“ nicht gelesen werden. Stattdessen ist in der Formatierung des Unterberichts unter dem Karteireiter „Unterbericht“ die Funktion „Leeren Unterbericht unterdrücken“ aktiviert.

Die benutzerspezifischen Formatierungsinformationen im Unterbericht ersetzen die Formatierungsinformationen in der Formel „@_DefaultFormattingOptions“ im „Berichtskopf c“. Wird der Bericht direkt in Crystal Reports und nicht über den SOM ausgegeben, dann ist der Benutzer in Comarch ERP Enterprise nicht bekannt. In diesem Fall wird die Ausgabe des Unterberichts unterdrückt. Dadurch sind die Einstellungen im „Berichtskopf c“ weiterhin wirksam.

Die genaue Verwendung der Formatierungsinformationen ist in diesen Kapiteln beschrieben:

  • Unterbericht „Formatting“
  • Zahlen formatieren
  • Zeit und Datum formatieren

Hinweis:

Die virtuelle Tabelle „pgm_FORMAT“ hat den Status „Abgelehnt“ und wurde durch die virtuelle Tabelle „pgm_Formats“ ersetzt.

5.5               Überschriften

Die Überschriften sind in den Abschnitten des Berichts abgelegt, die mit „Seitenkopf“ beginnen. Dazu besteht jeweils ein Bereich für die Berichtsüberschrift, eine Trennlinie, ein Bereich für die Spaltenüberschriften und eine weitere Trennlinie.

5.5.1          Berichtsüberschrift

Die Berichtsüberschriften sind im „Seitenkopf a“ abgelegt und in einen linken Teil und einen rechten Teil unterteilt. Die verwendeten Felder sind Formelfelder und heißen entsprechend „_LeftHeading“ und „_RightHeading“. Durch die Formel wird in „_LeftHeading“ der Parameter „ReportTitle“ angezeigt, wenn dieser nicht leer ist. Wenn der Parameter leer ist oder ein „*“ enthält, wird die Systemvariable „_ReportDescription“ für die Berichtsüberschrift verwendet. Das Formelfeld „_RightHeading“ wird normalerweise durch die Systemvariablen gefüllt (siehe dazu das Kapitel „Systemvariablen“).

5.5.2          Spaltenüberschriften

Die Berichtsvorlage ist sprachunabhängig erstellt. Die Spaltenüberschriften im „Seitenkopf c“ enthalten Textkonstanten. Diese Konstanten wurden am Anfang des Berichts initialisiert (siehe Kapitel „Initialisierung der Textkonstanten“). In den Formelfeldern der Spaltenüberschriften werden nur die entsprechenden Variablen referenziert.

5.6               Inhalte

Die Inhalte bestehen aus Bereichen für den Gruppenkopf, die Details und den Gruppenfuß.

5.6.1          Gruppenkopf

Die Berichtsvorlage besitzt eine Gruppierebene für die Zugehörigkeit des Partners. Die Ausgabe erfolgt im „Gruppenkopf 1“ zusammen mit einer Text­konstanten für die Bezeichnung.

Mit jeder neuen Zugehörigkeit wird der Zähler für die Einfärbung des Hintergrunds mithilfe des Formelfelds „_LineCounterReset“ auf null zurücksetzt. Dadurch kann die erste Zeile im Detailbereich immer mit der gleichen Hintergrundfarbe eingefärbt werden.

Für die Gruppierebene ist die Gruppenoption „Gruppenkopf auf jeder neuen Seite wiederholen“ aktiviert.

5.6.2          Details

Die Details sind in zwei Bereiche unterteilt. „Details a“ wird nicht ausgegeben und enthält ein Formelfeld für das Erhöhen der Zeilennummer.

Wenn bei der Ausgabe eines Berichtsdokumentes, z. B. in der Anwendung „Berichtsdokumente ausgeben“ die Einstellung „Hintergrund einfärben: Ja“ gewählt wurde, können Listenzeilen alternierend eingefärbt werden. Dabei wird automatisch eine Farbe gewählt, die dem aktuellen Farbthema entspricht. Die Hintergrundfarbe der Zeilen wird für die geraden Zeilennummern gesetzt. In der Berichtsvorlage wird ein eigener Zähler verwendet, damit dieser auch in Unterberichten verwendet werden kann. Von einer Verwendung der Crystal-Reports-Zählfunktion „Recordnumber“ wurde abgesehen, da diese in Unterberichten neu startet und somit die Hintergrundfarbe nicht immer korrekt gesetzt werden kann. Dadurch, dass das Formelfeld für das Erhöhen der Zeilennummer vor den Datenfeldern im Bereich „Details b“ erscheint, wird die erste und alle ungerade, Zeilen eingefärbt. Erfolgt die Erhöhung erst nach der Ausgabe der Daten, dann wird die erste Zeile nicht eingefärbt. In diesem Fall werden alle geraden Zeilen eingefärbt.

Hinweis:
Wird ein Datensatz unterdrückt, dann sollte der Zähler auch nicht erhöht werden, da die Zeilen sonst falsch eingefärbt werden könnten.

Die eigentliche Ausgabe der Daten erfolgt im Bereich „Details b“. Sechs Spalten werden beispielhaft ausgegeben. Die erste enthält die Partneridentifikation als Text. In der zweiten Spalte wird der Name des Partners als Text ausgegeben. Die nachfolgenden Spalten enthalten das Erfassungsdatum und das letzte Änderungsdatum des Partners sowie die Partneridentifikation des damit verbundenen Benutzers. Die Datumsspalten können als Beispiel für die Formatierung von Zeit- und Datumsangaben dienen.

5.6.3          Gruppenfuß

Jede Gruppierebene besitzt einen Gruppenfuß. Der Bereich „Gruppenfuß 1“ korrespondiert mit dem „Gruppenkopf 1“. Dieser Bereich wird nicht ausgegeben. Der „Gruppenfuß 1“ wird dann unterdrückt, wenn es sich um den letzten Datensatz handelt. Dadurch wird verhindert, dass ein leerer Gruppenfuß am Ende des Berichts die Ausgabe einer zusätzlichen, leeren Seite verursacht.

5.7               Berichtsfuß

Die Ausgabe des Berichtfußes wird unterdrückt. Dadurch wird verhindert, dass ein leerer Berichtsfuß am Ende des Berichts die Ausgabe einer zusätzlichen, leeren Seite verursacht.

5.8               Seitenfuß

Am Ende jeder Seite erscheint eine Trennlinie vor dem eigentlichen Seitenfuß. In der linken unteren Ecke wird mithilfe des Formelfelds „_Company“ der Name des Mandanten ausgegeben. In der Mitte wird das Formelfeld „_PageCount“ ausgegeben, das die Seitenzahl enthält. In der rechten unteren Ecke wir mithilfe des Formelfeldes „_PrintDateTime“ das Ausgabedatum bezogen auf die Zeitzone der Datenquelle ausgegeben.

5.9               Benutzerdefinierte Funktionen

Für das Initialisieren der Systemvariablen, Textkonstanten und Zahlenwerte sind benutzerdefinierte Berichtsfunktionen in der Berichtsvorlage hinterlegt. Nachfolgend sind diese Funktionen in alphabetischer Reihenfolge aufgeführt.

5.9.1          Funktion „GetDecimals“

Die Funktion „GetDecimals“ wird zur Bestimmung der Anzahl an Nachkommastellen für die verschiedenen Arten von Zahlen, z. B. Beträge, verwendet. Mit ihrer Hilfe kann aus einem String für einen Schlüssel eine Zahl extrahiert werden. Die Funktion hat zwei feste und einen optionalen Parameter. Der erste Parameter ist der Schlüssel. Im zweiten Parameter stehen alle Schlüssel mit ihren Werten. Dabei sind die einzelnen Inhalte durch Leerzeichen voneinander getrennt und jedem Schlüssel folgt sein Wert. Der zweite Parameter kann z. B. diesen Inhalt haben: „AMOUNT 2 DURATION 3 PRICE 1 QUANTITY 2“. Der dritte Funktionsparameter definiert den Standardwert, falls der zweite Parameter leer war oder der Schlüssel nicht in dem zweiten Parameter angegeben ist. Wenn der dritte Parameter nicht angegeben wird, wird sein Wert als 2 angenommen.

5.9.2          Funktion „GetLineColor“

Die Funktion „GetLineColor“ nimmt als Parameter eine Zeilennummer und eine Farbnummer entgegen. Durch Aufruf dieser Funktion kann man alternierende Hintergrundfarben für die Details bestimmen. Wenn die übergebene Zeilennummer eine ungerade Zahl ist, wird der übergebene Farbcode zurück geliefert. Für gerade Zeilennummern wird die Farbnummer für „keine Farbe“ zurück geliefert. Die Verwendung ist in Kapitel 5.6.2Details“ beschrieben.

5.9.3          Funktion „GetOrganizationGuid“

Die Funktion „GetOrganizationGuid“ bestimmt aus den Systemvariablen die Organisations-Guid. Wenn die Organisations-Guid nicht vorhanden ist, wird der Wert für INVALID_GUID zurückgegeben. Diese Funktion kann direkt in der WHERE-Bedingung verwendet werden, um die Datenmenge auf die Daten der aktuellen Organisation einzuschränken. Als Systemvariable würde der Wert zu spät bestimmt werden und könnte nicht in die WHERE-Bedingung eingehen. Deshalb muss in diesem Fall die Funktion verwendet werden. Die Funktion benötigt die Berichtsparameter „SystemVariables“ und „SystemValues“.

5.9.4          Funktion „GetValue“

Die Funktion „GetValue“ bestimmt den Wert einer Variablen. Sie wird zur Bestimmung der Systemvariablen (siehe Kapitel „Systemvariablen“) und der Textkonstanten (siehe Kapitel „Sprachunabhängigkeit von Berichten“) benötigt. Sie hat drei Pflichtparameter und einen optionalen Parameter. Der erste Parameter ist der Name der Variablen. Der zweite Parameter enthält die Liste aller bekannten Variablennamen. Im dritten Parameter sind die Werte zu den Variablen aufgeführt. Der vierte Parameter kann einen Standardwert definieren. Wenn kein Standardwert definiert ist, wird der leere String als Standardwert verwendet.

5.10          Standardparameterfelder

Die Berichtsvorlage enthält folgende Standardparameterfelder.

Parametername Bedeutung
ReportTitle Enthält den Namen des Berichts, wie er in Comarch ERP Enterprise festgelegt wird.
SystemVariables Enthält die Namen der Systemvariablen (siehe Kapitel „Systemvariablen“).
SystemValues Enthält die Werte der Systemvariablen (siehe Kapitel „Systemvariablen“).
TextConstants Enthält die Namen der Textkonstanten für die Sprachunabhängigkeit (siehe Kapitel „Sprachunabhängigkeit von Berichten“).
TextValues Enthält die Werte für die Sprachunabhängigkeit (siehe Kapitel „Sprachunabhängigkeit von Berichten“).

6                     Vorgehensweisen

In diesem Kapitel werden die notwendigen Schritte beschrieben, um einen Bericht erstellen und mit dem Bericht arbeiten zu können.

Bevor die Verbindung zu Comarch ERP Enterprise hergestellt wird, sollten Sie die Einstellungen des Berichts kontrollieren. Wie die Einstellungen des Berichts gewählt werden sollten, ist im Dokument „Crystal Reports konfigurieren“ beschrieben.

Mit Crystal Reports kann man auf die Daten von Comarch ERP Enterprise über den ERP-System-ODBC-Treiber zugreifen. Der Zugriff über einen ODBC-Treiber erfolgt unter Windows durch eine Datenquelle (DSN, Data Source Name). Sie können eine DSN in der Anwendung „Datenquellen (ODBC)“ der Windows-Systemsteuerung definieren. In Comarch ERP Enterprise ist eine einfachere Möglichkeit zum Erstellen einer DSN realisiert. Wie Sie eine DSN erstellen, ist in der Dokumentation „ODBC-Datenquellen“ beschrieben.

6.1               Symbolische Namen für DSN

Wenn Sie eine der folgenden symbolischen Namen für die Datenquelle (DSN) verwenden, dann kann die erstellte Berichtsdatei auf einem beliebigen Comarch-ERP-Enterprise-System ausgegeben werden.

  • Semiramis OLTP
  • Semiramis OLAP
  • Semiramis Repository
  • Semiramis Configuration

Verwenden Sie andere Datenquellen, dann müssen diese Datenquellen auch auf dem SOM angelegt sein. Ansonsten kann der SOM bei der Ausgabe nicht auf die Daten zugreifen und wird die Ausgabe abbrechen.

6.2               Mehrere Datenquellen

Ein in Crystal Reports erstellter Bericht kann mehrere symbolische Namen als Datenquellen enthalten. Beispielsweise können die beiden Datenquellen „Semiramis OLTP“ und „Semiramis OLAP“ in demselben Bericht verwendet werden.

Wenn ein Bericht jedoch Datenquellen zu mehreren OLTP-Datenbanken enthält, dann kann der Bericht zwar über den SOM ausgegeben werden (vorausgesetzt die Datenquellen sind dort angelegt), aber der Bericht kann nicht über die Client-Version des ERP-System-ODBC-Treibers ausgegeben werden. Das bedeutet, dass Sie einen Bericht mit Datenquellen für mehrere OLTP-Datenbanken nur bedingt interaktiv in Crystal Reports testen können. Diese Einschränkung gilt auch dann, wenn die Datenquelle der zweiten OLTP-Datenbank in einem Unterbericht vorkommt. In diesen Fällen sollte der Bericht eingecheckt bzw. importiert und anschließend über die Anwendung „Berichtsdokumente ausgeben“ getestet werden.

6.3               Auswahl der Datenquelle (DSN)

Im Menü „Datenbank“ müssen Sie den „Datenbank-Assistenten“ starten. Ein Dialog-Fenster mit zwei Karteireitern wird geöffnet. Beim ersten Öffnen des „Datenbank-Assistenten“ können Sie durch Auswahl des Ordners „Neue Verbindung hinzufügen“ und des Unterordners „ODBC (RDO)“ das ODBC-Auswahl-Dialog-Fenster öffnen. Wählen Sie nun den Namen der Datenquelle aus, die Sie für den Zugriff auf Comarch ERP Enterprise festgelegt haben. Im Standardfall ist das die Datenquelle „Semiramis OLTP“. Drücken Sie anschließend im Dialog-Fenster auf „Fertig stellen“, um das Dialog-Fenster zu schließen.

6.4               Auswahl der Tabellen

Unter dem Ordner „ODBC (RDO)“ erscheint ein Datenbankeintrag „Semiramis OLTP“. Unterhalb des Datenbankeintrages finden Sie den Hauptkatalog „CISAG“ mit seinen Unterkatalogen und den darin vorhandenen Tabellen. Wählen Sie die gewünschten Tabellen aus den Unterkatalogen aus und schieben diese Tabellen in die Liste der „Ausgewählten Tabellen“.

Hinweis:
Die Beschreibung der Unterkataloge und deren Inhalt finden Sie in der Dokumentation „ODBC- und JDBC-Schnittstelle“.

6.5               Verknüpfung der Tabellen

Bevor Sie das Dialog-Fenster des „Datenbank-Assistenten“ beenden können, müssen noch die Verknüpfungen zwischen den Tabellen angepasst werden. Wenn Verknüpfungen vorhanden sind, müssen Sie überprüfen, ob Sie auch alle Verknüpfungen benötigen. Des Weiteren müssen Sie die Verknüpfungsoptionen anpassen.

Neue Verknüpfungen können Sie erstellen, indem Sie die Tabellenspalte, von der die Verknüpfung ausgehen soll per Drag & Drop auf die Spalte ziehen, die das Ziel der Verknüpfung sein soll. Alternativ können Sie Verknüpfungen automatisch erstellen lassen.

Zwei Varianten für das automatische Erstellen der Verknüpfungen stehen zur Verfügung:

  • Man kann die Verknüpfung aufgrund der Spaltennamen erstellen lassen. Die Verknüpfung über die Namen ist in den seltensten Fällen korrekt. Beispielsweise haben in Comarch ERP Enterprise die meisten Tabellen einen Primärschlüssel auf die Tabellenspalte „guid“. Eine Verknüpfung über dieses Attribut funktioniert bei der Verknüpfung zwischen Artikel und Vertriebsartikel. Wenn Sie aber Vertriebsauftrag und Vertriebsauftragsposition verknüpfen wollen, dann heißt die Spalte in den Positionen „header“ und nicht „guid“.
  • Die Schlüssel der Tabellen von Comarch ERP Enterprise können abgefragt und die Beziehung über die Schlüssel erstellt werden. Dabei werden nur automatische Verknüpfungen für Tabellen erstellt, die bisher nicht verknüpft sind.

Ab Crystal Reports 10 bestehen zwei Auslöser zum Erstellen der automatischen Verknüpfungen:

  • Zum einen dadurch ausgelöst, dass Sie den Button „Verknüpfung“ auf dem Karteireiter „Verknüpfungen“ drücken. Dieses Verhalten ist identisch mit dem Verhalten von Crystal Reports 9.
  • Zusätzlich können die Verknüpfungen beim Auswählen einer Tabelle auf dem Karteireiter „Daten“ automatisch erstellt werden. Die Verknüpfungen werden dann „Nach Namen“ erstellt und sind in der Regel nicht korrekt. Wenn Sie die Crystal-Reports-Konfiguration gemäß der Dokumentation „Crystal Reports konfigurieren“ vorgenommen haben, dann sollte die Erstellung beim Hinzufügen der Tabellen deaktiviert sein.

Sie können Verknüpfungen löschen, indem Sie nach dem Auswählen einer Verknüpfung die Taste „Entf“ oder den Button „Verknüpfung löschen“ drücken. Das Kontextmenü der Verknüpfung enthält auch die Löschmöglichkeit.

Hinweis:
Die Farbmarkierungen vor den Spalten sind für Sie als Hilfestellung vorhanden. Das Ziel einer Verknüpfung sollte immer mit einer Farbmarkierung versehen sein. Diese Markierung gibt den Index an, in dem die Spalte enthalten ist. Wenn eine Spalte nicht in einem Index enthalten ist, führt das Auflösen der Verknüpfung potenziell zu einem Full-Table-Scan. Eine Erklärung zu den Farbmarkierungen erhalten Sie, wenn Sie den Button „Indexlegende“ drücken.

Verknüpfung erzwingen

Ab Crystal Reports 10 besteht die Option „Verknüpfung erzwingen“ im Menü „Verknüpfungsoptionen“. Die Standard-Konfiguration einer Verknüpfung erzwingt nicht deren tatsächliche Ausführung, d. h. unter bestimmten Umständen wird keine entsprechende JOIN-Klausel im resultierenden SQL-Statement generiert und die verknüpfte Tabelle fehlt. Dadurch kann man ein unerwartetes Anfrageergebnis erhalten, dessen Ursache schwierig zu ermitteln ist. Crystal Reports kann eine Verknüpfung zu einer Tabelle weglassen, wenn keine Spalte der Tabelle im Bericht verwendet wird, z. B. zur Ausgabe oder Auswahl. Ob so eine Verknüpfung tatsächlich weggelassen wird, ist kontextabhängig von weiteren existierenden Verknüpfungen im Bericht. Die Option „Verknüpfung erzwingen“ im Menü „Verknüpfungsoptionen“ (erreichbar über einen Doppelklick auf den Verknüpfungspfeil) muss immer auf „Beide erzwungen“ eingestellt werden, um ein Weglassen der Verknüpfung zu verhindern.

6.6               Datentypen in Comarch ERP Enterprise

In diesem Kapitel wird beschrieben, wie die Comarch-ERP-Enterprise-Datentypen üblicherweise verwendet werden. Für die einzelnen Datentypen wird kurz beschrieben, wie die Ausgabe des Wertes erfolgt. Grundsätzlich sind die Datentypen, ihre Besonderheiten und Verwendung in der Dokumentation „ODBC- und JDBC-Schnittstelle“ beschrieben.

6.6.1          GUID

GUIDs werden in Comarch ERP Enterprise meistens für den Primärschlüssel eines Objektes und als Fremdschlüssel verwendet. Die Verknüpfung der Tabellen erfolgt über die entsprechenden GUID-Attribute. Eine direkte Ausgabe der GUIDs ist im Allgemeinen nicht sinnvoll. Stattdessen sollten normalerweise die Attribute des Business Keys ausgegeben, z. B. die Artikelnummer.

6.6.2          String

Attribute, die auf den Typ „String“ basieren sind sehr häufig. Für sie ist keinerlei Sonderbehandlung notwendig.

6.6.3          Boolean

Boolesche Werte werden in Crystal Reports als „Wahr“ oder „Falsch“ ausgegeben. Zum besseren Verständnis sollten Sie diese Werte jeweils durch einen aussagekräftigen Text ersetzen. Die Formel in dem verwendeten Feld könnte folgenden Inhalt haben:

Shared StringVar strCustomerSalesItemExistingFalse;

Shared StringVar strCustomerSalesItemExistingTrue;

 

if({app_sales_SalesItem.customerSalesItemExisting}) Then

strCustomerSalesItemExistingTrue

else

strCustomerSalesItemExistingFalse

Korrekterweise sollten die Variablen „strCustomerSalesItemExistingFalse“ und „strCustomerSalesItemExistingTrue“ übersetzbare Texte enthalten. Wie Sie diese Texte festlegen und den Variablen zuweisen, ist im Kapitel „Sprachunabhängigkeit von Berichten“ beschrieben.

6.6.4          Zahlen

Viele Datentypen werden von Crystal Reports als Nummer ausgegeben. Dazu zählen: „byte“, „char“, „short“, „integer“, „long“, und „Dezimalzahl“. Die einfachen Typen können normalerweise direkt ausgegeben werden. Die Dezimalzahl-Werte müssen besonders formatiert werden, damit die Einstellungen für Gruppen- und Dezimaltrennzeichen aus Comarch ERP Enterprise verwendet werden.

6.6.5          Valueset

Attribute vom Typ „Valueset“ sind auf der Datenbank als „short“ gespeichert. Durch den ERP-System-ODBC-Treiber werden diese Zahlen in symbolische Konstanten übersetzt. Die Ausgabe dieser Werte sollte nicht direkt erfolgen. Der ERP-System-ODBC-Treiber erweitert das Datenmodell um eine virtuelle Spalte. Diese trägt den Namen der Valueset-Spalte, ergänzt um die Endung „_text“. Sie enthält den im Valueset festgelegten Text für den in der Originalspalte vorhandenen Wert. Diesen sollten Sie zur Ausgabe verwenden.

6.6.6          Zeit und Datum

Spalten, die Zeit- und Datumsinformationen enthalten, können in der Regel direkt ausgegeben werden, ohne sie umzurechnen. Die Werte beziehen sich immer auf die Zeitzone der Organisation, die für die Datenquelle verwendet wird.

In Spalten vom Typ „Timestamp“ wird der Zeitpunkt unabhängig von der Zeitzone in der Datenbank gespeichert. Diese Werte beziehen sich auf UTC (Universal Time Codordinated). Beim Speichern werden die Daten entsprechend konvertiert. Diese Zeitpunkte werden immer bezüglich der Zeitzone der Organisation der Datenquelle aufbereitet.

Spalten vom Typ „CisAttributeDate“ und „CisObjectDate“ werden immer bezüglich der Zeitzone in der Datenbank aufbereitet. Wie in Comarch ERP Enterprise muss bei einer abweichenden Zeitzone der Name der Zeitzone angezeigt werden. Die Zeitzone wird vom ERP-System-ODBC-Treiber in einer virtuellen Spalte geliefert. Die Spalte heißt wie das ursprüngliche Attribut mit dem Zusatz „_timezone“. Dieses Attribut muss in einem separaten Feld ausgegeben werden. Wenn die Zeitzone nicht von der Zeitzone der Organisation der Datenquelle abweicht, ist diese Spalte leer.

Alle Zeit- und Datumsinformationen müssen gesondert formatiert werden, damit die gleiche Darstellung bzgl. Reihenfolge von Tag, Monat und Jahr und die gleiche Datums- und Zeit-Trennzeichen wie in Comarch ERP Enterprise verwendet werden.

6.6.7          BLOB-Attribute

Wenn BLOB-Attribute als Bilder ausgeben werden, müssen die Bilder in den von Crystal Reports unterstützten Formaten in der Datenbank gespeichert werden.

Die von Crystal Reports unterstützten Formate für Bilder sind:

  • bmp
  • jpg
  • png

Hinweis:

Crystal Reports und auch wir empfehlen, für Bilder das PNG-Format zu verwenden. Verwenden Sie auf keinen Fall das TIFF-Format. Die Verwendung des TIFF-Formats kann Abstürze von Crystal Reports und des SOM verursachen.

6.7               Verwendung von Parametern

Sie können dem Bericht beliebig viele benutzerdefinierte Parameter hinzufügen. Beim Importieren in Comarch ERP Enterprise wird für jeden Parameter in dem Bericht ein entsprechender Parameter in Comarch ERP Enterprise erzeugt. Diese Parameter ermöglichen u. a. die Eingabe von Abfragemerkmalen in der Anwendung „Berichtsdokumente ausgeben“.

6.7.1          Namensgebung

Ein Parameter darf nur aus Groß- und Kleinbuchstaben sowie Ziffern bestehen. Der Parameter sollte mit dem Namen des Berichts beginnen, dann folgt der eigentliche Name. Für Attribute des primär betrachteten Business Entitys wird der Attributname verwendet. Bei Attributen aus Objekten, die über Fremdschlüsselbeziehungen referenziert werden, wird der Name aus dem Beziehungsnamen und dem Attributname zusammengesetzt.

Beispiel:

Aus der Berichtsvorlage wird eine Artikelliste erstellt. Der Bericht heißt „com.cisag.app.sales.rpt.SalesItem“ und basiert auf dem Business Entity „com.cisag.app.sales.obj.Salesitem“. Ein Parameter für die ABC-Klassifizierung muss dann „Abc“ heißen, weil das Attribut „abc“ von
„SalesItem“ mit dem Parameter beeinflusst wird. Ein Parameter für die Artikelnummer muss „ItemNumber“ heißen, da die Artikelnummer über die Beziehung „Item“ referenziert wird.

Bericht Attribut Parameter
SalesItem SalesItem.abc Abc
Item.number ItemNumber

Somit sind bei Anwendungen und Berichten ähnliche Regeln bei der Vergabe von Parameternamen zu berücksichtigen. Bei der Namensgebung wird nicht auf Groß- und Kleinschreibung geachtet. Die folgenden Namen sind von den systembezogenen Parametern belegt und können daher nicht für benutzerdefinierte Parameter benutzt werden:

  • ReportTitle
  • SystemVariables
  • SystemValues
  • TextConstants
  • TextValues

Der ebenfalls häufig vorkommende Parameter „document“ wird nur in Belegdokumenten verwendet. Er ist als Übergabeparameter für die GUID des Beleges vorgesehen. Zudem sind alle Parameternamen, die mit „Report“ beginnen, für zukünftige Erweiterungen reserviert und können nicht für benutzerdefinierte Parameter benutzt werden.

6.7.2          Datentypen in Crystal Reports

Die folgende Tabelle zeigt, welche Datentypen von Crystal Reports in Comarch ERP Enterprise importiert werden können, sowie welche weiteren Optionen im Dialog-Fenster „Parameterfeld erstellen“ oder „Parameterfeld bearbeiten“ in Crystal Reports unterstützt werden:

Datentyp Unterstützte Optionen Import möglich?
Boolesch Die Verwendung von Parametergruppen wird nicht unterstützt. Ja
Währung Nicht zutreffend. Nein
Datum Nicht zutreffend. Nein
DatumUhrzeit Wird nur in Verbindung mit einem entsprechenden logischen Datentyp in Comarch ERP Enterprise unterstützt. Ja
Nummer Keine Einschränkungen. Ja
Zeichenfolge Keine Einschränkungen. Ja
Uhrzeit Nicht zutreffend Nein

Wenn Sie in Comarch ERP Enterprise dem Parameter keinen logischen Datentypen zuordnen, dann erfolgt die Angabe in der Anwendung „Berichtsdokumente ausgeben“ gemäß der folgenden Tabelle:

Datentyp Mehrfach Diskret Bereich Angabe
Boolesch Nicht zutreffend Nicht zutreffend Nicht zutreffend „Falsch“ als Vorschlagswert.
Nummer Nein Ja Nein Eingabe ist zwingend.
Nein Nein Ja Eingabe ist zwingend.
Ja Ja Nein Eingabe ist zwingend.
Ja Nein Ja Eingabe ist zwingend.
Ja Ja Ja Eingabe ist zwingend.
Zeichenfolge Nein Ja Nein Leere Angabe wird durch „*“ ersetzt.
Nein Nein Ja Eingabe ist zwingend.
Ja Ja Nein Leere Angabe wird durch „*“ ersetzt.
Ja Nein Ja Eingabe ist zwingend.
Ja Ja Ja Eingabe ist zwingend.
Parameter mit Vorschlagswerten

Im Bericht können Vorschlagswerte für die Parameter angegeben werden. Wenn für Parameter Vorschlagswerte festgelegt werden, darf es sich dabei nicht um einen einzelnen Vorschlagswert handeln, der als „*“ festgelegt ist. Zusätzlich muss das Auswahlfeld „Bearbeitung von Standardwerten zulassen“ für den Parameter deaktiviert sein. In Crystal Reports XI muss für den Parameter die Option „Allow Custom values“ auf „false“ gesetzt werden.

6.7.3          Logische Datentypen in Comarch ERP Enterprise

Beim Importieren des Berichts in Comarch ERP Enterprise können Sie jedem benutzerdefinierten Parameter einen logischen Datentyp zuordnen.

Durch den logischen Datentyp und dessen zugeordnete Data-Description erhält der Parameter seine weiteren Eigenschaften. Dazu gehören u. a. die Wertehilfe und die Beschriftung des Auswahlfeldes in der Anwendung „Berichtsdokumente ausgeben“ sowie einen Vermerk, ob die Angabe eines Wertes für die Ausgabe zwingend ist. Normalerweise geben Sie in der Anwendung „Berichte“ nach dem Importieren einen logischen Datentypen an. Für bestimmte, einfache Datentypen kann die Angabe eines passenden logischen Datentyps entfallen. Dann existiert auch keine Wertehilfe und die in Crystal Reports festgelegte Beschriftung wird von Comarch ERP Enterprise übernommen. Die Beschriftung wir auch dann übernommen, wenn bei der Data-Description kein Text für die Beschriftung angegeben wurde. Eventuell andere in der Berichtsvorlage hinterlegte Informationen, wie z. B. Standardwerte (Defaults), werden nicht übernommen.

Beim Speichern einer Berichtsvorlage in Comarch ERP Enterprise wird geprüft, ob die in Crystal Reports verwendeten Datentypen zu den in Comarch ERP Enterprise zugeordneten logischen Datentypen passen.

Für jeden Parameter eines Berichts sollte ein eigener logischer Datentyp und eine zugehörige Data-Description erfasst werden. Dies gewährleistet, dass die Texte und Direkthilfen für den Parameter spezifisch erfasst werden können. Der Name des logischen Datentyps setzt sich aus dem Namen des Berichts und dem Namen des Parameters zusammen.

Bericht Parameter Logischer Datentyp
com.cisag.app.sales.rpt­.SalesItem Abc com.cisag.app.sales.rpt­.SalesItemAbc
ItemNumber com.cisag.app.sales.rpt­.SalesItemItemNumber
Klassifikationen

Um die Wertehilfe für Klassifikationen an einem Parameterfeld in der Anwendung „Berichtsdokumente ausgeben“ zu erhalten, müssen Sie einen logischen Datentyp verwenden, der besondere Eigenschaften hat. Dieser logische Datentyp muss auf dem logischen Datentyp basieren, der für das Attribut „path“ der entsprechenden Klassifikation verwendet wurde. Um z. B. die Wertehilfe für die Klassifikation „com.cisag.app.sales.obj.SalesItemHierarchy1“ zu bekommen, muss der logische Datentyp für das Parameterfeld eine Ableitung von „com.cisag.app.sales.SalesItemHierarchy1Path“ sein.

6.7.4          Besonderheiten von „DatumUhrzeit“

Beim Datentyp „DatumUhrzeit“ in Crystal Reports übergibt der ERP-System-ODBC-Treiber eine auf die Zeitzone „Greenwich Mean Time“ (GMT) bezogene Zeitangabe.

Sie können diesen Wert auf die in der Datenquelle (DSN) verwendete Zeitzone mithilfe einer virtuellen Tabelle umsetzen. Die Umsetzung ist jedoch nur für Einzelwerte möglich; Sie können keine Mehrfachwerte oder Bereiche umsetzen. Sollte in einer Berichtsvorlage ein Datumsbereich als Parameter übergeben werden, wird daher empfohlen, zwei getrennte Parameter mit diskreten Werten ohne Mehrfachangaben in dem Bericht festzulegen.

6.7.5          Verwendung von Parametern in WHERE-Bedingungen

In Crystal Reports können Sie Operatoren wie z. B. „ist gleich“, „ist einer von“, „liegt zwischen“ oder „ist wie“ für den Vergleich eines Auswahlparameters in der WHERE-Bedingung verwenden.

Zudem können Sie auch einen komplexen Ausdruck in einer Formel hinterlegen, der in der WHERE-Bedingung abgefragt wird. Welche Operatoren Sie in einem Bericht verwenden, hängt von der Definition des jeweiligen Parameters sowie des in Comarch ERP Enterprise verwendeten logischen Datentyps ab.

Die Verwendung von Operatoren in der WHERE-Bedingung des Berichts wird nicht in Comarch ERP Enterprise importiert und auch nicht überprüft. Daher sollten Sie immer darauf achten, dass die verwendeten Operatoren zum logischen Datentypen in Comarch ERP Enterprise passen. Ist ein Parameter in dem Bericht vom Datentypen „Zeichenfolge“ und der logische Datentyp in Comarch ERP Enterprise erlaubt eine leere Zeichenfolge, dann ist der Operator „ist wie“ („like“) bevorzugt zu verwenden. In diesem Fall brauchen Sie keinen Asterisk („*“) als Standardwert in der Berichtsvorlage zu hinterlegen, da Comarch ERP Enterprise eine leere Zeichenfolge durch einen Asterisk automatisch ersetzt.

Wenn in einer WHERE-Bedingung der Gleichheitsoperator („=“) verwendet wird, um einen Parameter mit einer GUID zu vergleichen, dann können keine Datensätze mit dem Wert „Null“ ermittelt werden. Das folgende Beispiel zeigt diese Situation anhand einer fiktiven Berichtsvorlage zur Ausgabe von Vertriebsaufträgen:

Eine Berichtsvorlage zur Ausgabe von Vertriebsaufträgen besitzt den Parameter „SalesRep“. Mithilfe dieses Parameters werden die Umsätze einzelner Vertreter abgefragt. Wird kein Vertreter angegeben, dann sollen die Umsätze sämtlicher Vertreter ausgegeben werden.

In der Berichtsvorlage werden die beiden Datenbank-Tabellen {app_sales_SalesOrder} und {app_general_Partner} mit einem „left outer join“ miteinander verknüpft. Die Bedingung „WHERE {Partner.number} like {?SalesRep}“ liefert beim Wert „*“ alle Vertriebsaufträge mit einem Vertreter zurück. Sollen auch Vertriebsaufträge ohne einen Vertreter ermittelt werden, dann müssen Sie zusätzlich den Wert mit der Funktion „IsNull()“ prüfen. Um zu verhindern, dass bei einem nicht-leeren Wert (z. B. „70030“) auch Vertriebsaufträge ohne Vertreter ermittelt werden, könnte die WHERE-Bedingung wie folgt aussehen:

({?SalesRep}=”*” and IsNull({app_sales_SalesOrder.salesRepresentatives_0_}) or ({app_general_Partner.number} like {?SalesRep})).

6.8               Systemvariablen

Systemvariablen dienen der Übertragung von kontextspezifischen Informationen bei der Ausgabe von Berichten. Sie ermöglichen den Zugriff auf die Informationen, die der ERP-System-Application-Server an den ERP-System-Output-Manager weitergibt.

Die Parameter „SystemVariables“ und „SystemValues“ müssen als Zeichenfolgen im Bericht festgelegt sein und die Übertragung von Mehrfachwerten erlauben (Arrays). Im Parameter „SystemVariables“ werden die Namen der in Comarch ERP Enterprise definierten Systemvariablen übertragen. Im Parameter „SystemValues“ werden die Werte zu den Systemvariablen übertragen. Mit der Funktion „GetValue“ (siehe auch dieses Kapitel: Funktion „GetValue“) können die Werte aus den „SystemValues“ ausgelesen werden. Normalerweise werden diese Werte aber in einem Formelfeld zu Verfügung gestellt.

Die Systemvariablen werden in Kategorien unterteilt. Jede Kategorie wird im Weiteren einzeln aufgelistet und beschrieben. Dabei werden der Name der Systemvariablen, das Formelfeld, in das die Variable durch die Initialisierungen kopiert wird, und eine Beschreibung der Variablen aufgelistet:

  • Systeminformationen
  • Benutzerinformationen
  • Ausgabeinformationen
Systeminformationen

Die folgenden Systeminformationen und vorbelegten Textkonstanten werden von Comarch ERP Enterprise zur Verfügung gestellt und können in Berichten verwendet werden:

Systemvariable Formelfeld Wert
BACKGROUND_RED
BACKGROUND_GREEN
BACKGROUND_BLUE
_Color RGB-Wert für die Hintergrundfarbe aus der Farbe für alternierende Listenzeilen des aktiven Hintergrundthemas.

Wenn in der Anwendung „Berichtsdokumente ausgeben“ das Einfärben des Hintergrunds nicht aktiviert ist, dann wird der RGB-Wert für die Farbe „weiß“ (255, 255, 255) übertragen.

CONFIGURATION_NAME _ConfigurationName Name der aktuellen Konfigurations-Datenbank.
DELIVERY_METHOD   Der Wert gibt den Typ des Ausgabemediums an. Mögliche Werte sind „email“, „fax“, „printer“ und „uri“.
MULTI_SITE_ENABLED _MultiSiteEnabled Ist für die OLTP-Datenbank die Funktion „Multi-Site“ aktiviert, dann enthält die Systemvariable die Zeichenfolge „true“. Ist die Funktion nicht aktiviert, dann enthält sie die Zeichenfolge „false“.
MULTPLE_ORGANIZATIONS _MultipleOrganizations Ist für die OLTP-Datenbank die Funktion „Multi-Site“ oder „Inhaltsbezogene Berechtigungen“ aktiviert, dann können mehrere Organisationen zusätzlich zur Organisation des Mandanten erfasst sein. In diesem Fall enthält die Systemvariable die Zeichenfolge „true“. Ansonsten enthält sie die Zeichenfolge „false“.
NLS_ACTIVATED NLS_ACTIVATED Übersetzter Text „Aktiviert“
NLS_COLON NLS_COLON Übersetzter Text „:“
NLS_DEACTIVATED NLS_DEACTIVATED Übersetzter Text „Deaktiviert“
NLS_MARKED_FOR_DELETION NLS_MARKED_FOR_DELETION Übersetzter Text „Löschkennzeichen gesetzt“
NLS_NO NLS_NO Übersetzter Text „Nein“
NLS_PERCENT NLS_PERCENT Übersetzter Text „%“
NLS_SLASH NLS_SLASH Übersetzter Text „/“
NLS_YES NLS_YES Übersetzter Text „Ja“
OLAP_DESCRIPTION _OlapDescription Bezeichnung der aktuellen OLAP-Datenbank.
OLAP_NAME _OlapName Name der aktuellen OLAP-Datenbank.
OLTP_DESCRIPTION _OltpDescription Bezeichnung der aktuellen OLTP-Datenbank.
OLTP_NAME _OltpName Name der aktuellen OLTP-Datenbank.
ORGANIZATION_GUID _OrganizationGuid Die GUID der Organisation, in deren Kontext die Ausgabe erfolgt.
PAGE _PageCount Übersetzung für das Wort „Seite“ in der jeweiligen Ausgabesprache.
DEL: Die Übersetzungen werden in der StringTable com.cisag.sys.tools.reporting.log.ReportExecuteLogic hinterlegt.
Wenn eine Übersetzung in der Ausgabesprache nicht vorhanden ist, dann wird die Hauptsprache der Repository-Datenbank verwendet.

Das Formelfeld bereitet den Text für die Seitenangabe auf. Das Ergebnis enthält auch den Text für „Seite“. Beispiel: „Seite 1 (10)“

REPORT_DESCRIPTION _ReportDescription Bezeichnung des Berichts in der jeweiligen Ausgabesprache.

Wenn keine Übersetzung hinterlegt ist, dann wird die Bezeichnung in der Originalsprache des Berichts ausgegeben.

REPORT_LANGUAGE _ReportLanguage Kürzel der Ausgabesprache.
REPOSITORY_NAME _RepositoryName Name der aktuellen Repository-Datenbank.
RIGHT_FOOTING _RightFooting Zeichenfolge: Comarch ERP Enterprise

DEL: Die Übersetzungen werden in der StringTable com.cisag.sys.tools.reporting.log.ReportExecuteLogic hinterlegt.

Wenn eine Übersetzung in der Ausgabesprache nicht vorhanden ist, dann wird die Hauptsprache der Repository-Datenbank verwendet.

RIGHT_HEADING _RightHeading Zeichenfolge: Comarch ERP Enterprise

DEL: Der Text wird in der StringTable com.cisag.sys.tools.reporting.log.ReportExecuteLogic hinterlegt.

Wenn eine Übersetzung in der Ausgabesprache nicht vorhanden ist, dann wird die Hauptsprache der Repository-Datenbank verwendet.

SERVER_NAME _ServerName Name des aktuellen ERP-System-Application-Servers.
SYSTEM_NAME _SystemName Name des aktuellen Comarch-ERP-Enterprise-Systems.
USER_EMAIL_ADDRESS _UserEmailAddress E-Mail-Adresse des aktuellen Benutzers.
USER_GUID _UserGuid GUID des aktuellen Benutzers.
USER_NAME _UserName Kürzel des aktuellen Benutzers.
Benutzerinformationen

Die folgenden Benutzerinformationen werden von Comarch ERP Enterprise zur Verfügung gestellt und können in Beleg- und Berichtsvorlagen verwendet werden:

Systemvariable Formelfeld Wert
USER_VALUE1 _Company Name des Mandanten.
USER_VALUE2 _DecimalPrice
_DecimalAmount
_DecimalsQuantity
_DecimalsDuration
Anzahl der Nachkommastellen für die Anzeige von

·         Preisen (PRICE),

·         Beträgen (AMOUNT),

·         Mengen (QUANTITY) und

·         Zeiten (DURATION)

in dem Bericht. Die einzelnen Werte werden durch ein Leerzeichen voneinander getrennt. Z. B. bedeutet der Wert „PRICE 2 AMOUNT 2 QUANTITY 0 DURATION 0“, dass Preise und Beträge mit zwei Nachkommastellen und Mengen und Zeiten ohne Nachkommastellen dargestellt werden sollen.

USER_VALUE3   Wird zurzeit nicht benutzt.
USER_VALUE4   Wird zurzeit nicht benutzt.
USER_VALUE5   Wird zurzeit nicht benutzt.

Die Systemvariablen „USER_VALUE1“ bis „USER_VALUE5“ sind für die Übertragung von betriebswirtschaftlichen Informationen vorgesehen.

Sie können die zurzeit nicht verwendeten Variablen mithilfe der Methode
„initReportUserValues()“ der Klasse com.cisag.app.general.log.ReportExtensionLogicImpl im Rahmen einer Adaptierung anpassen. Beachten Sie aber bitte, dass eine künftige Benutzung im Comarch-ERP-Enterprise-Standard ohne vorherige Ankündigung möglich ist. Daher ist zu empfehlen, zuerst „USER_VALUE5“ für eine evtl. Adaptierung zu benutzen und erst danach „USER_VALUE4“ und „USER_VALUE3“.

Ausgabeinformationen

Bei der Ausgabe auf dem Ausgabemedium „Fax“ können Sie auf Informationen aus dem Ausgabeauftrag auf dem ERP-System-Output-Manager (SOM) zugreifen. Die folgenden Ausgabeinformationen werden von Comarch ERP Enterprise zur Verfügung gestellt und können in Berichten verwendet werden:

Systemvariable Wert
FAX_TRANSMITTING_STATION_ID Entspricht dem Feld „Absenderkennung“ in den Ausgabeneinstellungen für das Ausgabemedium „Fax“.

Diese Variable dient der Anzeige der Faxnummer des Absenders auf dem Fax und auf dem empfangenden Faxgerät. Dadurch kann dem Empfänger eine vom zentralen Faxdienst abweichende Faxnummer vermittelt werden.

FAX_CONTROL_SEQUENCE Entspricht dem Feld „Steuersequenz“ in den Ausgabeneinstellungen für das Ausgabemedium „Fax“.
FAX_RECIPIENT_NUMBER Entspricht dem Feld „Faxnummer“ in den Ausgabeneinstellungen für das Ausgabemedium „Fax“.

In dieser Variablen kann die Faxnummer des Empfängers hinterlegt werden.

FAX_SCHEDULE_ACTION Entspricht dem Feld „Senden“ in den Ausgabeneinstellungen für das Ausgabemedium „Fax“. Mögliche Werte sind:

·         Sofort („now“)

·         Nicht früher als („specific-time“)

·         Zur ermäßigten Zeit („discount-time“)

Diese Variable kann benutzt werden, um den Zeitpunkt des Versendens zu bestimmen.

FAX_SCHEDULE_TIME Entspricht dem Feld „Sendezeitpunkt“ in den Ausgabeneinstellungen für das Ausgabemedium „Fax“.

Diese Variable ist nur bei dem Wert „specific-time“ (Nicht früher als) im Systemvariable „FAX_SCHEDULE_ACTION“ relevant.

FAX_DELIVERY_REPORT_ADDRESS In diesem Feld wird die E-Mail-Adresse des Benutzers übertragen.

Diese Variable kann für eine automatische Sendebestätigung durch den Empfänger benutzt werden.

FAX_RECIPIENT_NAME Wird zurzeit nicht benutzt.
FAX_SENDER_COMPANY Wird zurzeit nicht benutzt.
FAX_SENDER_DEPARTMENT Wird zurzeit nicht benutzt.
FAX_SENDER_NAME Wird zurzeit nicht benutzt.
FAX_BILLING_CODE Wird zurzeit nicht benutzt.

Die Ausgabeinformationen werden nur bei der Ausgabeeinstellung „Fax“ übertragen. Sie sind nur unter Verwendung einer eigenen Faxlösung relevant. Der ERP-System-Output-Manager (SOM) beachtet evtl. Variablen im Beleg- oder Berichtsdokument nicht, da die Informationen bereits im Ausgabeauftrag bekannt sind.

Wenn Sie einen vom SOM abweichenden Faxdienst verwenden, dann müssen Sie die Systemvariablen mit dem Bericht ausgeben. Damit die Ausgabeinformationen für den Empfänger unsichtbar bleiben, können sie z. B. mit weißer Schriftfarbe auf weißem Hintergrund ausgegeben werden. In der Regel ist notwendig, dass diese Informationen als Text (und nicht als Grafik) an den Faxdrucker übermittelt werden. Verwenden Sie daher eine Schriftart, die vom (Fax-)Drucker entsprechend unterstützt wird.

6.9               Sprachunabhängigkeit von Berichten

Um einen Bericht in mehreren Sprachen ausgeben zu können, existieren mehrere Möglichkeiten. Zum einen können Sie entweder sprachabhängige Crystal-Reports-Dateien für jede unterstützte Ausgabesprache erstellen und anschließend in Comarch ERP Enterprise importieren. Zum anderen können Sie aber auch einen einzigen sprachunabhängigen Bericht erstellen, der in jeder unterstützten Sprache ausgegeben werden kann. Die Übersetzungen der sprachabhängigen Textelemente, wie z. B. Feldbeschriftungen und Berichtstitel, werden in Comarch ERP Enterprise hinterlegt und bei der Ausgabe dem Bericht per Parameter zur Verfügung gestellt.

Auch Kombinationen von sprachabhängigen und sprachunabhängigen Berichts-Dateien im gleichen Bericht sind möglich. In diesem Fall müssen alle Berichtsvorlagen dieselben Parameter besitzen. Dies bedeutet, dass Sie auch Parameter bei den sprachabhängigen Berichtsvorlagen für die Übertragung von Übersetzungen hinterlegen müssen. Über diesen Weg lässt sich beispielsweise auch ein Bericht erstellen, der je nach Sprache ein anderes Layout hat, aber dessen Übersetzung dennoch in Comarch ERP Enterprise erfolgen kann.

Die Übersetzungen der Textkonstanten werden analog zu den Systemvariablen übertragen. Sie werden bei der Initialisierung, in dem Formelfeld „_InitializeTextValues“, in Variablen kopiert. Wenn Sie z. B. die Textkonstante „NLS_COLUMN1“ in Comarch ERP Enterprise hinterlegt haben, dann müssen Sie die Formel in „_InitializeTextValues“ für den neuen Text erweitern. Für jeden Text wird ein Formelfeld erstellt, das den übersetzten Text ausgibt. In unserem Beispiel ist es das Formelfeld „NLS_Column1“.

In der Berichtsvorlage „EmptyReport.rpt“ steht Ihnen das Formelfeld „_ReportLanguage“ zur Verfügung. Diese Formel können Sie benutzen, um in einem Unterbericht z. B. Belegtexte nach der jeweiligen Ausgabesprache auszuwählen.

6.10          Mehrsprachige Berichte

Für einige Berichtsdokumente, beispielsweise zur Verwendung in Ländern mit mehreren Amtssprachen, kann erforderlich sein, unterschiedliche Sprachen innerhalb eines Berichts zu verwenden.

Um einzelne mehrsprachige String-Attribute oder Valueset-Einträge in einer anderen Sprache auszugeben, wird die virtuelle Funktion „pgm_FieldTranslationVirtualFunction“ bereitgestellt.

Die statischen Texte in einem Bericht (Konstanten) können über die virtuelle Tabelle „pgm_ReportTextTranslationVirtualTable“ abgerufen werden. Diese virtuelle Tabelle sollte in einem Unterbericht verwendet werden. Die Konstanten in der gewünschten Sprache können mithilfe einer shared-Variable in Crystal Reports für den Bericht bereitgestellt werden.

Einige virtuelle Funktionen wurden um den optionalen Eingabeparameter „in_language“ erweitert, um den Inhalt in einer anderen Sprache als der Berichtsausgabesprache auszugeben.

6.11          Berichtsübergreifende Textbausteine

Textkonstanten bieten die Möglichkeit unformatierte Texte unabhängig von der Berichts-Datei in Comarch ERP Enterprise zu erfassen und zu übersetzen. Sie sind berichtsspezifisch und werden mit dem jeweiligen Business Object „Bericht“ exportiert und importiert bzw. dem Entwicklungsobjekt „Bericht“ in Form von Softwareaktualisierungen weitergegeben. Sie eignen sich vor allem für kurze Texte, wie beispielsweise Spaltenüberschriften, die in jedem Bericht anders aussehen.

In einigen Fällen ist zusätzlich wünschenswert, eine Menge von formatierten Standardtexten bereitzuhalten, um diese bei der Ausgabe von mehreren Berichten gleichermaßen zu verwenden. Solche Texte können in der Anwendung „Textbausteine“ erfasst und in Berichten verwendet werden. Die Textbausteine sind organisations-unabhängige Daten auf der OLTP-Datenbank und werden im Business Object „com.cisag.app.general.obj.Text“ gespeichert. Der Schlüssel des Business Objects umfasst eine identifizierende Zeichenkette und die GUID der Sprache, für die der Textbaustein erfasst wurde. Im Datenteil stellt das Business Object eine übersetzbare Bezeichnung (Attribut „description“) und einen formatierbaren HTML-Text (Attribut „text“) zur Verfügung.

Da die Textbausteine vollkommen unabhängig von den Berichten, die sie verwenden, existieren, werde sie auch beim Import bzw. Export von Berichten nicht weitergegeben. Von der Verwendung von Textbausteinen in einem Entwicklungsobjekt „Bericht“ sollte abgesehen werden, da nicht gewährleistet werden kann, das die verwendeten Textkonstanten auf allen OLTP-Datenbanken erfasst sind, auf denen der Bericht später ausgeführt wird. Das Fehlen der verwendeten Textbausteine bedeutet in jedem Fall einen Datenbankzugriff.

Das Einbinden benötigt folgende Komponenten

  • Globale Variablen, die die übersetzten, formatierten Texte aufnehmen. Jeweils eine eigene Variable „TEXT_nnn“ für einen Text.
  • Einen Unterbericht „Texts“ auf der Ebene des Berichtskopfes, der die Daten zu allen benötigten Textbausteinen mit einem Zugriff auswählt. Hierbei wird die Ausgabesprache aus der Systemvariablen „ReportLanguage“ verwendet. Mithilfe eines Joins zwischen den Business Objects „com.cisag.app.general.obj.Language“ und „com.cisag.appp.general.obj.Text“ kann die Menge der Textbausteine in der richtigen Sprache ausgewählt werden. Dadurch, dass der Unterbericht auf der Ebene des Berichtskopfs eingefügt wird, wird nur eine Datenbank-Anfrage durchgeführt.
  • Eine Schleife, in der jeder globalen Variablen „TEXT_nnn“ der Wert des Attributes „Text.text“ für die zugehörige Zeile zugewiesen wird.
  • Textfelder mit der Interpretation „HTML“, die die Inhalte der globalen Variablen formatiert darstellen. Diese können sowohl im Kopf als auch im Detail oder im Fußbereich verwendet werden.

Die Vorgehensweise für das Einbinden von Textbausteinen in eine Berichts-Datei besteht aus folgenden Schritten:

  1. Öffnen Sie „Crystal Reports“.
  2. Öffnen Sie die Berichts-Datei, die Sie anpassen möchten.
  3. Wählen Sie die Ansicht „Entwurf“.
  4. Öffnen Sie den „Berichts-Assistent“ für den Berichtskopf und fügen Sie einen weiteren Berichtskopf hinzu.
  5. Wählen Sie im Menü den Eintrag „Einfügen/Unterbericht“.
    Erstellen einen neuen Unterbericht mit dem Namen „Texts“ mithilfe des Berichts-Assistenten. Dazu müssen Sie zunächst wie üblich eine Verbindung zur Datenquelle „Semiramis-OLTP“ herstellen.

    • Die Hierarchie der vorhandenen Datenquellen erscheint.
  6. Wählen Sie im Katalog „CISAG / ENTITY“ die beiden Business Objects „app_general_Text“ (Textbaustein) und „app_general_Language“ (Sprache) aus und fügen Sie diese zu den ausgewählten Tabellen hinzu.
  7. Drücken Sie auf den Button „Weiter“. Prüfen und korrigieren Sie gegebenenfalls die entstehenden Verknüpfungen zwischen „app_general_Text“ und „app_general_Language“. Diese Tabellen müssen mit einem „LEFT OUTER JOIN“ mithilfe der Sprache verknüpft sein:
    language_ –> app_general_Language.guid_
    Mit dem Erfassen der Beziehungen ist der Unterbericht nun fertig.
  8. Schieben Sie diesen Unterbericht in den zuvor hinzugefügten weiteren Berichtskopf.
  9. Formatieren Sie den Unterbericht. Hierzu positionieren Sie den Mauszeiger im Berichts-Explorer auf den Unterbericht und wählen im Kontextmenü den Eintrag „Unterbericht formatieren“. Danach wechseln Sie zu dem Karteireiter „Rahmen“ und wählen überall die Linienart „Keine“. Danach wechseln Sie zum Karteireiter „Unterbericht“ und legen fest, dass leere Unterberichte unterdrückt werden sollen.

Hinweis:

Der Unterbericht selbst darf weder unterdrückt noch versteckt formatiert sein, da er sonst nicht ausgeführt wird.

  1. Übergeben Sie dem Unterbericht die Sprache, in welcher der Hauptbericht ausgeben wird. Hierzu positionieren Sie den Mausanzeiger auf den Unterbericht, wählen Sie im Kontextmenü den Eintrag „Unterberichtsverknüpfungen ändern“. Markieren Sie das Formelfeld „_ReportLanguage“ (in manchen Berichten heißt das Feld „ReportLanguage“). Orden Sie dem Feld das Attribut „soCode“ der Tabelle „app_general_Language“ aus dem Unterbericht zu. Bestätigen die Auswahl mit dem OK-Button. Als Ergebnis entstehen ein Parameterfeld und die Auswahlformel im Unterbericht. Die Auswahlformel wird wie folgt aussehen:
    {app_general_Language.isoCode} = {?Pm-@ReportLanguage}
  2. Navigieren Sie zu dem Unterbericht und passen Sie den Unterbericht an. Er darf nur einen einzigen Berichtskopf und einen einzigen Berichtsfuß besitzen. Der Detailbereich darf nicht aufgeteilt sein. Durch den Assistenten vorbelegte Felder müssen entfernt werden. Alle Unterberichtsbereiche außer den Details müssen unterdrückt werden. Sie unterdrücken die Bereiche, indem Sie im Kontextmenü den Eintrag „Unterdrücken“ wählen. Der Detailbereich darf weder unterdrückt noch versteckt werden.
  3. Schränken Sie die Menge der zu verwendenden Textbausteine ein, indem Sie entweder mithilfe des Auswahl-Assistenten oder mithilfe der Formel für die Datensatzauswahl die relevanten Business Keys über das Attribut „app_general_Text.code“ vorgeben.

Beispiel 1:

{app_general_Language.isoCode} = {?Pm-@ReportLanguage} and

{app_general_Text.code} = “100” or {app_general_Text.code} = “200” )

Beispiel 2:

{app_general_Language.isoCode} = {?Pm-@ReportLanguage} and

{app_general_Text.code} in [“100”, “200”]

 

  1. Erfassen Sie im Unterbericht ein Formelfeld mit dem Namen „ResolveTexts“ zum Auflösen der Werte je nach Textbaustein. Die Formel muss die globalen Variablen zu Übergabe der Texte an den Hauptbericht und die Auswahl-Formel zum Auflösen je nach Textbaustein enthalten. Die Konstanten für die Identifikationen der Textbausteine, die bereits in der Auswahlformel verwenden wurden, werden auch in diesem Fall wieder verwendet:

Beispiel:

shared stringVar strText100;

shared stringVar strText200;

local stringVar strTextCode;

strTextCode:={app_general_Text.code};

 

if (strTextCode=”100″) then

(strText100:={app_general_Text.text};)

 

else if (strTextCode=”200″) then

(strText200:={app_general_Text.text};)

 

  1. Schieben Sie das Formelfeld „ResolveTexts“ in den Detailbereich des Unterberichtes.

Hinweis:

Wenn Sie das Formelfeld in einem Berichtskopf positionieren würden, dann würde nur einer der Texte aufgelöst.

  1. Formatieren Sie das Formelfeld als „unterdrückt“, indem Sie auf dem Feld den „Format-Editor“ aufrufen und unter dem Karteireiter „Allgemein“ das Kennzeichen „Unterdrücken“ aktivieren.
  2. Wechseln Sie zum Hauptbericht.
  3. Erfassen Sie die Formelfelder im Hauptbericht, die zur Anzeige der aufgelösten Textbausteine im Unterbericht dienen werden.

Beispiel: Für TEXT_100:

shared stringVar strText100;

strText100;

 

Beispiel: Für TEXT_200

shared stringVar strText200;

strText200;

Hinweis:

Beachten Sie, dass die Deklarationen der globalen „shared“-Variablen in dieser Formel den Definitionen der Variablen an den zuvor genannten Stellen entsprechen müssen.

  1. Schieben Sie die Formelfelder in die gewünschten Positionen im Bericht.
  2. Formatieren Sie die Formelfelder. Hierzu passen Sie die Größe der Felder sowie ihre Positionen an und geben unter dem Karteireiter „Absatz“ als Textinterpretation „HTML-Text“ an.

6.12          Unterbericht „Formatting“

Für die Darstellung von Zeit- und Nummernwerten gemäß den Benutzereinstellungen existiert eine virtuelle Funktion mit dem Namen „pgm_Formats“. Diese virtuelle Funktion besitzt folgende Attribute:

Attribute Bedeutung
in_userName Benutzername
in_userGuid_ GUID des Benutzers
numberDecimalSeparator Dezimaltrennzeichen
numberGroupingSeparator Gruppentrennzeichen
currencyDecimalSeparator Dezimaltrennzeichen für Währungen
currencyGroupingSeparator Gruppentrennzeichen für Währungen
currentDate Aktuelles Datum
dateSeparator Datumstrennzeichen
dateOrder Datumsformat
timeSeparator Zeittrennzeichen

Hinweis:

Die virtuelle Tabelle „pgm_FORMAT“ hat den Status „Abgelehnt“ und wurde durch die virtuelle Tabelle „pgm_Formats“ ersetzt.

6.13          Zahlen formatieren

In Comarch ERP Enterprise werden die Informationen zum Formatieren von Zahlen in der Anwendung „Customizing“ eingestellt. Die Berichte, die für Comarch ERP Enterprise erstellt werden, sollten alle diese Formatierung übernehmen, damit eine Änderung dieser Einstellungen auch in den Berichten wirksam werden, ohne diese anpassen zu müssen. Die Zahlen werden mit der Crystal-Reports-Funktion „cStr“ („toText“) formatiert. Diese benötigt den Datenbankwert, die Anzahl der Nachkommastellen, das Tausendertrennzeichen und das Dezimaltrennzeichen. Die Formel würde in etwa so aussehen, wobei „Tabelle.spalte“ durch die konkrete Tabellenspalte ersetzt werden muss:

shared stringVar strDecimalSeparator;
shared stringVar strGroupingSeparator;

cStr({Tabelle.spalte}, {@_DecimalsQuantity}, strGroupingSeparator, strDecimalSeparator);

Das Formelfeld „_DecimalsQuantity” wird zum Formatieren von Mengen verwendet. Für Werte, Preise oder Zeiten müssen Sie die entsprechenden Formelfelder „_DecimalsAmount“, „_DecimalsDuration“ oder „_DecimalsPrice“ verwenden.

Hinweis:
Wenn Sie die Zahlen abhängig von den Einstellungen in Comarch ERP Enterprise formatieren, müssen Sie die horizontale Ausrichtung des Feldes auf „Rechts“ stellen, damit die Zahlen rechtsbündig ausgegeben werden.

6.14          Zeit und Datum formatieren

Spalten vom Typ „CisAttributeDate“ und „CisObjectDate“ werden immer bezüglich der Zeitzone in der Datenbank aufbereitet. Wie in Comarch ERP Enterprise muss bei einer von der Zeitzone der Datenquelle abweichenden Zeitzone der Name der Zeitzone angezeigt werden. Die Zeitzone wird vom ERP-System-ODBC-Treiber in einer virtuellen Spalte, die mit „_timezone“ endet und davor wie das Attribut heißt, ausgegeben. Dieses Attribut muss in einem separaten Feld ausgegeben werden. Wenn die Zeitzone nicht abweicht, ist diese Spalte leer.

Die Felder mit Zeit und Datum müssen manuell formatiert werden. Die aufgeführten Variablen werden im Unterbericht „Formatting“ gefüllt. Die Formatierung muss für jedes Feld einzeln durchgeführt werden. Nachfolgend werden die Einstellungen im Crystal-Reports-Dialog-Fenster beschrieben.

Format-Editor: Zeit und Datum

Unter dem Karteireiter „Datum“ können Formeln an verschiedenen Stellen für die Darstellung von Daten gemäß den Benutzereinstellungen hinterlegt werden.

  • Für den Bereich „Reihenfolge“ ist folgende Formel vorgesehen:

shared numberVar numDateOrder;

numDateOrder;

  • Für den Bereich „Trennzeichen“ sind folgende Formeln für die Datumstrennzeichen vorgesehen:

shared stringVar strDateSeparator;

strDateSeparator;

Unter dem Karteireiter „Zeit“ können Formeln an verschiedenen Stellen für die Darstellung von Zeiten gemäß den Benutzereinstellungen hinterlegt werden:

  • Für den unteren Bereich ist jeweils die folgende Formel für das Zeittrennzeichen vorgesehen:

shared stringVar strTimeSeparator;

strTimeSeparator;

7                     Anmerkungen

7.1               Verwenden von Unterberichten

Hinweis:
Unterberichte sollten möglichst vermieden werden, da sie u. U. zu erheblich längeren Ausgabezeiten führen können.

Ein Unterbericht verwendet per Definition die gleiche symbolische Datenquelle wie der Hauptbericht. Der ERP-System-Output-Manager (SOM) ersetzt automatisch eine evtl. vom Hauptbericht abweichende Datenquelle durch die Datenquelle des Hauptberichts.

Damit Sie eine Berichtsvorlage erfolgreich in Comarch ERP Enterprise importieren können, müssen alle Unterberichte zusammen mit dem Hauptbericht gespeichert werden. Die von Crystal Reports angebotene Möglichkeit, einen Unterbericht als eine eigenständige Crystal-Reports-Datei zu speichern, wird von Comarch ERP Enterprise nicht unterstützt. Die Parameterfelder des Unterberichts müssen mit den Berichtsfeldern des Hauptberichts verbunden sein.

Wenn Sie Parameter für den Unterbericht festgelegt haben, deren Werte nicht aus dem Hauptbericht übernommen werden, dann erscheinen Eingabefelder für diese Parameter in der Anwendung „Berichtsdokumente ausgeben“.

Beachten Sie, dass ein Unterbericht nicht automatisch auf die Werte der Berichtsparameter zugreifen kann. Möchten Sie in einem Unterbericht eine in Comarch ERP Enterprise hinterlegte Übersetzung ausgeben, dann können Sie z. B. den Wert der entsprechenden Textkonstanten in einem unsichtbaren Feld im Hauptbericht vor dem Aufruf des Unterberichts ausgeben. Im Unterbericht erfassen Sie eine neue Formel, die den Wert der Variablen ausgibt:

shared stringVar strDeleted;

7.2               Fehlersuche und Auswertung

7.2.1          Leistungsmonitore

Bevor Sie einen Bericht für den Einsatz in einem Produktivsystem freigeben, sollten Sie die durch den Bericht verursachten Datenbank-Zugriffe überprüfen. Eine Verknüpfung von zwei Tabellen über ein nicht indexiertes Attribut kann z. B. unnötige Last auf dem verarbeitenden Server verursachen. In ungünstigen Fällen können sich dadurch sogar die Antwortzeiten für andere Benutzer auf demselben System erheblich verschlechtern.

In Comarch ERP Enterprise steht Ihnen die Anwendung „Leistungsmonitore“ zur Verfügung. Mithilfe dieser Anwendung können Sie die ODBC-Zugriffe und die ODBC-Server­zugriffe eines bestimmten Berichts messen. Weitere Informationen finden Sie in der Dokumentation „Leistungsmonitore“.

7.2.2          ODBC-Datenquellen

Beim Erfassen einer Datenquelle (DSN) können Sie die Ausgabe von zusätzlichen Informationen auf der Konsole in Comarch ERP Enterprise steuern, indem Sie eine Protokollierungsstufe („log level“) angeben. Die Angabe wird der URL als ein durch ein kaufmännisches „und“ (Ampersand) getrennter Parameter hinzugefügt.

Beispiel:

Für die Fehlersuche relevante Protokollierungsstufen sind 3 und 4. Protokollierungsstufe 3 gibt den Namen der aufgerufenen Methoden sowie die übertragenen Feldnamen auf die Konsole aus. Bei Protokollierungsstufe 4 werden noch weitere Angaben ausgegeben.

Weitere Informationen finden Sie in der Dokumentation „ODBC-Datenquellen“.

7.3               Leistung der Berichte überprüfen

Die folgenden Hinweise dienen zur Optimierung der Leistung Ihrer Berichte.

7.3.1          RIGHT OUTER JOIN vermeiden

Verwenden Sie bei der Verknüpfung der Tabellen nicht den Verknüpfungstyp „Rechts-Inklusion“ (RIGHT OUTER JOIN), da dieser den Zeitbedarf der SQL-Abfrage negativ beeinflussen kann.

In Belegdokumenten besteht in der Regel eine Haupttabelle (Business Entity, das den Beleg repräsentiert). Diese Haupttabelle wird auf den auszugebenden Beleg eingeschränkt. Daneben bestehen regelmäßig eine Reihe weiterer Tabellen (Nachschlagetabellen), die entweder mithilfe „Innere Verknüpfung“ (INNER JOIN) oder „Links-Inklusion“ (LEFT OUTER JOIN) zu verknüpfen sind.

Eine „Rechts-Inklusion“ würde jene Daten liefern, für die es sowohl in der Haupttabelle als auch in der verknüpften Tabelle passende Datensätze gibt und zusätzlich die, für die nur in der verknüpften Tabelle passende Datensätze enthalten sind. Letztere werden aber durch die Einschränkung auf den auszugebenden Beleg ausgeschlossen, sodass die Ergebnismenge der entspricht, die bei Verwendung einer „inneren Verknüpfung“ zustande kommt.

Das Verwenden der „Rechts-Inklusion“ verhindert bei der Ausgabe der Belegdokumente das effektive Ausführen der SQL-Abfrage und sollte mangels Einfluss auf die Ergebnismenge in der oben genannten Konstellation dringend vermieden werden.

In Crystal Reports werden Verknüpfungen mithilfe des Datenbank-Assistenten visuell modelliert. Die Verbindungslinien zwischen den Tabellen haben beim Typ „Links-Inklusion“ und „Rechts-Inklusion“ eine Pfeilspitze. Diese zeigt bei beiden Typen in die gleiche Richtung von der Haupttabelle zur Nachschlagetabelle und wird somit vom Benutzer unter Umständen falsch interpretiert. Überprüfen Sie daher direkt die auszuführende SQL-Abfrage über das Menü „Datenbank/SQL-Abfrage anzeigen…“

Die Abfrage

SELECT a:Nummer, v:Name FROM Auftrag a RIGHT OUTER JOIN Vertreter v ON v:GUID = a:Vertreter WHERE a:Nummer = „1000“ (FALSCH!)

liefert den Auftrag mit der Nummer „1000“, falls diesem ein Vertreter zugeordnet ist. Diese Abfrage ist verlustfrei so zu ändern, dass eine innere Verknüpfung verwendet wird, da die Einschränkung der Auftragsnummer verhindert, dass im Kreuzprodukt Vertreter erscheinen, die keinem Auftrag zugeordnet sind:

SELECT a:Nummer, v:Name FROM Auftrag a INNER JOIN Vertreter v ON v:GUID = a:Vertreter WHERE a:Nummer = „1000“ (RICHTIG)

7.3.2          Unterberichte vermeiden

Unterberichte bzw. Aufrufe von Unterberichten sollten möglichst vermieden werden, da sie zu erheblich längeren Ausgabezeiten führen können. Jeder Aufruf eines Unterberichtes innerhalb eines Belegdokumentes führt zu einer eigenständigen SQL-Abfrage über den ERP-System-ODBC-Treiber mit entsprechender Latenzzeit für die Verbindung zwischen Crystal Reports und Comarch ERP Enterprise sowie der Verbindung zwischen Comarch ERP Enterprise und der Datenbank.

7.3.3          OQL-Views vermeiden

Verzichten Sie in Belegdokumenten auf die Verwendung von OQL-Views zur Reduzierung der Spaltenanzahl.

7.3.4          DISTINCT vermeiden

In OQL-Abfragen und OQL-Views sollten Sie das Schlüsselwort DISTINCT wenn möglich vermeiden. Das Schlüsselwort DISTINCT bewirkt, dass gleiche Werte, die mehrfach in einer Tabelle bei der Auswahl von Attributen vorkommen, in der Ergebnisliste nur einmal aufgeführt werden. Häufig kann auf DISTINCT verzichtet werden, da aufgrund der einbezogenen Tabellen und ihrer Beziehungen untereinander keine doppelten Einträge in der Ergebnismenge vorkommen können.

Das Schlüsselwort DISTINCT ist im folgenden Befehl beispielsweise unnötig, da die Ergebnismenge den Primärschlüssel a:GUID der Tabelle „Auftrag“ enthält und bereits damit doppelte Einträge ausgeschlossen sind:

SELECT DISTINCT a:GUID, a:Auftraggeber FROM Auftrag a (FALSCH!)

7.3.5          FULL-TABLE-SCAN vermeiden

Das Durchsuchen der gesamten Tabelle in einer Datenbank wird als „FULL-TABLE-SCAN“ bezeichnet. Ein FULL-TABLE-SCAN wird immer dann ausgelöst, wenn auf Tabellen zugegriffen wird, ohne deren Indizes zu berücksichtigen. Bei großen Tabellen führt dies zu extrem langen Ausführungszeiten der Abfrage.

Problematisch sind „FULL-TABLE-SCANs“ insbesondere deshalb, weil sie bei geringen Datenmengen häufig unbemerkt bleiben, später aber im Produktivsystem mit zunehmenden Datenmengen zu linear wachsenden Ausführungszeiten führen.

Zur Vermeidung von „FULL-TABLE-SCANs“ sollte daher für komplexere Abfragen der Ausführungsplan des Datenbank-Management-Systems (DBMS) analysiert werden. Die Abfrage muss dann gegebenenfalls geändert werden, sodass die bereits im Standard vorhandenen Indizes Verwendung finden. Sollten für Ihre spezifische Abfrage keine passenden Indizes existieren, dann können Sie auch eigene Indizes erfassen. Mithilfe der Anwendung „Individuelle Indizes“ können Sie diese komfortabel führen.

8                     Bekannte Einschränkungen

8.1               Maximale Anzahl von Abschnitten

Pro Abschnitttyp (Berichtskopf, Details, etc.) dürfen jeweils nur bis zu 40 Abschnitte (Sections) festgelegt werden, andernfalls können Fehler bei der Ausgabe über den ERP-System-Output-Manager (SOM) auftreten.

8.2               Doppelte Zeilen bei der Verwendung von „TotalPageCount“

Wenn man das Feld „TotalPageCount“ in einer „String“-Formel verwendet, dann können in komplexen Berichten doppelte Zeilen entstehen.

Nutzt man das Feld hingegen als eigenes Feld, tritt dieser Fehler in der Regel nicht mehr auf.

 

Czy ten artykuł był pomocny?