var
ReportSelections: Record "Report Selections";
TempReportSelections: Record "Report Selections" temporary;
TempBlob: Codeunit "Temp Blob";
Base64Convert: Codeunit "Base64 Convert";
outStreamReport: OutStream;
inStreamReport: InStream;
ReportUsage: Enum "Report Selection Usage";
DocumentPrint: Codeunit "Document-Print";
SourceRecordRef: RecordRef;
SalesHeader: Record "Sales Header";
DocumentBase64: Text;
begin
// If you already have a RecordRef, you can skip the next four lines.
if not SalesHeader.FindFirst() then
// For testing purposes, retrieving the first record of the Sales Header.
// In your real scenario, replace this with the necessary conditions.
exit;
SalesHeader.SetRecFilter();
// Set the filter on SalesHeader to be used for the RecordRef.
SourceRecordRef.GetTable(SalesHeader);
// Assign the SalesHeader record to the SourceRecordRef.
ReportUsage := DocumentPrint.GetSalesDocTypeUsage(SalesHeader);
// Determine the report usage based on the document type of the Sales Header.
ReportSelections.FindReportUsageForCust(ReportUsage, SalesHeader."No.", TempReportSelections);
// Find the appropriate report selection for the customer based on the report usage and Sales Header number.
// Store the result in a temporary Report Selections record (TempReportSelections).
TempBlob.CreateOutStream(outStreamReport);
// Create an output stream in the TempBlob to store the generated report.
ReportSelections.SaveReportAsPDFInTempBlob(
TempBlob, TempReportSelections."Report ID",
SourceRecordRef, TempReportSelections."Custom Report Layout Code", ReportUsage
);
// Save the selected report as a PDF into TempBlob using the specified report ID,
// custom report layout, and report usage.
TempBlob.CreateInStream(inStreamReport);
// Create an input stream from the TempBlob to read the PDF report data.
DocumentBase64 := Base64Convert.ToBase64(inStreamReport, false);
// Convert the report data from the input stream to a Base64-encoded string
// and assign it to the DocumentBase64 variable.
end;
var TempBlob: Codeunit "Temp Blob"; ReportInStream: InStream; ReportOutStream: OutStream;
Base64Convert: Codeunit "Base64 Convert"; TempBlob.CreateOutStream(ReportOutStream); Report.SaveAs(ReportID, '', ReportFormat::Html, ReportOutStream, RecordRef); TempBlob.CreateInStream(ReportInStream); ReportInStream.ReadText(BodyText);
​​​​​​​Base64Convert.ToBase64(BodyText);
Stay up to date on forum activity by subscribing. You can also customize your in-app and email Notification settings across all subscriptions.
André Arnaud de Cal... 290,462 Super User 2024 Season 2
Martin Dráb 228,366 Most Valuable Professional
nmaenpaa 101,148