COND Operador: Condiciones en una sola línea (sin IF)

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 tipoOperador COND que devolverá un valor del tipo indicado
WHEN condicion THEN valorSi se cumple la condición, devuelve este valor
ELSE valorSi 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 IFIF ... WRITE ... ENDIF.
Lógica con más de 5 condiciones❌ No, usa CASECASE 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.