Enum Data Type

Enum is a new data type in the Business Central introduced with the very first version of Business Central. Since then many changes have been done to them and currently, they are usable instead of Option data type without any hesitation.

In compare to Option, Enums have more benefits and moreover, they can be shared across more fields without the need to specify them again and again for every field.

The main advantages are

  • Single specification of options across multiple fields.
  • Extensible (if allowed)
  • Better readability if more values are defined

Example

Enum looks like any other object in AL (see below). In the property section of the object, there is only one interesting property – Extensible. By default, the value is true; however, if we don’t want the enum extensible from another extension, we can change the value to false.

In the body part, we define values. For each value, we can define ID, Name and Caption. The major difference from Option Data Type is how we define ID. In option, we had to put as many commas as we needed to get the ID, in Enums, we just write the ID as a number.

 enum 50100 "TKA My Enum"
 {
    Extensible = true;
    
    value(0; " ")
    {
        Caption = ' ';
    }
    value(1; "TKA First Option")
    {
        Caption = 'First Option';
    }
    value(10; "TKA Second Option")
    {
        Caption = 'Second Option';
    }
 }

Usage

Usage of Enum is very similar to Record/Page/… variables. See the difference from Option declaration.

 table 50100 "TKA Table"
 {
    ...
    fields
    {
        ...
        field(100; "TKA Option Field"; Option)
        {
            OptionMember = " ","TKA First Option",,,,,,,,,"TKA Second Option";
            OptionCaption = ' ,First Option,,,,,,,,,Second Option';
        }
        field(101; "TKA Enum Field"; Enum "TKA My Enum")
        {
        }
        ...
    }
    ...
 } 

1 thought on “Enum Data Type

  1. Pingback: Interfaces in AL (part 3) | Microsoft Dynamics 365 – Ing. Tomáš Kapitán

Leave a Reply

Your email address will not be published. Required fields are marked *