Table of Contents

Übertragung von Berichten im ELO Connector

Der SIEVERS ELO Connector überträgt Berichte aus Business Central nach ELO. Hierbei gibt es drei Möglichkeiten: Druck per Vorschau, Druck und E-Mail.

Es gibt eine Reihe von Berichten, die standardmäßig vom ELO Connector unterstützt werden. Die Liste dieser finden Sie im folgenden Abschnitt Standardmäßig verwendete Berichte. Darüber hinaus können aber auch individuell ausgewählte Berichte übertragen werden. Dabei gibt es zwei Möglichkeiten: Individuelle Berichte über die Berichtsauswahlen oder ohne Berichtsauswahlen.

Standardmäßig verwendete Berichte oder individuelle Berichte über die Berichtsauswahl können archiviert werden, sofern das BC Standardevent OnAfterPrintDocument während des Drucks ausgeführt wird. Gleiches gilt bei E-Mails mit dem Event OnAfterSendEmailDirectly. Die genannten Events werden vom ELO Connector genutzt, um die Archivierung auszuführen.

Eine Übersicht über die Übertragungsmöglichkeiten und erforderliche Schritte finden Sie unter Was muss ich tun, um Berichte mit dem ELO Connector zu übertragen?.

Individuelle Berichte ohne Berichtsauswahl benötigen geringen Entwicklungsaufwand.

Hinweis

Bitte achten Sie darauf, dass die Datenübergabe an die Berichte korrekt und vollständig erfolgt. Falls es zu Differenzen zwischen den ursprünglichen und den übergebenen Daten kommt, gibt es einen Fehler.

Was muss ich tun, um Berichte mit dem ELO Connector zu übertragen?

Je nachdem, welche Anforderungen Sie haben und welche Business Central-Version Sie benutzen, sind unterschiedliche Schritte erforderlich, um die Berichte zu übertragen. Zur Übersicht dient der folgende Baum:

Der Standardfall ist die Einrichtung über die Berichtseinrichtung, wobei sich die Umsetzung je nach BC-Version unterscheidet. Mit der Report Extension können neuere BC Versionen ab BC 18 mit geringem Programmieraufwand um die Archivierung von einem oder auch mehreren Datensätzen ergänzt werden. Eine Ergänzung mit individuellem Code innerhalb der Berichte muss für die BC Versionen BC 14 bis BC 17 in Kauf genommen werden. Es können ein oder mehrere Belege archiviert werden. Eine Stapelarchivierung ist somit möglich.

In diesem Entscheidungsbaum gibt es vier mögliche Ergebnisse:

Standardmäßig verwendete Berichte

