Declaraciones CASE en consultas OPEN SQL usando ABAP 7.4

Declaraciones CASE en consultas OPEN SQL usando ABAP 7.4

Home » ABAP 7.40 » Declaraciones CASE en consultas OPEN SQL usando ABAP 7.4

Una de las nuevas características de ABAP 7.4 es la capacidad de usar sentencias CASE en
Consultas SQL abiertas. El siguiente código muestra un ejemplo de esto. En este ejemplo
hay un campo en una estructura local llamado ERNAM, y debe llenarse con
los literales “NOMBRE1”, “NOMBRE2” o “NOMBRE3” respectivamente, dependiendo del
contenido del campo de base de datos AUART (DocType).

DATA: ls_vbak TYPE vbak,

 ld_vbeln LIKE vbak-vbeln.

PARAMETERS: p_vbeln like vbak-vbeln.

CONSTANTS: lc_name1(5) TYPE c VALUE 'name1',
 lc_name2(5) TYPE c VALUE 'name2',
 lc_name3(5) TYPE c VALUE 'name3'.

ld_vbeln = p_vbeln.

SELECT vbeln, vbtyp,
 CASE
 WHEN auart = 'ZAMA' THEN @lc_name1
 WHEN auart = 'ZACR' THEN @lc_name2
 ELSE @lc_name3
END AS ernam
FROM vbak
WHERE vbeln = @ld_vbeln
 INTO CORRESPONDING FIELDS of @ls_vbak.
ENDSELECT.

SELECT vbeln, vbtyp,
 CASE
 WHEN auart = 'ZAMA' THEN @lc_name1
 WHEN auart = 'ZACR' THEN @lc_name2
 ELSE @lc_name3
END AS ernam
FROM vbak
WHERE vbeln = @ld_vbeln
 INTO CORRESPONDING FIELDS of @ls_vbak.
ENDSELECT

Hay que tener en cuenta que se debe poner un símbolo @ delante de cada variable o constante ABAP al usar nuevas funciones como CASE, para hacerle saber al compilador que no está hablando de un campo en la base de datos. Esto se llama «Escapar» de la variable de host. También es necesario poner comas entre los campos que está trayendo de vuelta de la base de datos y coloque la instrucción INTO al final. Este es el resultado de una nueva verificación de sintaxis «estricta» que entra en vigor cuando el compilador nota que está usando una de las nuevas características. De esta forma, SAP puede seguir siendo compatible con versiones anteriores.

¿Por qué usé esto como mi primer ejemplo? Seguro que has usado la declaración CASE sobre los datos luego de haberlos recuperado. Entonces, ¿qué hemos ganado o incluso colocando el CASE dentro de SELECT? Bueno, la declaración CASE  le ha permitido externalizar la lógica condicional a la base de datos, en lugar de realizar el CASE en el servidor de aplicaciones. Si no está familiarizado con la codificación ABAP en HANA, el cambio de paradigma de empujar la lógica hacia abajo en la base de datos de SAP HANA para que se procese, es nuevo, pero puede resultar en grandes mejoras de rendimiento. Si bien este ejemplo no es Específico de HANA, le presento el «concepto de empujar el código hacia abajo»
a la capa de base de datos. Algo en el pasado nos han dicho que evitemos. El El nuevo paradigma en ABAP es «Code-to-Data». Aprenderemos a crear VALOR al optimizando el backend DBMS (HANA).

Dejanos tu comentario: