Skip to main content

Quick Excel report – Dynamics Ax 2009

Excel is the most convenient software to examine changes in data. Specially when you have made them code and wanted it to be tracked. That’s is one of the many reasons why excel tops to be the most used software in the world.
This article in detail will tell you how to create an ad hoc excel sheet just in case you wanted to show data changes, compile information from different tables etc.

static void JobExportToExcel(Args _args)
{
SalesLine salesLine, oldSalesLine;
str text;
TextIO io;
#WinAPI
;
//Column header for the excel. The header fields and the data field must match
//in number and order
//You can use anything as a delimiter but # is convenient as this rarely appears
//as data (other choices ~, |)
text = 'Order # Customer # Item # Lot id # New tax group # Old tax group \n';
select * from salesLine
where salesLine.TaxItemGroup == 'GST' ||
salesLine.TaxItemGroup == 'Free';
while (salesLine)
{
//save this incase you wanted to show the old value
oldSalesLine = salesLine.orig();
if (salesLine.TaxItemGroup == 'GST')
{
salesLine.TaxItemGroup = 'CAPITAL';
}
else
{
salesLine.TaxItemGroup = 'Free';
}
//append the text
text += strfmt('%1 # %2 # %3 # %4 # %5 # %6 \n', salesLine.SalesId, salesLine.CustAccount, salesLine.ItemId, salesLine.InventTransId, salesLine.TaxItemGroup, oldSalesLine.TaxItemGroup);
//do it after the update text otherwise you loose the orig
salesLine.update();
next salesLine;
}
//So far no excel :-)...that comes later
io = new TextIO(WinAPI::getFolderPath(#CSIDL_DESKTOPDIRECTORY) + '\\exportToExcel.txt', 'w');
io.write(text);
}

step 1. Create a delimited text IO file through a job as shown above
step 2. Open Excel (Don’t try rightclick open with).
setp 3. Click Open file -> Select “ALL files” in the export dialog
step 4: select the textIO file that was recently given
step 5: Specify delimited in the dialog and enter the delimiter (# in this case)
step 6. Click finish your data is in. Just format the column size.

Popular posts from this blog

What does this mean: "The form datasource query object does not support changing its AllowCrossCompany property after the form has executed the query."?

I have made a form with datasources vendtable and vendtrans. Inside vendtable_ds.executequery() looks like this: QueryBuildDataSource queryBuildDatasource ,queryBDS_VendTrans_Invoice; ; queryBuildDatasource = this.query().dataSourceTable(tablenum(vendtable)); queryBDS_VendTrans_Invoice = this.query().dataSourceTable(tablenum(vendtrans)); if (curext() == "MASTERCOMP") { this.query().allowCrossCompany(true); } else { this.query().allowCrossCompany(false); } //FilterVendorName = stringedit control on form if (FilterVendorName.text()) { queryBuildDatasource.addRange(fieldNum(VendTable,Name)).value(strfmt("*%1*", FilterVendorName.text())); } else { queryBuildDatasource.clearRange(fieldNum(VendTable,Name)); } //FilterInvoiceNumber = stringedit control on form if (FilterInvoiceNumber.valueStr() == "") { queryBDS_VendTrans_Invoice.enabled(false); } else { queryBDS_VendTrans_Invoice.enabled(true); queryBDS_VendTrans_In...

Credit Note [Dynamics AX] using X++

This post will help to create credit note for a sales order based on the invent lot id. All the invoices raised for a particular sales line – Lot Id will be raised back as a credit note. Information on Credit Note: A credit note or credit memorandum (memo) is a commercial document issued by a seller to a buyer. The seller usually issues a Credit Memo for the same or lower amount than the invoice, and then repays the money to the buyer or sets it off against a balance due from other transactions Below Code will help to create credit note for all the invoices raised against the sales line -lot id. Please note: This code can be customized as per your requirements. This is just a template to help creating credit note using X++ code. Please test the code before use. static void SR_CreateCreditNote_Sales(Args _args) { // Coded by Sreenath Reddy CustInvoiceTrans custInvoiceTrans; Dialog dialog = new Dialog(“Create credit note – for sales.”); DialogField dfInv...