Skip to main content

Enum Object in Business Central - How to create and how to extend!

Introduction:
Since the dawn of Business Central Era (2nd April 2018 - Today), there are many new data types introduced by Microsoft.
One such data type is Enum(Enumeration). Essentially, what enumeration is having a single select value with multiple options at a given time!
Well, I know what your thinking what about the 'Option' data type.
Anyways, enough of talking let's just dive in!

Disclaimer: The knowledge in this blog is true and complete to the best of authors and publishers knowledge. The author and publisher disclaim any liability in connection with the use of this information.

Pre-requisites:
Microsoft Dynamics Business Central (SaaS or On-Premise)
VS code with AL Language extension

Code:
1. Enum as an Object:
Just like Tables and Pages, Enum behaves like an Object.
Enum Object
Note that Extensible means that the Enum Object can be extended in another module. By default, this property is set to TRUE.


Enums created in a module(App), cannot be extended in the same module 

Enums and Enum Extensions behave differently. They follow a different number sequence altogether.
Enum and Enum Extension behaving different type of objects

2. Getting List of Enums already present in Business Central. 
As of now, there are no Enums present in Business Central (Out-of-the-box) as there were no suggestions.



3. Using Enums in Tables, Pages, and Codeunits.
Enums in Tables:

Enum in Pages:


Enum in Codeunits:

4. Typecasting of Enums to Options:
It is observed that there are no compile-time errors occurring whenever we equate Enums to Option. Vice versa is also applicable

When the Option Members are not the same as Enums, there are no compile-time errors
Option Member missing in Option with respect to Enum

Even after the Option Member is missing, the Enum value can be used. Which means that  Enums area treated as 'Strings' during typecasting.
Note: Some table fields share options that are semantically identical. In those cases, the EnumTypeId and EnumTypeName must be the same across all the fields. There is no design or runtime check for collision of IDs, but loading generated symbols into the compiler will show collision errors. (Copied from docs.microsoft.com)

5. Pros and Cons:
ProsCons
1. You get access to Enum globally in all tables/pages/variables etc. Thus ensuring uniform implementation. 1. If you want a slightly modified Enum, you cannot make a change to existing Enum as it might change wherever referenced.
2. Extensible whenever needed.2. Cannot create an extension in the same module.

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 …