Skip to main content

X++ Code to run SSRS Report with parameter in D365 F&O (Example Sales Invoice )

Below is sample X++ Code to run SSRS Report with parameter in D365 F&O (Example Sales Invoice ) 


    Args                       args = new Args();

    CustInvoiceJour            custInvoiceJour;

    SalesInvoiceJournalPrint   salesInvoiceJournalPrint;

 

    select firstonly custInvoiceJour where custInvoiceJour.SalesId != '';

 

    // Add record to be printed.

    // In order to have the context table we need to set args.record().

    args.record(custInvoiceJour);

 

    salesInvoiceController = new SalesInvoiceController();

    salesInvoiceController.parmReportName(

        PrintMgmtDocType::construct(PrintMgmtDocumentType::SalesOrderInvoice).getDefaultReportFormat());

 

    salesInvoiceContract = salesInvoiceController.parmReportContract().parmRdpContract();

    salesInvoiceContract.parmCountryRegionISOCode(SysCountryRegionCode::countryInfo());

    salesInvoiceController.parmArgs(args);

    salesInvoiceController.parmExecutionMode(SysOperationExecutionMode::Synchronous);

 

    // Set print destinations.

    SRSPrintDestinationSettings pds = salesInvoiceController.parmReportContract().parmPrintSettings();

    pds.printMediumType(SRSPrintMediumType::File_DC);

    pds.parmFilePrintDestSettings_DC().parmOutputFilename('SalesInvoice_@FIELD_InvoiceId@.xlsx');

    pds.parmFilePrintDestSettings_DC().parmOutputFileFormatSrs(SRSReportFileFormat::Excel);

 

    

 

    // Use the original SSRS design.

    pds.parmFilePrintDestSettings_DC().parmUseSsrsBuiltInDesign(true);

    pds.parmSrsPrintReportSettings_DC().setProperty_PrintSrsOriginalDesign(true);

 

    /* Use the default Docentric design */

    pds.parmSrsPrintReportSettings_DC().setProperty_PrintSrsOriginalDesign(false);

    pds.parmFilePrintDestSettings_DC().parmUseSsrsBuiltInDesign(false);

    pds.parmFilePrintDestSettings_DC().parmOutputFilename('SalesInvoice_@FIELD_InvoiceId@.pdf');

    pds.parmFilePrintDestSettings_DC().parmOutputFileFormat(DocOutputFileFormat::PDF);

    

    

    // Initalize SalesInvoiceJournalPrint class instance because there is no other way

    // NOT to use Print Management.

    salesInvoiceJournalPrint = SalesInvoiceJournalPrint::construct();

    salesInvoiceJournalPrint.parmPrintFormletter(NoYes::Yes);

    salesInvoiceJournalPrint.parmUsePrintManagement(false);

    salesInvoiceJournalPrint.parmUseUserDefinedDestinations(true);

    salesInvoiceJournalPrint.parmPrinterSettingsFormLetter(salesInvoiceController.parmReportContract().parmPrintSettings().pack());

 

    args.caller(salesInvoiceJournalPrint);

    args.parmEnumType(enumNum(PrintCopyOriginal));

    args.parmEnum(PrintCopyOriginal::OriginalPrint);

 

    // Start the report execution.

    salesInvoiceController.parmShowDialog(false);

    salesInvoiceController.startOperation();

Popular posts from this blog