NAV 2013 R2 Report layout design with Report Builder

I was travelling to Kochi, Kerala to conduct a 6 day session on NAV 2013 R2 topics to a bunch of guys from one of the Microsoft Partner. it was 3 months back and as client requested to demonstrate the topics in NAV 2013 R2, I upgraded my laptop with NAV 2013 R2 from NAV 2013 FP1.

During the training, when we reach the topics on Reports, I got a rude shock that my report layout  design is no longer opening and its throwing an error as below (though I have visual studio 2010 installed in laptop) –


Normally I ensure to keep all dependent software of NAV installed right in my laptop. But this time I missed out the fact that NAV 2013 R2 is no longer compatible with Visual Studio 2010. Rather it needs VS 2012 or higher.

Now I got a situation here as I even don’t have the installable of Visual Studio 2012 / 2013  and I need to demonstrate the report designing features to my audience.

Fortunately with my installation of NAV 2013 (R2), the SQL Server 2012 express version was installed and along with that, the Report Builder 3.0 too was got installed in my Lapi. Though I was more comfortable in designing the reports in Visual Studio, but I quickly adapted to the new environment and managed the show perfectly. And trust me my audience was happy .

So the fact is that –

  • NAV 2013 R2 no longer uses Visual Studio 2010 for report layout design. Rather it looks for Visual Studio 2012 / 2013.
  • If you don’t have the Visual Studio 2012 / 2013, you can still manage to design the report using Report Builder 3.0. This is a component of SQL server 2012 reporting services and gets installed when you install SQL server 2012.
  • Among the 2 report authoring tools, Visual studio is still the default report authoring tool.  So even though you have the Report Builder 3.0 in your machine, you will see that NAV 2013 R2 is looking for Visual Studio 2012 / 2103 and still throwing the above mentioned error (picture).

To make NAV 2013 R2 use Report Builder 3.0, you need to change an option property in your NAV environment. To do the same –

  • Open NAV 2013 R2 development environment.
  • Go to Tools > Options. the below mentioned screen will open –


  • Change the ‘Use Report Builder’ property to ‘Yes’. The default value will be ‘<No>’.
  • Press ‘Ok’.

Once this is done, NAV 2013 R2 will no longer look for Visual Studio 2012 / 2013 and will open the Report Builder 3.0 for designing the report layout.

Note: If you are interested in knowing the difference between designing the report in Visual Studio (Report Designer) and designing the report in Report Builder, you can check out the below url for more details  –

Designing Reports in Report Designer and Report Builder 3.0 (SSRS)

Enjoy Reading. I will come back with more topics on report designing soon. bye for now.

Quit, Break, SKIP, EXIT

One of my student asked the following question few days back and I just tried to answer them in simple language. You may already know those answer right.

“can u please tell me the diff. in quit/break/skip/exit in NAV & how to use it properly……..”

Just to answer your question –

1. Quit 

Quit can only be used in Report, Dataport or XMLport. (Like Currreport.quit). It quits (come out from) the report or dataport or XMLPORT. If some processing of data happened before the quit statement, all of those data manipulations will be reversed (rolled back).

2. Break

Break can be used in 2 places –

a. in any loop (repeat..until) – This statement will break the loop and come out of the loop without further processing. All the data manipulation before this statement will remain intact.

b. In a report or dataport or XMLport. This statement will take you out from any trigger (like on prereport, Onpresection etc)

3. SKIP 

SKIP is only used in Report / Dataport / XMLPORT. This statement skips the iteration of a dataitem.


