Dynamische Druckberichte
report bietet die Möglichkeit, nach bestimmten Ereignissen automatisch Berichte zu drucken. . Die Liste an Ereignissen ist vordefiniert, kann aber durch durch eine Anpassung wie hier exemplarisch gezeigt erweitert werden. Hier sind drei Anpassungen notwendig.
Den Prozess definieren
Zuerst muss der Prozesscode ergänzt werden.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"RPT_Dynamic Printout Mgt", 'AddCustomProcessCode', '', true, true)]
local procedure AddCustomProcessCodes(var NameValueBuffer: Record "Name/Value Buffer")
begin
PrintProcesses.AddNewEntry('Custom1', 'additional Information');
PrintProcesses.AddNewEntry('Custom2', 'additional Information');
end;
Parameter:
- NameValueBuffer: Dieser temporäre Datensatz wird genutzt um die Prozesscodes und eine kurze Beschreibung zu speichern (Standard Funktionalität)
Die Datenbasis des Prozesses definieren
Wenn Sie einen eigenen Prozess definieren sollten Sie report als zusätzliche Informationen mitgeben, welche Datenbasis dieser Prozess hat. Diese Informationen werden verwendet, um den Prozess zu spezifizieren, und ermöglichen es dem System, Filterausdrücke bei der Einrichtung zu verwenden.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"RPT_Dynamic Printout Mgt", 'AddCustomProcessTableIDs', '', true, true)]
local procedure AddMyProcessTables(ProcessCode: Code[20]; var BaseTableID: Integer; var SubTableID: Integer)
begin
Case ProcessCode of
'Custom1':
BaseTableID := Database::"Sales Header";
'Custom2':
begin
BaseTableID := Database::"Purchase Header";
SubTableID := Database::"Purchase Line";
end;
end;
end;
Parameter:
- ProcessCode: Der Code des aktuellen Prozesses
- BaseTableID: Die Tabellennummer der Datensatzes
- SubTableID: Eine optionale zusätzliche Untertabelle
Den automatischen Druck auslösen
Um an einer vorbereiteten Stelle im Prozess den Druck auszulösen wird ein Code ähnlich wie dieser benötigt.
local procedure StartMyDynamicPrint()
var
DynPrintMgt: Codeunit "RPT_Dynamic Printout Mgt";
begin
DynPrintMgt.StartPrintProcess_External('Custom1', Rec, '');
end;
Der zu startende Prozess wird an report mit der Information der aktuellen Datensätze geschickt. (der zweite Datensatz ist Optional) Je nach Einrichtung wird der passende Beleg gestartet.