EJERCICIOS · ENUMS
Enums en AL
Dificultad: 2/10Ejercicio 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
50100y 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 primervalue. - Crea un segundo archivo
RentalStatusExt.EnumExt.alque extienda el Enum"Rental Status"y añada el valor50: "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 tipoEnum "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 bloqueifque compruebe si el campo"Estado"es igual aAlquilado. - Si se cumple la condición, muestra el mensaje: 'Esta máquina está actualmente alquilada.'
- Añade un
elseque 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".