Overview:-
A
Report data provider class is commonly known as RDP. RDP is the data
source type which is available when we add a new dataset to the report
in Visual Studio. RDP is a class which resides inside AX and executes
the business logic, processes the data, and returns a dataset which is
rendered in the report.
A Report data provider class should be ideally used in the following cases:
We cannot directly use a query to access the data from the database
The data has to prepare on the basis of business logic
To define a Report data provider class, we use the following syntax:
Report contracts in AX 2012 are used for defining parameters to the SSRS report. We can define any number of parameters using X++ statements of any data type, which can be passed on to the RDP class. And then, we can use the same contracts to query data from the database engine which will decrease an overhead on execution of a query in SQL.
To define a Report contract class we use the following syntax:
1. Add Report
2. Add Data Set
I. Set the Properties for that Data Set.
II.Set the Parameters you want to set blank value for ItemId Parameters
* Allow blank = true
* Null-able = true
3. Add Precision Design
4. Deployed SSRS Report and Run it.
[SRSReportParameterAttribute(classStr(SalesInvoiceRegisterContract))]
class SalesInvoiceRegisterDp extends SRSReportDataProviderBase
{
CustAccount _CustAccount;
BaseDate _FromDate,_ToDate;
SalesInvoiceRegisterContract _Contract;
SalesInvoiceRegistertmp SalesInvoiceRegistertmp;
}
Now create table return method in data provider class like below.[SRSReportDataSetAttribute("SalesInvoiceRegistertmp")]
public SalesInvoiceRegistertmp getSalesInvoiceRegistertmp()
{
select * from SalesInvoiceRegistertmp;//temp table
return SalesInvoiceRegistertmp;
}
Now create ProcessReport method in Data Provider class.public void processReport()
{
_Contract = this.parmDataContract();
_FromDate = _Contract.ParmFromDate();
_ToDate = _Contract.ParmToDate();
_CustAccount = _Contract.ParmCustAccount();
}
Report contract class:Report contracts in AX 2012 are used for defining parameters to the SSRS report. We can define any number of parameters using X++ statements of any data type, which can be passed on to the RDP class. And then, we can use the same contracts to query data from the database engine which will decrease an overhead on execution of a query in SQL.
To define a Report contract class we use the following syntax:
[DataContractAttribute]
class SalesInvoiceRegisterContract implements SysOperationValidatable
{
BaseDate FromDate,ToDate;
CustAccount CustAccount;
}
Now create customer account parameter method in contract class.[DataMemberAttribute("Customer"),SysOperationLabelAttribute("Customer"),SysOperationDisplayOrderAttribute('1')]
public CustAccount ParmCustAccount(CustAccount _CustAccount = CustAccount)
{
CustAccount = _CustAccount;
return CustAccount;
}
Now create from date and to date method In contract class.[DataMemberAttribute('FromDate'), SysOperationLabelAttribute('From Date'), SysOperationDisplayOrderAttribute("2")]
Public BaseDate ParmFromDate(BaseDate _FromDate = FromDate)
{
FromDate = _FromDate;
return FromDate;
}
[DataMemberAttribute('ToDate'), SysOperationLabelAttribute('To Date'), SysOperationDisplayOrderAttribute("3")]
Public BaseDate ParmToDate(BaseDate _ToDate = ToDate)
{
ToDate = _ToDate;
return ToDate;
}
create validate method in contract class for validate report parameter in contract class like below.public boolean validate()
{
boolean isValid = true;
if (!FromDate)
{
isValid = checkFailed(strFmt("@SYS84753", "@SYS180311"));
}
if (!ToDate)
{
isValid = checkFailed(strFmt("@SYS84753", "@SYS180217"));
}
if(FromDate && ToDate)
{
if (FromDate > ToDate)
{
isValid = checkFailed(strFmt("@SYS300457", date2StrUsr(FromDate, DateFlags::FormatAll), date2StrUsr(ToDate, DateFlags::FormatAll)));
}
}
return isValid;
}
Now in Visual Studio add the following1. Add Report
2. Add Data Set
I. Set the Properties for that Data Set.
II.Set the Parameters you want to set blank value for ItemId Parameters
* Allow blank = true
* Null-able = true
3. Add Precision Design
4. Deployed SSRS Report and Run it.
No comments:
Post a Comment
Thanks for your comment.