(Q1) Quali sono le differenze tecniche principali tra il report Engine C/AL e L’advanced Reporting AL
La prima differenza è nella generazione del buffer.
Nella versione AL è obbligatorio invocare la generazione del buffer se il report è del report engine e poi eseguirlo. Ad Esempio:
IF ReportBufferMgt.TryPrepareBuffer(TempReportSelections."Report ID", RecordVariant, TempReportSelections."Report Setup Code") THEN
report.RunModal(TempReportSelections."Report ID", IsGUI, FALSE)
ELSE
report.RunModal(TempReportSelections."Report ID",IsGUI,FALSE,RecVarToPrint);
Questo comporta che il buffer venga generato prima della scelta del “Report Setup” e quindi il report debba scegliere quali righe stampare e quali no.
La versione AL riprende la stampa classica ed è totalmente compatibile con il Report.Runmodal() senza bisogno di popolare alcun buffer.
Questo viene risolto aggiungendo nei report dei “fake dataitem” come questo:
dataitem(FakeSalesHeader; "Sales Header")
{
DataItemTableView = sorting ("Document Type", "No.");
Description = 'Fake Sales Header, Only for Report Selection Integration';
trigger OnPreDataItem()
begin
CurrReport.Break();
end;
}
Che hanno il solo scopo di ricevere la tabella filtrata dall’esterno e permetterne la successiva analisi per capire quale è il record da stampare:
AdvRptRoutines.GetDocumentToPrint(FakeSalesHeader, DocVariant):
Con la limitazione di poter usare questo approccio solo su tabelle previste (ma ogni report include le 14 principali), rende l’elaborazione trasparente.
Il buffer viene quindi generato solo dopo che l’utente ha scelto sulla request page il report setup pertanto il dataset da stampare è realmente l’elaborato finale.
(Q2) Quale è la sequenza di elaborazione nella generazione del buffer report?
Questo diagramma mostra come internamente vengono sollevati i vari eventi a cui possiamo integrarci.
Nello schema i processi color verde acido sono eventi di tipo layout mentre quelli azzurri sono eventi classici.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.