rdp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
rdp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

11 Temmuz 2014 Cuma

AX 2012 - Send marked records to SSRS RDP Report

SSRS DP Class don't accept table or container data types as parm method. I searched at forums and saw str data type adviced. But I think this's not best approach. At last learned best way already in standard AX SSRS reports. At this link there's a PDF file tells look for check report. I generated this report with look form ChequeDP and ChequeController classes:

Controller class:

class declaration:

class myController extends SrsReportRunController
{
    #define.ReportName('myreport.Report')
   myTMPTable   myTMPTable;
}

public static void main(Args _args)
{
    SysLastValue    SysLastValue;
    myController controller = new myController();
    controller.parmReportName(#ReportName);
    controller.parmArgs(_args);
    controller.DeleteTmpData();
    controller.init();
    controller.startOperation();
}


protected void prePromptModifyContract()
{

    SrsTmpTblMarshallerContract contract = this.parmReportContract().parmRdpContract() as SrsTmpTblMarshallerContract;

    new SRSReportRunPermission().assert();
    contract.parmTmpTableDataRecId(SRSTmpTblMarshaller::SendTmpTblToDataProvider(myTMPTable));

}


public void init()
{
    FormDataSource      ds;
    TransDate           transDate;
    VendTrans           vendTrans;


    if (!this.parmArgs()             ||
        !this.parmArgs().record()    ||
        this.parmArgs().dataset() != tableNum(VendTrans))
        throw error("Report should be call with correct parameter!..");

    ds = this.parmArgs().record().dataSource();

    vendTrans = ds.getFirst(1);
    transDate = vendTrans.transDate;
    PaymentReceipt.VendAccount = vendTrans.AccountNum;

    for (vendTrans = ds.getFirst(1); vendTrans != null; vendTrans = ds.getNext())
    {
        myTMPTable.Date             = vendTrans.TransDate;

...
        myTMPTable.insert();
    }
}


DP Class:

// <ETG - memre > GN:   T: 11.07.2014 A:
[SRSReportParameterAttribute(classStr(SrsTmpTblMarshallerContract))]
public class mpDP extends SRSReportDataProviderBase
{
    myTMPTAble myTMPTable;
}


private void initTmpTable()
{
    SrsTmpTblMarshallerContract contract = this.parmDataContract() as SrsTmpTblMarshallerContract;

    new SRSReportRunPermission().assert();

    myTMPTable = SRSTmpTblMarshaller::getTmpTbl(contract.parmTmpTableDataRecId());

    SRSTmpTblMarshaller::deleteTmpTblData(contract.parmTmpTableDataRecId());
    CodeAccessPermission::revertAssert();
}


public void processReport()
{

    CompanyInfo                 Company;
    VendTable                   vendTable;
    AmountMST                   amount;
    TempStr                     NumtoTxt;
    LedgerJournalTrans          LedgerTrans;

    this.initTmpTable();

...
}

17 Haziran 2014 Salı

AX 2012 Add validate method, groupping and labeling parameters with RDP class

Class Declaration:

[
    DataContractAttribute,
    SysOperationGroupAttribute("DateGroup", "Date Range", "1", FormArrangeMethod::Vertical),
    SysOperationGroupAttribute("Other", "Other Filters", "1", FormArrangeMethod::Vertical)
]
class myContract implements SysOperationValidatable

{
...
}

Parm method:

[DataMemberAttribute('StartDate'),
SysOperationGroupMemberAttribute("DateGroup"),
SysOperationDisplayOrderAttribute("1")]
public StartDate parmStartDate(StartDate _StartDate = startDate)
{
   startDate = _StartDate;
   return StartDate;
}


Validate method:

public boolean validate()
{
    boolean isValid = true;
    if ( !endDate || !StartDate)
        isValid = checkfailed("You have to enter first/last dates!..");

    return isValid;
}

AX 2012 Add Query to SSRS report when developing with RDP

Add query attribute to data provider class:

[
    SRSReportQueryAttribute (querystr(Cust)),
    SRSReportParameterAttribute(classstr(myReportContract))
]
class myReportDP extends SRSReportDataProviderBase
{
    ...

}
Get query like this:

[SysEntryPointAttribute(false)]
public void processReport()
{
    QueryRun                    qRun;
    Query                       query;
     ...

    query = this.parmQuery();
    ...



Do not forget make Dynamics Filter property to true at SSRS report Dataset if you want to see select query button.

4 Şubat 2014 Salı

AX 2012 - Test RDP class at Axapta side

How do you test your RDP classes developed for SSRS reports at AX side?

DGHCreditDetailsDP  dp = new DGHCreditDetailsDP();
DGHCreditDetailsDC  dc = new DGHCreditDetailsDC();

Query q;

dc.parmTransDate(str2Date("28.12.2013",123));

q = dp.parmQuery();

         q.dataSourceTable(tableNum(BankAccountTrans)).addRange(Fieldnum(BankAccountTrans,accountid)).value("102 02 034 002");

dp.parmDataContract(dc);
dp.processReport();