Base
Enums come in handy for categorizing data. One way of categorizing is to create
a related table, such as item groups, which is used for grouping inventory
items.
However, if you only need a fixed number of categories or the application users are not able to define the categories, you can use a base enum, such as Item type, used for defining the type for inventory items.
However, if you only need a fixed number of categories or the application users are not able to define the categories, you can use a base enum, such as Item type, used for defining the type for inventory items.
- A base enum can have a maximum of 255
entries. A good example for multiple enteries in a base enum is LedgerTransTxt.
But in general there will be very few entries.
- The value of a base enum is stored in
the database as an integer value. Entry values starts by default from zero
and are consecutively numbered. The property EnumValue will
show you the number stored in the database for an entry.
- We can also manually enter a
particular number for an entry in base enum, this can be done if the base
enum property UseEnumValues is set to Yes.
- System enums are located in the AOT
under System Documentation/Enums, an example for system enum is ‘TableGroup’ represents the entries of the
table property TableGroup.
- To refer to a base enums entry in code,
the name of the base enum is entered followed by a double colon. By
pressing the second colon lookup will show the available entries.
static
void DataDic_BaseEnum(Args _args)
{
InventTable
inventTable;
;
while
select inventTable
where
inventTable.itemType == ItemType::BOM || inventTable.itemType ==
ItemType::Service
{
info(inventTable.itemId);
}
}
Here all items of Invent types BOM and Service
are fetched.
Instead
of checking whether the field itemType is equal to one of the enum entries specified,
‘greater than’ or ‘equal to’ the item type BOM can also be used. However, this
is not recommended as it makes the code more difficult to maintain as the condition
will not be defined and result will vary with every new data record entry.
while select inventTable where inventTable.itemType >=
ItemType::BOM
We could also use the base enum entry numbers instead, but it would make your code more difficult to read and maintain.
We could also use the base enum entry numbers instead, but it would make your code more difficult to read and maintain.
Note: The first
entry of a base enum normally has the value zero - which will return false, if
the first entry is validated in an if-expression. This is also the reason why
fields of the type enum should not be mandatory as the first entry of an enum
would be considered as not valid.
No comments:
Post a Comment