Estructuras de Datos

Enums

Dificultad: 2/10

El tipo Enum es la evolución moderna del antiguo tipo Option. Su función es la misma: definir una lista cerrada de opciones para un campo. Sin embargo, aporta ventajas clave frente a Option:

Enum vs Option

Característica Option Enum
Es un objeto independiente
Reutilizable en varias tablas
Extensible desde otras apps
Posiciones explícitas

Estructura base

AL
enum <id> "<nombre_enum>"
{
    value(<posicion>; "<valor>") { }
    value(<posicion>; "<valor>") { }
    value(<posicion>; "<valor>") { }
}

Para usarlo en un campo de tabla:

AL
field(<id>; "<NombreCampo>"; Enum "<nombre_enum>") { }

Ejemplo: Categorías de libros

AL
enum 50100 "Categoria Libro"
{
    value(0; " ") { }
    value(1; "Novela") { }
    value(2; "Ensayo") { }
    value(3; "Infantil") { }
    value(4; "Tecnico") { }
}

Aplicado a un campo en una tabla:

AL
table 50100 "Libro"
{
    fields
    {
        field(1; "No.";       Code[20])              { }
        field(2; "Titulo";    Text[100])             { }
        field(3; "Categoria"; Enum "Categoria Libro") { }
    }
    keys
    {
        key(PK; "No.") { }
    }
}

Referenciar un valor en código AL

AL
if Rec.Categoria = Rec.Categoria::Infantil then
    Message('Este libro es para el público infantil.');

💡 Tips

  • Deja siempre un valor 0 con texto vacío " " como estado "sin seleccionar".
  • Usa huecos entre posiciones (0, 10, 20...) si prevés que el enum crecerá.
  • El nombre del enum va entre comillas si contiene espacios: Enum "Categoria Libro".
Volver a Teoría