Folgende Berichte stehen dem ELO Connector standardmäßig zur Verfügung. Zum Thema Archivierung lesen Sie bitte den vorherigen Abschnitt Übertragung von Berichten im ELO Connector.

  • Einkauf
    • Anfrage (angepasster Bericht i. V. m. Codeunit "Purch.Header-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Rahmenbestellung (angepasster Bericht i. V. m. Codeunit "Purch.Header-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Bestellung (angepasster Bericht i. V. m. Codeunit "Purch.Header-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
      • hier liegt dem ELO Connector ein individueller Report mit der ID 5508482 bei, der in der Berichtsauswahl eingetragen werden kann. Dieser muss über die nachfolgende Beschreibung der individuellen Reports in der SIEVERS ELO Reporteinrichtung eingerichtet werden.
    • gebuchte Rechnung (angepasster Bericht i. V. m. Codeunit "Purch. Inv.-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Reklamation (angepasster Bericht i. V. m. Codeunit "Purch.Header-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • gebuchte Gutschrift (angepasster Bericht i. V. m. Codeunit "PurchCrMemo-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • gebuchte Lieferung (angepasster Bericht i. V. m. Codeunit "Purch.Rcpt.-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Rücklieferung (angepasster Bericht i. V. m. Codeunit "Return Shipment - Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
  • Verkauf
    • Angebot (angepasster Bericht i. V. m. Codeunit "Sales-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Rahmenauftrag (angepasster Bericht i. V. m. Codeunit "Sales-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Auftragsbestätigung (angepasster Bericht i. V. m. Codeunit "Sales-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • gebuchte Rechnung (angepasster Bericht i. V. m. Codeunit "Sales Inv.-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Reklamationsbestätigung (angepasster Bericht i. V. m. Codeunit "Sales-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • gebuchte Gutschrift (angepasster Bericht i. V. m. Codeunit "Sales Cr. Memo-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • gebuchte Lieferung (angepasster Bericht i. V. m. Codeunit "Sales Shpt.-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Rücksendung (angepasster Bericht i. V. m. Codeunit "Return Receipt - Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Proforma Rechnung (angepasster Bericht i. V. m. Codeunit "Sales-Printed" zum Hochzählen des Anzahl gedruckt Zählers im Beleg)
    • Mahnung (ab BC 20 angepasster Bericht i. V. m. Codeunit "Reminder-Issue" und Event "OnIncrNoPrintedOnBeforeModify")

Individuelle Berichte über die Berichtsauswahlen

Zum Thema Archivierung lesen Sie bitte den Abschnitt. Zur Archivierung von individuellen Berichten über die Berichtsauswahlen ist die folgende Einrichtung in der ELO Berichtseinrichtung neben der Einrichtung in den Berichtsauswahlen notwendig:

Achtung

Mit dieser Einrichtung ist nur die Übertragung von einzelnen Dokumenten möglich. Für die Stapelarchivierung lesen Sie bitte Beispieleinrichtung Berichte ohne Berichtsauswahl, bei Druckvorauschau oder für Stapelverarbeitung.

BC 14 bis 19

Wenn ein Bericht über die Berichtsauswahl eingerichtet wurde und das BC Standard Event OnAfterPrintDocumentsWithCheckGUIYesNoCommon ausgeführt wird, kann dieser Bericht archiviert werden, da dies das Event ist, welches der ELO Connector verwendet, um die im oberen Abschnitt genannten Berichte standardmäßig zu archivieren. Gleiches gilt bei E-Mails. Wenn hier das Event OnAfterSendEmailDirectly durchlaufen wird kann ein Bericht über den ELO Connector archiviert werden.

Achtung

Mit dieser Einrichtung ist nur die Übertragung von einzelnen Dokumenten möglich. Für die Stapelarchivierung lesen Sie bitte Beispieleinrichtung Berichte ohne Berichtsauswahl, bei Druckvorauschau oder für Stapelverarbeitung.

Hierzu ist dann folgende Einrichtung in der ELO Berichtseinrichtung neben der Einrichtung in den Berichtsauswahlen notwendig:

Wählen Sie in unter Verwendung die Option Individual aus. Infolgedessen wird die Tabelle der Berichtseinrichtung um fünf Felder erweitert:

  • Individuelle Belegart: Wird auf der ELO Seite zur Einsortierung in die passende Ordnerstruktur verwendet
  • Individuelle Herkunfts-ID
  • Individuelle Herkunftstabellenname: Hinterlegung der Basistabelle des Berichts (Bspw. bei einer Auftragsbestätigung die Tabelle 36)
  • Individuelle Feld ID für Belegnr. Gibt das Feld an in der die Belegnr. zu finden ist. Diese wird zur Archivierung benötigt.
  • Individueller Feldname

Ob die Steuerung bei einer Druckvorschau eines individuellen Berichts auch verfügbar ist muss im Einzelfall geprüft und ggf. durch eine zusätzliche Programmierung umgesetzt werden. Der Standard verwendet in einigen Belegen spezielle Codeunits, um die Anzahl gedruckt hochzuzählen. Das macht sich der ELO Connector in den im oberen Abschnitt standardmäßig unterstützten Berichten zu nutze und kann so erkennen, ob eine Vorschau ausgeführt wird oder nicht. Das ist allerdings nicht bei jedem Bericht der Fall, so dass es hier vor dem Eintragen eines Berichts einer genauen Prüfung bedarf.

Hinweis

Bei der Archivierung von individuellen Berichten wird der Anzahl gedruckt Zähler des Belegs um 2 erhöht. Dies liegt daran, dass der Bericht zuerst für den Druck und anschließend zur PDF-Erzeugung über Report.SaveAsPDF erneut ausgeführt wird. Dieses Verhalten ist by design. Wenn eine Erhöhung um 2 nicht gewünscht ist, muss der Zähler im entsprechenden Event Subscriber korrigiert werden. Hierzu stehen die Events OnAfterPrintDocumentAndBeforeSaveELOPdfToArchive und OnBeforeProcessInsertArchivedReportForPrint aus dem Events-Kapitel zur Verfügung.

Sobald diese Einrichtung vollständig ist und ein Report gedruckt oder per E-Mail versendet wird und eines der beiden o.g. Events durchlaufen wird, wird geprüft, ob es eine Einrichtung für diesen Bericht gibt. Wenn ja, dann werden die Pflichtfelder geprüft und der Bericht archiviert.

Eine SIEVERS ELO Berichtseinrichtung mit standardmäßig und individuell eingerichteten Berichten könnte beispielsweise so aussehen:

SIEVERS ELO Berichtseinrichtung

BC 20+ Vereinfachte Berichtsarchivierung

Achtung

Wenn Sie in Ihren System bereits die individuelle Berichtsverarbeitung aus Kapitel BC 14 - 19 umgesetzt haben, darf die Anleitung in diesem Abschnitt nicht durchgeführt werden!

Achtung

Mit dieser Einrichtung ist nur die Übertragung von einzelnen Dokumenten möglich. Für die Stapelarchivierung lesen Sie bitte Beispieleinrichtung Berichte ohne Berichtsauswahl, bei Druckvorauschau oder für Stapelverarbeitung.

Ab BC 20 gibt es das im Standard verfügbare Event OnAfterDocumentReady. Dieses ist pro Berichtseinrichtungszeile deaktiviert, da es bei gleichzeitiger Ausführung mit der Lösung in Kapitel BC 14 - 19 zu einer Endlosschleife kommt.

Sie können das Event pro Zeile mit dem Schalter OnAfterDocumentReady Event verwenden in der Berichtseinrichtung aktivieren. Da das Feld standardmäßig ausgeblendet ist, muss es zunächst über Spalten anpassen in der Berichtseinrichtung eingeblendet werden.

Es muss keine weitere Anpassung erfolgen, um einen Eintrag in den archivierten Berichten zu erhalten.

Es kann sogar, so wie hier gezeigt, ein Standardbericht verwendet werden, der eigentlich über die Events der Berichtsauswahl archiviert wird.

Allerdings können hierdurch keine Stapelarchivierungen durchgeführt werden, da durch die mögliche Filterung in Business Central immer nur ein Datensatz übergeben wird. Weitere Datensätze können technisch bedingt nicht ermittelt werden.

Individuelle Berichte ohne Berichtsauswahl

Individuelle Berichte, die keine Berichtsauswahl enthalten und im Code über Report.Run oder Report.RunModal gestartet werden, können durch ein zusätzliches Event archiviert werden, das im jeweiligen Bericht ergänzt werden muss. Für diese Anforderung ist ein individueller Entwicklungsaufwand erforderlich, der jedoch auf ein Minimum reduziert werden konnte.

Konkret muss hierfür eine zusätzliche Codezeile im OnPostReportTrigger des Berichts eingefügt werden. Diese Zeile löst ein spezielles Event aus, das den Archivierungsprozess im ELO Connector anstößt.

Hintergrund: Wenn ein Report z.B. aus einer Page mittels RunModal aufgerufen wird, steht dieser für sich allein. Es werden in der Regel keine weiteren Events ausgeführt und es ist auch nicht bekannt, ob es eine Vorschau ist oder nicht.

Beispieleinrichtung Berichte ohne Berichtsauswahl, bei Druckvorauschau oder für Stapelverarbeitung

Hier wird anhand von Beispielanforderungen erklärt, was bei individuellen Berichten ohne Berichtsauswahl zu tun ist, damit sie über den ELO Connector archiviert werden können.

Folgende Reports sollen archiviert werden:

  • Verkaufsrechnung Berichts ID 1306: Dieser Bericht kann über Standardberichtseinrichtung des ELO Connectors archiviert werden. Es bedarf keiner weiteren Anpassung.

  • Verkaufsaufträge (Auftragsbestätigung) Berichts ID 205: Dieser Bericht kann über Standardberichtseinrichtung des ELO Connectors archiviert werden. Es bedarf keiner weiteren Anpassung.

  • Verkaufslieferschein Berichts ID 208: Dieser Bericht kann über Standardberichtseinrichtung des ELO Connectors archiviert werden. Es bedarf keiner weiteren Anpassung.

  • Einkauf Bestellung über den im ELO Connector mitgelieferten Bericht mit der ID 5508482: Dieser Berichts kann über eine individuelle Berichtseinrichtung archiviert werden. Es bedarf keiner weiteren Anpassung.

  • Artikel Buch.-Blatt buchen und drucken (Artikeljournal - Menge) Berichts ID 703: Dieser Bericht wird über eine Page in Business Central mittels RunModal aufgerufen. Hier muss der Report angepasst werden bevor er archiviert werden kann.

  • Inventurbeleg drucken (Inventurliste) Berichts ID 722: Dieser Bericht wird über eine Page in Business Central mittels RunModal aufgerufen. Hier muss der Report angepasst werden bevor er archiviert werden kann.

  • Umlagerung buchen und drucken (Umlagerung innerhalb Zentrallager) (Lagerplatzjournal - Menge) Berichts ID 7303: Dieser Bericht wird über eine Page in Business Central mittels RunModal aufgerufen. Hier muss der Report angepasst werden bevor er archiviert werden kann.

  • Artikel Buch.-Blatt drucken (Lagerbestandsumlagerung) Berichts ID 7321: Dieser Bericht wird über eine Page in Business Central mittels RunModal aufgerufen. Hier muss der Report angepasst werden bevor er archiviert werden kann.

Zunächst soll die Berichtseinrichtung erläutert werden. Für die Standardberichte 205, 208 und 1306 muss nur die Verwendung Verkauf ausgewählt werden und die Berichts ID hinterlegt werden. Anhand der letzten drei Schalter kann gesteuert werden, wann der Bericht für einen Datensatz archiviert werden soll.

Für den vom ELO Connector mitgelieferten Bericht "Einkauf - Bestellung" muss eine Einrichtung mit der Verwendung Individual und der Berichts ID 5508482 eingerichtet werden. Es ist zwingend eine individuelle aber frei zu benennende vom ELO Schnittstellenpartner vorzugebende Belegart einzutragen. Als individuelle Herkunftstabelle ID ist in diesem Fall der Einkaufskopf Tabelle 38 zu wählen. Die Belegnr. steht in Feld Nr. 3. Die letzten vier Schalter steuern die Archivierung bei Druck, Vorschau oder Versendung einer E-Mail und ob die Request Page des Berichts vor der Archivierung erneut geöffnet werden soll um ggf. bestimmte Parameter setzen zu können.

Der Report 703 wird, wie oben geschildert, nur über ein RunModal aufgerufen. Hier ist eine zusätzliche Programmierung notwendig, damit der Bericht archiviert werden kann. Zunächst muss das Event OnGetPreviewModeSNC erzeugt werden. Dieses beinhaltet den Basis Record des Berichts "Item Register" welches zwingend mittels call by reference also einem vorangestellten var übergeben werden muss, damit die Filterung bei der Erzeugung der PDF greifen kann. Die ObjectID des Berichts muss als Text übergeben werden (hier ist zwingend false in den Klammern einzutragen). Hierüber wird im ELO Connector die Berichts ID ermittelt. Als dritter Parameter wird der Parameter IsPreviewMode als Booleanwert erwartet. Hierüber kann die Steuerung in der Berichtseinrichtung für die Vorschau gesteuert werden.

Im OnPostReport Trigger des Berichts muss dieses Event aufgerufen werden.

Stapelverarbeitung: Durch die Anpassungen wird jeder Datensatz des übergeordneten Data Items des Reports durchlaufen. Dadurch ist eine Stapelarchivierung von allen durchlaufenenen Datensätzen möglich.

Achtung

Zunächst soll die Berichtseinrichtung erläutert werden. Für die Standardberichte 205, 208 und 1306 muss nur die Verwendung Verkauf ausgewählt werden und die Berichts ID hinterlegt werden. Anhand der letzten drei Schalter kann gesteuert werden, wann der Bericht für einen Datensatz archiviert werden soll.

Für den vom ELO Connector mitgelieferten Bericht "Einkauf - Bestellung" muss eine Einrichtung mit der Verwendung Individual und der Berichts ID 5508482 eingerichtet werden. Es ist zwingend notwendig, eine individuelle aber frei zu benennende vom ELO Schnittstellenpartner vorzugebende Belegart einzutragen. Als individuelle Herkunftstabelle ID ist in diesem Fall der Einkaufskopf Tabelle 38 zu wählen. Die Belegnr. steht in Feld Nr. 3. Die letzten vier Schalter steuern die Archivierung bei Druck, Vorschau oder Versendung einer E-Mail und ob die Request Page des Berichts vor der Archivierung erneut geöffnet werden soll um ggf. bestimmte Parameter setzen zu können.

Report 703

Der Report 703 wird, wie oben geschildert, nur über ein RunModal aufgerufen. Hier ist eine zusätzliche Programmierung notwendig, damit der Bericht archiviert werden kann. Zunächst muss das Event OnGetPreviewModeSNC erzeugt werden. Dieses beinhaltet den Basis Record des Berichts Item Register welches zwingend mittels call by reference also einem vorangestellten var übergeben werden muss, damit die Filterung bei der Erzeugung der PDF greifen kann. Die ObjectID des Berichts muss als Text übergeben werden (hier ist zwingend false in den Klammern einzutragen). Hierüber wird im ELO Connector die Berichts ID ermittelt. Als dritter Parameter wird der Parameter IsPreviewMode als Booleanwert erwartet. Hierüber kann die Steuerung in der Berichtseinrichtung für die Vorschau gesteuert werden.

Im OnPostReport Trigger des Berichts muss dieses Event aufgerufen werden.

Das sind die Änderungen, die im Bericht durchgeführt werden müssen

Nun muss eine neue Business Central Extension erzeugt werden, welche eine Verknüpfung zum SIEVERS ELO Connector hat:

"name": "ELOIndividualReportExtension",
"publisher": "Default Publisher",
"brief": "",
"description": "",
"privacyStatement": "",
"EULA": "",
"help": "",
"url": "",
"logo": "",
"dependencies: [
  {
    "appId": "daf55037-6ef0-43d7-8430-95c6cca94917",
    "name": "SIEVERS ELO Connector",
    "publisher": "SIEVERS-GROUP",
    "version": "14.0.0.0"
  }
],
"screenshots": [],
"runtime": "3.0"
"platform": "14.0.0.0",
"application": "14.0.0.0",
"idRanges": [
  {
    "from": 71309700,
    "to": 71309799
  }
],
"showMyCode": true

Im Anschluss muss eine Codeunit angelegt werden, die das zuvor im Bericht angelegte Event abonniert:

Sobald dieses Event ausgeführt wird, wird geprüft, ob der Bericht archiviert werden muss.

Report 722

Der Bericht 722 ist von der Einrichtung und der Anpassung identisch zum Report 703. Auch hier muss der Bericht mit Code versehen werden:

Hier ist die Basistabelle die Item Journal Batch, welche im Event und auch in der SIEVERS ELO Berichtseinrichtung hinterlegt werden muss, damit der Bericht korrekt archiviert werden kann.

Und auch hier muss ein Event Subscriber in der zuvor angelegten Codeunit eingefügt werden:

Report 7321

Dasselbe wie für Report 722 gilt für diesen Report.

Hier muss wiederum die Item Journal Line als Basistabelle in das Event und in die SIEVERS ELO Berichtseinrichtung eingetragen werden.

Und auch hier wird ein Event Subscriber benötigt:

Berichtsanpassungen ab BC 18

Ab BC 18 können Report Extension erzeugt werden. Dies bietet für den ELO Connector den Vorteil, dass der Aufruf zur Archivierung recht einfach eingefügt werden kann:

Hier am Beispiel Report 722 "Phys. Inventory List" dargestellt.

Es kann hier jeder Bericht verwendet werden, es muss nur die Tabelle des DataItems bei der Übergabe zur "ArchiveELOReportForIndividualReport" Funktion angepasst werden.

reportextension 71309704 "SNC ELO Phys. Inv. List Ext." extends "Phys. Inventory List"
{
    trigger OnPostReport()
    var
        SNCELOReportSetup: Record "SNC ELO Report Setup";
    begin
        SNCELOReportSetup.ArchiveELOReportForIndividualReport(
            "Item Journal Batch",
            CurrReport.ObjectId(false),
            CurrReport.Preview()
        );
    end;
}

Es muss somit ab BC 18 nur noch eine Erweiterung erstellt werden. Ein umständliches kopieren eines Reports in den individuellen ID Bereich und eine Anpassung der aufrufenden Actions entfällt demnach in Standardobjekten.

Hierdurch können Berichte gedruckt und archiviert werden, sie können ebenfalls bei einer Druckvorschau archiviert werden und auch eine Einrichtung in der Berichtsauswahl und das Versenden von E-Mails ist dadurch möglich. Auch ein Aufruf aus dem Code heraus mittels Report.Run() wird dadurch abgefangen.

Somit bietet diese Report Extension die größtmögliche Flexibilität bei der Einrichtung von Berichten.

Die SIEVERS ELO Berichtseinrichtung sähe dann beispielsweise so aus:

SIEVERS ELO Archivierte Berichte

Die Berichte werden nach der Einrichtung und einem Druck hier abgelegt und können von ELO abgerufen werden.