RUNREQUESTPAGE Function
Runs the request page for a report without running the report. Returns an XML string that contains the request page parameters that are entered on the request page.
Parameters := REPORT.RUNREQUESTPAGE(Number[, Parameters])
Parameters
- Number
Type: Integer The ID of the report for which you want to run the request page. To specify the report from a list, on the View menu, choose Symbols. If the report that you specify does not exist, then a run-time error occurs.
- Parameters
Type: Text or Code A string of request page parameters as XML to use to run the report.
Property Value/Return Value
Type: Text or Code
A string of the request page parameters as XML.
Remarks
This function opens the request page for the specified report, where the user can provide parameters for the report. When the user closes the request page by choosing the OK button, a string that contains the parameter values that were set by the user is returned. When the user chooses the Cancel button, an empty string will be returned. The returned parameter string can be picked up by calling one of the following functions:
Note
You can use these functions to schedule reports in the job queue.
Example
This example illustrates how to use the RUNREQUESTPAGE function to run the request page for report ID 206 Sales Invoice. The request page parameters are saved to a table, and then uses the parameters with the EXECUTE, SAVEAS, and PRINT functions to preview the report, save it as a PDF file, and print it.
This example requires that you create a table for holding parameters that are entered on the report request page and a codeunit that runs the report functions.
Create a table called Request Parameters that has the following fields.
Field Name | Data Type | Length |
---|---|---|
ReportId |
Integer |
|
UserId |
Code |
100 |
Parameters |
BLOB |
Create a codeunit and add the following variables in the C/AL Globals window.
Variable name | DataType | Subtype | Length |
---|---|---|---|
ReportParameters |
Record |
Report Parameters |
|
XmlParameters |
Text |
||
OStream |
OutStream |
||
IStream |
InStream |
||
CurrentUser |
Code |
100 |
|
Content |
File |
||
TempFileName |
Text |
Add the following code to the OnRun trigger of the codeunit.
// Use the REPORT.RUNREQUESTPAGE function to run the request page to get report parameters
XmlParameters := REPORT.RUNREQUESTPAGE(206);
CurrentUser := USERID;
// Save the request page parameters to the database table
WITH ReportParameters DO BEGIN
// Cleanup
IF GET(206,CurrentUser) THEN
DELETE;
SETAUTOCALCFIELDS(Parameters);
ReportId := 206;
UserId := CurrentUser;
Parameters.CREATEOUTSTREAM(OStream,TEXTENCODING::UTF8);
MESSAGE(XmlParameters);
OStream.WRITETEXT(XmlParameters);
INSERT;
END;
CLEAR(ReportParameters);
XmlParameters := '';
// Read the request page parameters from the database table
WITH ReportParameters DO BEGIN
SETAUTOCALCFIELDS(Parameters);
GET(206,CurrentUser);
Parameters.CREATEINSTREAM(IStream,TEXTENCODING::UTF8);
IStream.READTEXT(XmlParameters);
END;
// Use the REPORT.SAVEAS function to save the report as a PDF file
Content.CREATE('TestFile.pdf');
Content.CREATEOUTSTREAM(OStream);
REPORT.SAVEAS(206,XmlParameters,REPORTFORMAT::Pdf,OStream);
Content.CLOSE;
// Use the REPORT.EXECUTE function to preview the report
REPORT.EXECUTE(206,XmlParameters);
// Use the REPORT.Print function to print the report
REPORT.PRINT(206,XmlParameters);