EJERCICIOS · ENUMS

Enums en AL

Dificultad: 2/10
Ejercicio 01
Estructura base

Crea tu primer Enum

Objetivo: Practicar la sintaxis básica de un objeto Enum en AL definiendo una lista cerrada de estados.

Instrucciones

  • Crea un archivo llamado RentalStatus.Enum.al.
  • El Enum debe tener el ID 50100 y el nombre "Rental Status".
  • Añade los siguientes valores respetando la estructura value(<posición>; "<valor>"):
    0: espacio en blanco, 10: Disponible, 20: Alquilado, 30: En Reparación, 40: Retirado.
  • Fíjate en que las posiciones van de 10 en 10 para dejar margen de crecimiento.

Pista de Código

AL
enum 50100 "Rental Status"
{
    value(0;  " ")             { }
    value(10; "Disponible")    { }
    // Añade el resto de valores aquí...
}
💡 Recuerda: Deja siempre un valor 0 con texto vacío como estado "sin seleccionar". Usa huecos (0, 10, 20…) para poder insertar nuevos valores en el futuro sin romper el orden.
Ejercicio 02
Extensibilidad

Hazlo extensible

Objetivo: Entender la propiedad Extensible que diferencia a Enum de Option y que permite a otras extensiones añadir nuevos valores.

Instrucciones

  • Toma el Enum del Ejercicio 01.
  • Añade la propiedad Extensible = true; justo dentro de las llaves del Enum, antes del primer value.
  • Crea un segundo archivo RentalStatusExt.EnumExt.al que extienda el Enum "Rental Status" y añada el valor 50: "Vendido".

Pista de Código

AL — RentalStatus.Enum.al
enum 50100 "Rental Status"
{
    Extensible = true;

    value(0;  " ")          { }
    value(10; "Disponible") { }
    // ... resto de valores
}
AL — RentalStatusExt.EnumExt.al
enumextension 50101 "Rental Status Ext" extends "Rental Status"
{
    value(50; "Vendido") { }
}
💡 Recuerda: Sin Extensible = true el compilador rechazará la enumextension. Es una de las grandes ventajas de Enum frente a Option.
Ejercicio 03
Uso en tabla

Aplica el Enum a un campo de tabla

Objetivo: Usar el Enum "Rental Status" creado anteriormente como tipo de dato de un campo en una tabla AL.

Instrucciones

  • Crea una tabla 50100 "Maquinaria".
  • Añade los campos: "No." (Code[20]), "Descripcion" (Text[100]) y "Estado" de tipo Enum "Rental Status".
  • Define la clave primaria sobre el campo "No.".

Pista de Código

AL
table 50100 "Maquinaria"
{
    fields
    {
        field(1; "No.";         Code[20])                 { }
        field(2; "Descripcion"; Text[100])               { }
        field(3; "Estado";      Enum "Rental Status")    { }
    }
    keys
    {
        key(PK; "No.") { }
    }
}
Ejercicio 04
Referenciar valores

Usa el Enum en código AL

Objetivo: Practicar la sintaxis Rec.Campo::Valor para comparar el estado de un registro y reaccionar en consecuencia.

Instrucciones

  • Dentro de un codeunit o trigger de la tabla "Maquinaria", escribe un bloque if que compruebe si el campo "Estado" es igual a Alquilado.
  • Si se cumple la condición, muestra el mensaje: 'Esta máquina está actualmente alquilada.'
  • Añade un else que muestre: 'La máquina está disponible o en otro estado.'

Pista de Código

AL
if Rec.Estado = Rec.Estado::Alquilado then
    Message('Esta máquina está actualmente alquilada.')
else
    Message('La máquina está disponible o en otro estado.');
💡 Recuerda: La sintaxis de acceso al valor es siempre Rec.<Campo>::<Valor>. Si el nombre del valor contiene espacios, ponlo entre comillas: Rec.Estado::"En Reparación".
← Volver a Ejercicios