Skip to main content

Automatically adding dimensions from Shortcut Dimension from Excel Import in Microsoft Dynamics NAV / Business Central

Problem Statement:
I have a requirement where the contents of the General Journals are to export to Excel and also can create new entries by importing the same Excel file as well.
A major troublemaker is the dimensions as only Dimensions 1&2 ate stored in tables and can be validated easily but 3-8 are set at run-time through variables on the page.
In this blog, I'll be attempting to resolve how to automatically apply dimensions from 3-8 using the code.

Pre-requisites:
  • VS Code
  • AL Language Extension
  • Functional knowledge of  Dimensions
  • Microsoft Dynamics NAV /  Business Central

Solution:
1. Understanding how dimensions work technically:
Any dimensions that are inserted in an entry in the system are validated to be stored in the Dimension Set Entries table.
Dimension Set Entries table of which Dimension Set ID is set on the Table.
This Dimension Set Entry ID is stored on the entries to be used as a reference. For instance, if we want to Apply Dimensions to General Journal Entries, the Dimension Set Entries ID is stored on General Journal Lines Table.
Dimension Set ID on General Journals


Out of 8 total dimensions, 2 dimensions are stored on the table. These 2 dimensions are also known as Global Dimensions.


2. Hack into Business Central:

When importing, the entry either consist of a Dimension Set ID. If the Dimension Set ID is set to 0 which means no Dimension is applied yet.

To apply the dimension to the entry using the code, we can use the standard available code
ValidateShortcutDimCode(Dimension_No, Dimension_Value);
Dimension_No: The position of the Dimension.
Dimension_Value: Dimension Value that is to be applied.

For Example:Rec_GenJnl.ValidateShortcutDimCode(3, SD3);

When Exporting the Dimension into an Excel Format, you can use the Dimension Set ID present on the Entry to lookup into Dimension Set Entries Table.

To Export the Dimensions using the code, you can use the following code:

Clear(Rec_DimensionSetEntry);
Rec_DimensionSetEntry.SetRange("Dimension Set ID", Rec_GenJnl."Dimension Set ID");
Rec_DimensionSetEntry.SetRange("Dimension Code", Rec_GLSetup."Shortcut Dimension 3 Code");
IF Rec_DimensionSetEntry.FindFirst() then
MESSAGE(Format(Rec_DimensionSetEntry."Dimension Value Code"));

Output:
After Importing from Excel:

After Exporting to Excel:

Conclusion:
Thus, using standard code present in Business Central, we can Import dimension details from other sources such as Excel.
I also learned about Dimension Set Entry table and how this is used to store the data on the Entry table using Dimension Set ID.
Overall this is a big step where I learned how to import dimensions which are more than the 2 Global Dimension.

Thanks for taking a keen interest in reading my blog.

Comments

Popular posts from this blog

TIP: Working with changing Field DataTypes and Deleting fields in Business Central

Introduction:
Imagine a scenario where as per the requirements provided by your clients, you have set up the Database structure in NAV/Business Central.
Then comes a requirement in Phase 2 which completely redefines the database structure which was provided by you and you need to delete a few fields in a table and move it to another table.

Pre-requisites:
Microsoft Dynamics NAV
Microsoft Dynamics Business Central

Books & References:
https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/properties/devenv-obsoletestate-property

Solution:
1. In Microsoft Dynamics NAV, there was a flexibility to delete fields, tables, and keys and using  Force-Sync, you can directly delete the field, table, and keys from SQL Database.


2. Whereas in Microsoft Dynamics Business Central, you cannot delete the fields, keys, and tables.
In order to deploy this deleted change, you need to mention this field, table, and keys with Obsolete State Removed.


After you mention the field as…

How to actually use Profile Objects in Business Central

To 'Whomsoever This May Concern',
When I was working on a Production Deployment for one of my clients, I noticed that I could not create a Profile in Business Central Production Tenant. I was able to create new Profile in Sandbox.


Then I tried using configuration Package and modify the contents of 2000000178 Profile Table and as always configuration package blocked it.



There was no way of dealing with this other thancontacting Microsoft Support and this is the answer I get from a Support Engineer

I was on the verge to give my clients a link pointing to a specific page i.e https://businesscentral.dynamics.com/?page=50150

After being a little creative, I figured out that developing profile objects might help.

And this resolved this issue for me.




Permission Issues on Posting after deploying Extension in Business Central Production Tenant

Introduction:
Issues when you deploy your app in Business Central Production VS Business Central Sandbox. Let us what are the implications of the statement.
In my last blog () I have already pointed out the difference in Profile as to how can create new Profile in Business Central Sandbox but the same is not possible in Business Central Production.
Pre-requisite:
Microsoft Dynamics Business Central (SaaS)
Demonstration: 1. I was working with General Journals after deploying the App in Production Environment. Suddenly during posting I go this error.


2. To Verify this issue is not of Permission Set, I gave the User SUPER Permission and tried again.

I got the same error despite giving SUPER Permission. Again the same the error, so I checked the Effective Permissions.

I noticed that Table G/L Entry has an Indirect Permission. I replicated the same Production in Sandbox. But I didn’t find any issue like this.

3. Moreover, I noticed that when I uninstall the App, the Production works perfectly and …