EXIT normally used in functions / triggers to return a value. (say a function returns a numeric value –

Myfunction(integer A, Integer B) Integer—



Hope the above answer helps you. I will try to send a more detailed answer to you (with example) soon. Keep writing me your problems and ask ur freinds to send their problems to me too.

You can also send me a mail to

Navision – How to find out Square Root / Cube Root?

We all know how to raise a number to the power n. Use the powerful nummeric function ‘Power’.NewNumber := POWER(Number, Power);
So Power(4,2) will result in 16.But how to find out the roots (square, cuber or nth root)?

Simple use the same Power function – And just change the ‘Power’ parameter of the function.

So to find out the square root of say 16, use

Power(16,1/2); This will result in 4

to find out the Cube root of say 8, use

Power(16,1/3); This will result in 2.

to find out the nth root of any number just use –

NewNumber := Power(Number,1/n);

How to indent multiple lines of code in Navision

What to do if you need to indent several lines of Code (Just because youmade the changes in code lately) in any Navision Object? Will you do it manually one line at a time?
Don’t despair. There is a simple way to do it –
To indent several lines of code, select those several lines and press TAB. The code indents with two spaces to the right, every time that TAB is pressed.
To indent several lines of code to the left, select those lines, and press SHIFT+TAB. This indents the code with one space to the left, every time that SHIFT+TAB is pressed.
Block indentation enables developers to indent several lines of code in only three keystrokes (one for highlighting the code and two for pressing SHIFT and TAB.)

How to Send SMTP mail from Navision Application

2 Steps to use it –
1. Setup the SMTP mail in Navision.
2. Use the functions avaliable in Codeunit 400 (SMTP Mail)
1. Setup the SMTP mail in Navision:
Go to Administration> IT administration > General Setup > SMTP Setup. The following screen will open –
You need a SMTP server address (IP or link). I have used my office SMTP server. If your SMTP server permits anonymous mailing, you can choose authentication as ‘Anonymous’ where you don’t need to mention any user id and password.
If your SMTP Server does not allow anonymous mailing, you need to choose authentication as ‘Basic’ and need to mention one valid User id and Password.

2. Use the functions available in Codeunit 400 (SMTP Mail) :

Once the setup is done, you can start mailing using the functions available in SMTP mail codeunit.
a) Take a new form and take a command button on it. On clicking of that button the mail will be send (Just for the example)
b) Take a global variable ‘SMAIL’ of data type ‘Codeunit’ and subtype ‘SMTP mail’ codeunit. This will give you the access to the functions available in that codeunit.
c) Now the actual code. Write the following code on ‘On Push’ trigger of the command button
SMAIL.CreateMessage(‘Snehanshu’,’’,’’,’Warning – Inventory’, ‘Item 50005 has a inventory below minimum inventory level’,FALSE);
[Syntax for the Createmessage function – Createmessage([sender’s name] ,[sender’s id],[recipient’s id or ids],[subject] ,[body line] ,[html formatted or not]]
SMAIL.AddAttachment(‘d:Sales Invoice.xlsx’);
MESSAGE(‘mail send’);
That’s it. Now click on the command button, and the mail will be sent to the recipients.
1. There can be multiple recipients. Just put them as comma separated text in the recipient parameter.
2. You can add more body lines using ‘AppendBody’ function.
3. You can also mark a CC or BCC copy of the mail using ‘AddCC’ ‘AddBCC’ functions.
If you are not sure about the SMTP server, just search in google how to use, rediffmil, Gmail or Hotmail or any other mailing system as your smtp server.

Do we know all about Default Dimensions? How to make a dimension Code Mandatory for all the the accounts in Chart of Accounts

Simple. Open Chart of Account, Select all the accounts there, Click on Account > Dimensions > Dimensions-Multiple. Choose the dimensions you want to make mandatory for the accounts and mention ‘Code mandatory’ in ‘Value Posting’ field. That’s it.That’s the most common answer you will have if you ask somebody how to make a dimension mandatory across all the accounts in Chart of Account. This common answer is the most common mistake functional consultants make during implementation. Yes, the common answer is not at all right answer.The above described method of making a dimension mandatory is only valid to make a dimension mandatory for a set of accounts only. Not for entire all the accounts of Chart of accounts.

You may argue – Why not? I am selecting all the accounts from Chart of accounts and making a dimension mandatory for them. And it works.

But think again. Think about a situation where you are creating a new account in Chart of Account.
The dimension you made mandatory for rest of the accounts will not be readily become mandatory for this new account.
So you have to make that dimension mandatory for this new account manually following the same method. If you forget, it can be a disaster waiting for you.

Rather the right method of making a dimension mandatory across all the accounts is much simpler and full proof (foolproof as well). Use the ‘Account type default Dim.’ feature. Its available in the Dimension window itself.

Open the Financial Management > General Ledger > Setup > Dimension.
Select The Dimension you want to mandatory across all accounts
Click Dimension > Account Type Default Dim.
Mention the table no. behind the Chart of Account (That’s Table no. 15)
And mention that it’s ‘Code mandatory’ in the ‘Value Posting’ field.
And this will ensure that the particular dimension is mandatory for entire set of records of te table no. 15 (nothing but the Chart of Account). And in future, any new accounts created in charts of accounts will be automatically included in that mandatory list.
This is the way you can make a dimension mandatory for an entire type of account. For example, the customer account, Vendor Account, Item Master etc.
Reblog this post [with Zemanta]

Dimension, Shortcut Dimension, Global Dimension – Confused?

People often gets confused about the terms used to describe dimensions. – Dimension, Shortcut Dimension, Global Dimension – are they same or what? Why we need so many different dimensions?

To understand the concept you need to go back to history of Navision and also need to understand the basic concept of Dimension. Let me try to elaborate it.

Dimension: Dimensions are nothing but parameter for your analysis of data. In other words, they are additional information attached to your transactions and you can analyse / summarize your transactions on the basis of those parameters. Say, you want to analyse your fuel expenses on the basis of Car no. So you need to define a dimension called ‘Car’ and put all the car nos in the dimension value list.

Similarly, if you need to analyse telephone expenses on the basis of Telephone nos or travel expenses on the basis of employee nos then, you will define Telephone and Employee Dimensions and list down the dimension values for those dimensions. So at the end you can have a list of dimensions & their values as below:

— Car — 1001 — WB 300356

— 1002 — UP5005333

— 1003 — DEL678932

— Tel — 98444320 — Ashish Banerjee
— 87909098 — Snehanshu Mandal
— Emp — 1001 — Snehanshu Mandal
— 1002 — Vinay Iyer
— 1003 — Shridhar Varasala

You can define the dimension in Navision from ‘Financial Management > General Ledger > Setup > Dimensions > Dimension’. And then define the respective dimension values.

This way you can define any no of dimensions and attach any no of dimension values while entering any transaction in the system.

Now that’s was Dimension. So what is global dimension? Lets go back few years down to Navision history.

There was time when Navision didn’t have the facility to attach unlimited no of dimensions to transactions. Instead it had only 2 fixed dimensions with each transactions – Department & Project. And to attach these 2 dimension with each transactions, Navision had created these 2 fields in all the transaction tables (e.g in 81 – Gen. Journal Line, 36 – Sales Header, 37 – Sales Lines, 38 – Purchase Header, 39 – Purchase Header and so on). See the figure below.

 Now you can’t just keep on adding new fields in each transaction table to achieve unlimited no of dimension attachment feature. So Navision started storing dimension information attached to different transactions in 2 separate tables (Journal Line Dimension – for storing dimensions attached to all journal transactions, Document Dimension – for storing dimensions attached to all document type of transactions). So Navision came up with a different method of storing dimension values attached with transactions.
What happened to the 2 fields present in all transaction tables? To reuse these 2 fields, Navision came up with a concept called ‘Global Dimensions’. So 2 dimensions from your dimension master can be defined as Global Dimension and their values can directly be attached with any transaction (in those 2 fields present globally – They automatically take the caption of global dimension defined and displayed accordingly to users – using ‘CaptionClass’ property). Just because they are present in all the transaction tables, these dimensions make it easier to take out reporting based on these 2 dimension and helps you in easy data entry. Ideally they are the most commonly used dimensions across in Navision Company.
So global dimensions are nothing but ordinary dimensions. Only thing they are globally present in the system and helps in data entry (dimension attachment) and reporting on most commonly used dimensions in a company.
But if you are going to attach more than 2 global dimensions in transactions, then the very attachment of dimension process is slightly lengthy. I mean you need to click on the transaction line > click on button ‘Line’ > Dimensions > Select the dimension code and dimension value.
Can we make it little easier for data entry where more than 2 global dimensions you need to attach to transaction? Off course we can. Use the concept ‘Shortcut Dimensions’
Shortcut Dimensions: There can be 8 dimensions displayed directly on any tabular transaction form (Journal lines or Purchase Lines, Sales Lines etc) just to facilitate the data entry. Remember, these dimension will not be present directly in the table but only displayed in the form. They are shortcuts to 8 different dimensions. So that you don’t need to go for the lengthy dimension attachment process. That’s why the name came ‘Shortcut Dimension’. And the 2 global dimensions automatically gets assigned as first 2 shortcut dimensions. (Check out the General ledger setup).
See the screen above (General Journal) and you will find there are 8 dimensions present (coloured columns). These are 8 shortcut dimensions. First 2 are global dimensions (directly present in the Gen. Journal Line table – the transaction table used here) coloured green are automatically became first 2 shortcut dimensions. Rest 6 columns are just displayed in the form only to facilitate the data entry (not present in the Gen. Journal Line table). If you enter some values in those columns, system will insert the relevant dimension and dimension values in the journal line dimension table for the transaction. If you enter values in first 2 shortcut dimensions, they will be inserted in the global fields present in the current transaction tables as well as the journal line dimension table.
That’s the funda of Dimension, Global Dimension and Shortcut Dimension. Hope i am able to clear the idea a little bit. If you want to discuss it further, do send me your comments or simply fire a mail to me (
See you in next post.

What is No. Series Relationship?

I got surprised when i discovered that so many people working in Navision for quite some time doesn’t understand No. series Relationship feature.
So what is No. Series Relationship?

Say you want to generate different invoice nos based on to where (geography) you are selling your service / material. So your domestic sales can have invoice nos which is different from invoice nos of export sales.

Now to implement the above feature, you need to use at least 2 no. series for invoice numbering? But in Sales & Receivables Setup’s Numbering tab, you have provision of mentioning only one no. series for Sales Invoice nos. how to resolve this?

You can go for some customisation or simply use the No. series relationship.

No. Series Relationship is a feature in Navision which helps you to group multiple no. series together and use it for one document no. Take an example of a sales Invoice. This feature will make 2 (or more) no. series related to each other and both can be used for the sales invoice nos.
Lets do it in Navision.
Create 2 no. series S-INV and S-INV EXP. First one for the domestic Sales & Second one for Export Sales.

Now relate the second no. series (S-INV EXP) with the first one with no. series relationship. To do that, select the seclect the S-INV in no. series window and click on the menu button series -> Relationships. Select the second no. series (P-INV EXP) in this window. Close it.
Your relationship between the 2 no. series is done. Now to use these no. series for sales invoice nos, you need assign it to sales & Receivables Setup.

Open Sales & Receivables Setup and go to the numbering tab. Choose the first no. series (P-INV) in the Invoice Nos.
Now you are ready to use both the no. series to generate the Sales Invoice nos. To test it –
Open the sales Invoice Window (Sales & Marketting -> Order Processing -> Invoices) and press F3 to create a new Sales Invoice. Don’t tab away from the no. field. Now click on the assist edit button (the 3 dot button) next to No. field and you will find system is suggesting both the no. series to you. Select any one series (depending on what type of Sales invoice – Domestic / Export you are creating) and a new no. document no will be generated.
So, you have the option of using 2 no. series (or more) for one single document no. You can extend this functionality further by automating the selection of no. series own the basis of USER ID.
Experiment on it. See you in next post.

Disabling F4 – Stopping inadvertent Delete

Can we disable the F4 function button in Navision?

Few years back, I had a situation in one of my implementation, where users used to delete the sales order inadvertently by pressing F4 (Their intention was to create a new order by pressing F3).

Now how to stop it. I had solved it in a very simple way by creating a new dummy menu item in one of the menu button present in the order window and assigning F4 as the shortcut key to that menu item. It just overridden the default F4 functionality (delete function). Here is how i did it –

Open the sales order form (Form 42) in design mode. Add a new menu item to the menu button ‘Order’ present in that form. Caption it as ‘Dummy’ and assign the shortcut key F4 to it.

Don’t write any code for this menu item. So nothing will happen if somebody clicks on it.
Now if somebody press F4, system calls that menu item ‘Dummy’ instead of default delete call and nothing happens for F4. And your default F4 is disabled.
Do you have a better solution? Do write to me.