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

  1. 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

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete

Post a Comment

Let me know your comments below. I'll try my best to answer your comment

Popular posts from this blog

Something went wrong. An Error occurred - Error Resolution

Introduction: With the installation of NAV 2018 or BC On-premise, I have observed that when creating New Server Instance and New WebServer Instance, you will get the error 'Something went wrong. An Error occurred '. I referred to the community questions below but didn't find my resolution. Hence, I decided to write this blog. Pre-requisites: Microsoft Dynamics Business Central - On-Premise / NAV 2018 Understanding of Business Central Authentication  Books & References: https://community.dynamics.com/nav/f/microsoft-dynamics-nav-forum/261301/nav-2018-web-client-an-error-has-occurred https://community.dynamics.com/business/f/dynamics-365-business-central-forum/421987/error-something-went-wrong-an-error-has-occurred-azure-ad-tenant Demonstration: 1. Creation of NAVServerInstance: In order to create NAVServerInstance, you can either add the Server Instance through Business Central Administration or Powershell command. Add Instance - Business Central Administration Add Insta...

How to resolve 'Edit in Excel' issues

  Introduction: As you know that D365 BC offers Edit in Excel functionality. But manipulating or customizing such a  standard functionality is difficult as there is not much control available. Hence, solving issues is also a difficult task. I will be resolving the issue for this specific issue, however, the debugging steps are similar. Pre- requisites : ODATA V4 Connectivity tool for Webservices Microsoft Dynamics 365 Business Central Books & References: https://community.dynamics.com/business/f/dynamics-365-business-central-forum/448226/issue-with-excel-add-in/ Demonstration: The way Edit in Excel works is that for a given page a Webservice is created adding PageID and Page Name. Hence, there are some Webservice connectivity checks in place to validate. 1. Edit in Excel Custom Action on the page: If you are adding Edit in Excel Action on the page, please ensure that you are providing appropriate PageName and Filter criteria as Webservice is using these parameters Refer Ed...

Installing LS Central - POS on local machine

Introduction: In this blog, I'm attempting to capture the LS Central - POS installation process on Local Machine. This blog has nothing to do LS Central - Server Setup for POS. LS Retail / LS Central - On Premise POS Pre- requisites : LS Central Installed on Server SSL Setup on LS Server (https://www.olisterr.tech/2020/03/how-to-setup-navuserpassword-with-ssl.html) LS - POS Installer Business Central - On Premise Installer Demonstration: Once your LS Retail / LS Central POS is setup on the main server. Just prior to Go-Live, you will actually have to install this POS on multiple systems and connect these POS to the main server with LS Retail / LS Central. 0.Preparation: Prior to actually installing Business Central On-Premise Windows Client, you need to make sure that you're able to ping the target with the correct Port number. For this I made use of PS-Ping tool.  PSPing - IP Address: Port If you're unable to PS-Ping the correct IP with Port number, simply check the Advan...