SAP ABAP - Declaración de control de casos
La instrucción de control CASE se utiliza cuando necesita comparar dos o más campos.
La sintaxis de la instrucción de control CASE es la siguiente:
CASE <field>.
WHEN <abc>.
<statement block>.
WHEN <def>.
<tatement block>.
WHEN <pqr>.
<statement block>.
......
......
......
WHEN <xyz>.
<statement block>.
WHEN OTHERS.
<statement block>.
ENDCASE.
Las siguientes reglas se aplican a una instrucción CASE:
No se pueden utilizar expresiones lógicas para el campo <campo>.
Las cadenas de campo utilizadas en la instrucción CASE se tratan como variables de tipo C.
El bloque de instrucciones que sigue a una cláusula WHEN se ejecuta si el contenido de los campos que se muestran en el <campo> es similar a uno de los campos <abc>, <def>, <ghi> hasta <xyz>.
Después de ejecutar todas las condiciones especificadas en la instrucción WHEN, el programa continúa procesando las instrucciones restantes después de la instrucción ENDCASE.
La cláusula WHEN OTHERS se ejecuta en un programa cuando el valor del <field> no coincide con ningún valor especificado en los campos <abc> hasta <xyz> de la cláusula WHEN.
Si se omite la cláusula WHEN OTHERS y el valor del <field> no coincide con ningún valor especificado en los campos <abc> hasta <xyz> de la cláusula WHEN, el programa continúa procesando las declaraciones restantes después de la declaración ENDCASE .
Diagrama de flujo
Ejemplo
Report YH_SEP_15.
Data: Title_1(10) TYPE C,
Title_2(15) TYPE C.
Title_1 = 'ABAP'.
Title_2 = 'Programming'.
CASE Title_2.
WHEN 'ABAP'.
Write 'This is not the title'.
WHEN 'Tutorials'.
Write 'This is not the title'.
WHEN 'Limited'.
Write 'This is not the title'.
WHEN 'Programming'.
Write 'Yes, this is the title'.
WHEN OTHERS.
Write 'Sorry, Mismatch'.
ENDCASE.
El código anterior produce la siguiente salida:
Yes, this is the title.