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();