Category Archives: Reports in AX 2009

How to allign text vertically on report

Let’s assume you have a report in Ax ,based on table Company Info.Your report is showing some company  information like company name,company address.
I have  put all the code together in a display method

Display container showCompanyvertical()
System.Drawing.Bitmap   BarcodeBitmap;
System.Drawing.Graphics BarcodeGraphics;
int     dx=200;
int     dy=200;
str     barcodetxt;
Image   BarcodeImage;
System.Drawing.Pen                TxtPen;
System.Drawing.Brush              TxtBrush;
System.Drawing.Brush              DrawBrush;
System.Drawing.StringFormat       StringFormat;
System.Drawing.StringAlignment    StringAlignment;
System.Drawing.Font BarcodeFont = new System.Drawing.Font(‘Times New Roman’,12,System.Drawing.FontStyle::Regular);
Int64             BarcodeBitmapPtr;
BarcodeCode128    MyBarcode = BarcodeCode128::construct();
BarcodeImage = new Image();
BarcodeBitmap = new System.Drawing.Bitmap(dx,dy);
BarcodeGraphics = System.Drawing.Graphics::FromImage(BarcodeBitmap);
barcodetxt =this.companyName()+”\n”+ this.companyAddress();
// clear canvas
DrawBrush = System.Drawing.Brushes::get_White();

// set barcode text
TxtBrush = System.Drawing.Brushes::get_Black();
TxtPen = new System.Drawing.Pen(TxtBrush);

// set text alignment
StringFormat = new System.Drawing.StringFormat();
StringAlignment = System.Drawing.StringAlignment::Center;

// init rotation

// draw text
BarcodeGraphics.DrawString(barcodetxt, BarcodeFont,TxtBrush, any2int(dx/2) , any2int(dy/2),StringFormat);

// transfer image to Ax
return BarcodeImage.getData();

Now make sure you have a report control, type bitmap. Set the newly created display method in the properties.

Tip: Watch out with the ResizeBitmap property.

Leave a comment

Posted by on February 29, 2012 in Reports in AX 2009, X++


Tags: ,

How to get rid of the report scaling message

When a report doesn’t fit on a page, depending on it’s properties Ax will resize the report. This is a powerful and very useful feature.
Now Ax will inform you that the report has been rescaled (Report is scaled xx percent to fit to page) and this message is generally not well received by users.

Users are annoyed by the message, they get it every time they run the report, they cannot do anything about it, they have to click to close the infolog, …

Ax has a builtin feature to suppress this scaling message. You can modify the init method of your report, and add something like this:


This is very effective and will do the job.
Only, this requires you to modify every report with these kind of messages.

A nicer way would be if we could switch it off in one place for all reports. Fortunately, this is possible as well.
Go to class SysReportRun, in the Run method, place following code before the call to super:


void run(boolean onlyReport = false)
// If this report is a webReport the run a webReport.
if (webSession() && runBaseReport)
// When running the report and onlyReport = true then run the report.
if (!onlyReport && runBaseReport)
if (runBaseReport.prompt())
// If the prompt returns false the do not run the report.
// The RunBaseReport.Run method calls the method with the parm onlyReport = true.


// 30 december 2010
//scaling message suppressed by default
// 30 december 2010


Now we don’t have to modify each and every report and our users are happy.

Note that you can still override the settings in your report. In some reports this is done by default, like SalesInvoice and SalesConfirm.

Leave a comment

Posted by on February 20, 2012 in Reports in AX 2009



How to Use a Programmable Section in Reports in Dynamics AX

We can use programmable sections to add any kind of customized information for example : sum of fields in the report .
To activate a programmable section, activate it explicitly with an element.execute(Number) statement. The Number must be specified in the ControlNumber property for the design section.

For example, I’ve created a prgrammable section calculating the sum of a column in dynamics ax .
To call this section , I add the method element.execute(1); in the fetch method after calling super() and before returning the result of the fetch

public boolean fetch()
    boolean ret;
    ret = super();
    return ret;
Leave a comment

Posted by on February 20, 2012 in Reports in AX 2009



How to diplay the total of a column in a report in Dynamics AX

1. To diplay the total of a column (named ColumnA), you have to :

Click on ColumnA and open its properties (Alt+enter)

Modify the SumAll to YES
Create a new field (named ColumnASum) typed Sum
In its properties, modify the dataFieldName to ColumnA
That’s all, the sum of all lines will be diplayed in the field.

Remark : naturally the ColumnASum must be created outside and after the Body containing the ColumnA
For example, you put the ColumnA in the body of a section group in a generated design and the sum of this column in the footer of the section group.

II. You can also calculate the sum of a column following another method : In the classdeclaration, declare a variable : sumnet

In the executeSection method of the body you calculate the sum of your column :

public void executeSection()


Then, in the method of your report create a method that displays this variable :

Display Amount _SumNet()
return SumNet;

In the Grand Total section : Footer of the generated design for example:
create a field and set its DataMethod to _SumNet .
this field calculates the sum of your column.

Leave a comment

Posted by on February 20, 2012 in Reports in AX 2009



How to call a report and a report’s menuitem from X++

To call a report, use this code for example, if you need to call a report when clicking on a button :
void clicked()
Args args = new args();
ReportRun reportRun;
reportRun = classFactory.reportRunClass(args);


To call a report’s menuitem , use this one :

MenuFunction menuFunction;
menuFunction = new MenuFunction(reportStr(Cust), MenuItemType::Output);

Leave a comment

Posted by on February 20, 2012 in Reports in AX 2009



How and when to use page breaks in Dynamics Ax reports

If you want a page break before a particular section, add an executeSection method and call element.newpage() before the call to super(). Else if you are displaying many pages in your report and you need a section that change from a page to another according to your needs use page breaks:

Leave a comment

Posted by on February 20, 2012 in Reports in AX 2009



How to call different reports from one class in Dynamics AX

I added a Checkbox in the method : Dialog of the class,Via the Checkbox I tried to manage that the
right report is choosen, when it is unchecked , I got the actual report when It is checked I call aonther similar class that returns the appropriate report.After the method prompt, I can get the value of the checkBox in the dialog : true or false then according to the needs I can run the appropriate report.

Leave a comment

Posted by on February 20, 2012 in Reports in AX 2009



Dynamics Cognizance

Site presents solution to common and non-common Microsoft Dynamics Ax problems faced by Consultants and Administrators

365 by Thijs

Blogging about Microsoft 365, Azure and Automation!


Blog about ax with sample codes, tips and tricks.

GM Dynamics Blogs

Transform IT with Digital Trasformation and Social Innovation

Ms. Dynamic Millennial

Unboxing Microsoft Dynamics 365 for Finance and Operations


Exploring the new vision of the Power platform

Dynamics Vision 365

The FinOps pulse

Breaking Bong

I write when no one is watching


Microsoft Dynamics 365 Business Management Solution Enthusiast

Dynamics 365 Finance

Dynamics 365 Finance & Much More.

Microsoft Dynamics AX


Sumit Potbhare

Dynamics 365 for Commerce

This is your site about D365 (Finance and Supply Chain Management), IoT (Internet of Things) and HoloLens