En ABAP clásico, cuando necesitas asignar un valor diferente según una condición, usas un IF:
IF lv_edad >= 18. lv_categoria = 'Adulto'. ELSE. lv_categoria = 'Menor'. ENDIF.
Son 4 líneas para algo muy sencillo. Con el operador COND puedes escribir lo mismo en una sola línea.
¿Qué es COND?
COND es un operador que te permite asignar un valor diferente según se cumpla o no una condición, todo en una sola expresión. Es como un IF de una línea.
| Con IF (clásico) | Con COND (moderno) |
|---|---|
IF ... ELSE ... ENDIF. | COND #( WHEN ... THEN ... ELSE ... ) |
La sintaxis es:
DATA(resultado) = COND tipo(
WHEN condicion1 THEN valor1
WHEN condicion2 THEN valor2
ELSE valor_por_defecto
).
| Pieza | ¿Qué significa? |
|---|---|
DATA(resultado) | Declara una variable para guardar el resultado |
COND tipo | Operador COND que devolverá un valor del tipo indicado |
WHEN condicion THEN valor | Si se cumple la condición, devuelve este valor |
ELSE valor | Si no se cumple ninguna condición, devuelve este valor |
Puedes poner tantos WHEN como quieras.
Ejemplos prácticos
Ejemplo básico
Sintaxis vieja:
IF lv_edad >= 18. lv_categoria = 'Adulto'. ELSE. lv_categoria = 'Menor'. ENDIF.
Sintaxis nueva:
DATA(lv_categoria) = COND string(
WHEN lv_edad >= 18 THEN 'Adulto'
ELSE 'Menor'
).
Ejemplo con múltiples condiciones
DATA(lv_nota_texto) = COND string(
WHEN lv_nota >= 9 THEN 'Sobresaliente'
WHEN lv_nota >= 7 THEN 'Notable'
WHEN lv_nota >= 5 THEN 'Aprobado'
ELSE 'Suspenso'
).
Cuándo usar COND
| Casuísticas | ¿Usar COND? | Ejemplo |
|---|---|---|
| Asignar un valor según una condición | ✅ Sí | COND #( WHEN x > 0 THEN 'Si' ELSE 'No' ) |
| Asignar según múltiples condiciones (2-4) | ✅ Sí | COND #( WHEN nota >= 9 THEN 'SB' WHEN nota >= 7 THEN 'NT' ... ) |
| Ejecutar varias acciones (escribir, modificar, etc.) | ❌ No, usa IF | IF ... WRITE ... ENDIF. |
| Lógica con más de 5 condiciones | ❌ No, usa CASE | CASE lv_valor. ... ENDCASE. |
El operador COND es perfecto para asignar un valor según una o varias condiciones, todo en una sola línea y de forma muy legible. Si solo necesitas asignar un valor y la lógica es sencilla, USA COND. Para acciones múltiples o lógica muy compleja, sigue usando IF.

