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

Managing with Multiple Legal Entity Data in Microsoft Dynamics NAV / Business Central

Problem Statement:
Well, my client is a Trader of Oils & Fatty Acids and has multiple legal entities to perform various sets of operation on the TRUCK-LOAD(a.k.a. Load). One legal entity creates the Load and schedules it, while another manages with the freight requirements. The information is not shared between both the legal entities. Thus, we need to store the data separately.

Pre-requisites:
For Microsoft Dynamics NAV:
- C/Side Development Environment
- Multiple legal entity(Company) setup

For Microsoft Dynamics Business Central:
- Visual Studio Code
- AL Language Extension
- Multiple legal entity(Company) setup

Solution Design:
1. Create two Tables say LoadCompany1 and LoadCompany2 with same fields
2. Set DataPerCompany property is to TRUE on both the tables.
3. In NAV/ BC, there are common tables but the data into the tables are different. Thus, the system has to manage different version for a single table based on an entity that you're currently working on.
In this case, I n…

Workaround to XMLPort not supported in Business Central

Problem Statement:
While I was working on some custom EFT project, I thought of using XMLPort as it is the safest and easiest method to get the data successfully directly from the tables.
Unfortunately, XMLPort is not supported to work on WebClient and I was stuck with writing code to do exactly what XMLPort would do.
Also, another issue that Business Central d extension support is using File methods i.e Open, Write, Close, etc.









Introduction:
In Business Central even if you're not given explicit rights to deal with files directly there are streams using which we can be downloaded as files. Enough of introduction, let's start working now!

Books & References:
https://docs.microsoft.com/en-us/dynamics-nav/feature-limitations-of-the-microsoft-dynamics-nav-web-client
Pre-requisites:

VS CodeAL Language ExtensionMicrosoft Dynamics Business Central.
Demonstration:
1. Creation of File Contents:
In this case, I've simply text string 'Hello World!'
Although it's perfectly po…