Archive for Kasım 27th, 2021

Dynamics 365 Finance and Operations Yeni Bir SSRS Raporu Nasıl Yapılır?

Bu yazıda Dynamics 365 Finance and Operations içinde yeni bir SSRS raporu nasıl yapılır anlatamaya çalışacağım.

Öncelikle bu örnekte ben Query base bir format değil, Data Provider tipinde bir rapor yapacağım. Raporda PurchLine üzerinden bir çıktı tasarımı yapacağız.

Bu yüzden 3 tane sınıfı ve bir temp tabloya ihtiyaç var.

Olan bir temp tabloda kullanabilirsiniz ama ben bu rapor için DmrPurchConTmp isminde bir tablo oluşturdum. Alanları ihtiyacınıza göre ekleyebilirsiniz.

[DataContractAttribute]

class DmrPurchLinePrintContract

{

RecId  purchLineRecId;

[

DataMemberAttribute('purchLineRecId'),

SysOperationLabelAttribute(literalStr("Purchase Contract")),

SysOperationControlVisibilityAttribute(false)

]

public RecId parmpurchLineRecId(RecId _purchLineRecId = purchLineRecId)

{

purchLineRecId = _purchLineRecId;

return purchLineRecId;

}

}

class DmrPurchLinePrintController extends SrsReportRunController

{

public static DmrPurchLinePrintController construct()

{

return new DmrPurchLinePrintController ();

}

public static void main(Args _args)

{

PurchLine legalProceed;

DmrPurchLinePrintContract  contract;

DmrPurchLinePrintContract  controller = new DmrPurchLinePrintContract  ();

if (_args.record() && _args.dataset() == tableNum(PurchLine))

{

legalProceed = _args.record();

controller.parmReportName(ssrsReportStr(DmrPurchLinePrint,Report));

controller.parmDialogCaption(“Purch Cont “);

controller.parmArgs(_args);

contract = controller.parmReportContract().parmRdpContract();

contract.parmpurchLineRecId(legalProceed.RecId);

controller.parmShowDialog(false);

controller.startOperation();

}

}

}

[SRSReportParameterAttribute(classStr(DmrPurchLinePrintContract))]

class DmrPurchContLayoutPrintDP extends  SrsReportDataProviderPreProcess

{

DmrPurchConTmp  DmrPurchConTmp;

[SRSReportDataSetAttribute(tablestr(DmrPurchConTmp))]

public DmrPurchConTmp getDmrPurchConTmp()

{

select DmrPurchConTmp;

return DmrPurchConTmp;

}

public void processReport()

{

DmrPurchContLayoutPrintContract contract;

purchLine                       purchLine;

contract = this.parmDataContract() as DmrPurchLinePrintContract;

DmrPurchConTmp.setConnection(this.parmUserConnection());

purchLine = purchLine::findRecId(contract.parmpurchLineRecId());

if (purchLine)

{

this.populateDmrPurchConTmp(purchLine);

}

}

void populateDmrPurchConTmp(purchLine _purchLine)

{

DmrPurchContQuantity    purchContQuantity;

PurchLine               purchLine;

;

select firstonly purchContQuantity

where purchContQuantity.InventTransId == _purchLine.InventTransId;

DmrPurchConTmp.InventTransId  = _purchLine.InventTransId;

DmrPurchConTmp.insert();

}

}

Bu sınıfları oluşturduktan sonra raporu tasarlamaya geçebiliriz. Öncelikle yeni bir rapor oluşturuyoruz.

Resim-1

Yeni bir rapor tasarımı oluşturuyoruz. Burada çıktı olacağı için Precision Design kullandım. Ayrıca sayfa özelliklerinde A4 seçtim. Bu arada isim önemli kodumuzda bunu kullandık.

Resim-2

Çift tıklayıp tasarım ekranını açabilirsiniz. Ben basitçe eklemler yaptım. Çıktı olacağı için sabit yerler var.

Resim-3

Tasarımdan sonra bir Menu Item oluşturup Controller sınıfına bağlıyoruz.

Resim-4

Artık raporu almak istediğimiz forma ekleyip Deploy edebiliriz. Derlem ve eşitleme yapmayı unutmayın.

Resim-5

İlgili forma gelip raporu çalıştırıyorum.

Resim-6

Rapor çıktısını görebiliyorum.

Resim-7

Bu yazıda bir çıktı tasarımı için SSRS raporu nasıl yapılır anlatmaya çalıştım. 3 sayfalık bir çıktı tasarlamam gerekiyor. Sayfa sayfa yapmak pek mükün olmadı siz 3 sayfa uzunluğunu ayarlarsanız otomatik bölüyor.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, SSRS, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365