Auf der Seite Excel-Auswertungskarte kann im Feld Auszuführende Codeunit eine Codeunit für die Auswertung angegeben werden. Damit können z.B. Hinweise angezeigt werden oder Daten direkt vor dem Ausführen der Auswertung neu berechnet oder aktualisiert werden.
Auswertungen bearbeiten, Allgemein, Excel-Auswertung bearbeiten
Um sicherzustellen, dass nur Codeunits ausgeführt werden können, die auch für den Excel Report Builder erstellt wurden, müssen diese zusätzlich über einen EventSubscriber eingebunden bzw. entsperrt werden.
Der Excel Report Builder ruft die Codeunit für eine Auswertung über den OnRun()-Trigger der Codeunit auf.
Über den EventSubscriber werden zusätzliche Informationen für den Benutzer und die Aufruf-Stelle der Codeunit angegeben.
Mögliche Aufruf-Stellen
OnShowExecutePage
Wenn die Ausführen-Seite angezeigt wird.
Diese Stelle ist besonders geeignet, um Benutzern allgemeine Hinweise zur Auswertung anzuzeigen.
Beispiel:
OnShowFilterPage
Wenn die Filter-Seite angezeigt wird.
Ähnlich wie OnShowExecutePage nur direkt nach der Ausführen-Seite. Der Aufruf erfolgt auch dann, wenn keine Filter-Seite angezeigt wird.
OnBeforeExecute
Bevor die Auswertung ausgeführt wird.
Diese Stelle ist besonders geeignet, um Benutzern eine Bestätigung anzuzeigen und/oder um Daten neu zu berechnen bzw. zu aktualisieren.
Beispiel 1
Als einfaches Beispiel können Sie die Codeunit 70171837 "NCE Show Schedule Message" in einer Auswertung angeben.
Diese Codeunit wird mit dem Excel Report Builder ausgeliefert und bewirkt, dass beim Ausführen der Auswertung zusätzliche folgende Meldung angezeigt wird:
Implementierung
Die Codeunit ist wie folgt aufgebaut und kann als Vorlage für Ihre eigenen Anforderungen verwendet werden:
codeunit 70171837 "NCE Show Schedule Message"
{
trigger OnRun()
begin
if (CurrentClientType = ClientType::Background) then
exit;
Message(ScheduleMsg);
end;
var
ScheduleMsg: Label 'This evaluation should be scheduled.\As soon as the Excel workbook has been created, a message appears in the Report Inbox.', Comment = 'DEU="Diese Auswertung sollte als Plan ausgeführt werden.\Sobald die Excel-Arbeitsmappe erstellt wurde, erscheint eine Meldung im Berichtseingang."';
[EventSubscriber(ObjectType::Codeunit, Codeunit::"NCE Runnable Codeunit Mgt.", 'OnAddAllowedCodeunitsToRun', '', false, false)]
local procedure NCERunnableCodeunitMgt_OnAddAllowedCodeunitsToRun(var TempNCERunnableCodeunit: Record "NCE Runnable Codeunit" temporary)
var
HelpTxt: Label 'This Codeunit causes the following additional message to be displayed when the evaluation is executed:\\', Comment = 'DEU="Diese Codeunit bewirkt, dass beim Ausführen der Auswertung zusätzliche folgende Meldung angezeigt wird:\\"';
begin
TempNCERunnableCodeunit.Add(Codeunit::"NCE Show Schedule Message", HelpTxt + '"' + ScheduleMsg + '"', "NCE Codeunit Call Location"::OnShowExecutePage);
end;
}
Über TempNCERunnableCodeunit.Add wird die Codeunit in den Excel Report Builder eingebunden bzw. entsperrt.
Parameter
CodeunitID
Wichtig
Der erste Parameter CodeunitID bestimmt, um welche Codeunit es sich handelt.
TempNCERunnableCodeunit.Add(Codeunit::"NCE Show Schedule Message", ...
Der Wert muss mit dem Namen der Codeunit übereinstimmen.
CodeunitHelpText
Dieser Text wird bei der Auswahl der auszuführende Codeunit in der Excel-Auswertungskarte angezeigt.
Hier sollten Informationen über den Zweck und die Verwendung der Codeunit angegeben werden.
CodeunitCallLocation
Bestimmt, an welcher Stelle die Codeunit aufgerufen wird.
Beispiel 2
Ein weiteres einfaches Beispiel ist die Codeunit 70171836 "NCE Confirm Long Run Time".
Diese Codeunit wird ebenfalls mit dem Excel Report Builder ausgeliefert und bewirkt, dass beim Ausführen der Auswertung zusätzliche folgende Bestätigung angezeigt wird:
Implementierung
Die Codeunit ist wie folgt aufgebaut und kann als Vorlage für Ihre eigenen Anforderungen verwendet werden:
codeunit 70171836 "NCE Confirm Long Run Time"
{
trigger OnRun()
var
ConfirmManagement: Codeunit "Confirm Management";
begin
if (CurrentClientType = ClientType::Background) then
exit;
if not ConfirmManagement.GetResponseOrDefault(LongRuntimeMsg, true) then
Error('');
end;
var
LongRuntimeMsg: Label 'It will take a longer time to execute this evaluation.\Do you want to execute the evaluation anyway?', Comment = 'DEU="Das Ausführen dieser Auswertung wird länger dauern.\Möchten Sie die Auswertung trotzdem ausführen?"';
[EventSubscriber(ObjectType::Codeunit, Codeunit::"NCE Runnable Codeunit Mgt.", 'OnAddAllowedCodeunitsToRun', '', false, false)]
local procedure NCERunnableCodeunitMgt_OnAddAllowedCodeunitsToRun(var TempNCERunnableCodeunit: Record "NCE Runnable Codeunit" temporary)
var
HelpTxt: Label 'This Codeunit causes the following additional confirmation to be displayed when the evaluation is executed:\\', Comment = 'DEU="Diese Codeunit bewirkt, dass beim Ausführen der Auswertung zusätzliche folgende Bestätigung angezeigt wird:\\"';
begin
TempNCERunnableCodeunit.Add(Codeunit::"NCE Confirm Long Run Time", HelpTxt + '"' + LongRuntimeMsg + '"', "NCE Codeunit Call Location"::OnBeforeExecute);
end;
}