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

stlo said…
Hey, was rinding your post looking for a different answer.
Do you know if you can access the test of the selected enum in a list and pass it to something else as Text?

I have a list of 12 items in an Enum and would like to display it on a report.
I can see from your article that I can use a switch statement but that would require me to write a procedure that could possibly be re-used. Is it built in to the Enum?

The FromInteger Method on the Enum could possibly work but it does not seem to on my version 13

Thanks
Mahbuba Islam said…
Paperperhour research paper topics is one of the great way for research on any subject. It provides 1000+ research topic ideas for students. If you're looking a team, who will help you to writing a research paper, then please check out this website. Topics Hub .

Popular posts from this blog

Understanding and How to use APIs Business Central - 2

Introduction:
In my last blog post (Business Central API -1 ) on Creating API in Business Central, we discussed all the commonly used properties of the page, query, and controls like field and data-item. In today's blog, we will be diving deeply into the validation of the data passed through the API endpoint, how it enters into the source tables and is manipulated to be inserted/modified into single or multiple tables.
Also, I will be demonstrating how APIs are to be used.

Pre-requisites:
Microsoft Dynamics Business Central (SaaS)VS Code(https://code.visualstudio.com/download)AL Language Extension(https://tinyurl.com/yyvzxwkb)API V1 from Business Central On-Premise DVD
Books & References:
API V1 from Business Central On-Premise DVDAPI(V1.0) for Business Central (Click Here)API(Beta) for Business Central (Click Here)
Theory:
Understanding API in Business Central 1. BINDSUBSCRIPTIONS: Use to trigger IntegrationEvent for the Codeunit stated in parameters whenever the function calling BI…

Creating APIs in Business Central - 1

Introduction:
While writing a blog on Automated Testing in Business Central, I was going through sample apps provided by Microsoft and realized that the complexity is nowhere close to what examples Microsoft has provided on docs.microsoft.com. In this blog, I will try to explain how APIs work and how to be creative with the implementation. Also, an API which were in beta are finally out with version V1.0 in the April 2019 release let's see some important key things from development aspects.
This blog is going to be theoretical one kindly bear with me.


Pre-requisites:
Microsoft Dynamics Business Central (SaaS)VS Code(https://code.visualstudio.com/download)AL Language Extension(https://tinyurl.com/yyvzxwkb)API V1 from Business Central On-Premise DVD
Books & References:
API V1 from Business Central On-Premise DVDAPI(V1.0) for Business Central (Click Here)API(Beta) for Business Central (Click Here)
Solution:

Key Requirements:
API source table must have an Id(GUID) field per record for m…