| Docs Hilfe
  AppSource  
Docs  /  Excel Report Builder  /  Informationen für Entwickler

 Ausführbare Codeunits


2023/12/01 • 4 Min. Lesedauer
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;
}

Siehe auch




Feedback senden für
DE|EN Impressum