La sentencia ENDSELECT se utiliza para cerrar un bucle iniciado con SELECT. Esta lección trata de explicarle cómo implementar esta instrucción.
- Sintaxis
SELECT result
FROM source
INTO|APPENDING target
[[FOR ALL ENTRIES IN itab] WHERE sql_cond]
[GROUP BY group] [HAVING group_cond]
[ORDER BY sort_key].
…
ENDSELECT.
- Efecto
En cada iteración de bucle, la instrucción SELECT asigna una fila o un paquete de filas a los objetos de datos especificados en el destino. Si se ha asignado la última fila o el conjunto de resultados está vacío, SELECT salta a ENDSELECT. Un cursor de base de datos se abre implícitamente para procesar un bucle SELECT, y se cierra de nuevo cuando el bucle ha terminado. Puede salir del bucle utilizando las mismas instrucciones que se utilizan para salir de los bucles LOOP. Si el conjunto de resultados totales se pasa al objeto de datos en un solo paso, no se abre un bucle y no se puede especificar la sentencia ENDSELECT.
- Aplicación práctica
En el programa ejecutable realizamos una lectura de la tabla de base de datos ZSPFLISA00001 obteniendo todos los registros en una tabla interna. La lectura la realizamos con la sentencia SELECT…ENDSELECT. En la lógica del bucle hacemos una conversión de millas a kilómetros. Al finalizar mostramos en la salida el contenido de la tabla interna utilizando el método estático DISPLAY de la clase estándar CL_DEMO_OUTPUT.
- Implementamos el código fuente.
- Ejecutamos el programa
- Notas
Si se utiliza la adición PACKAGE SIZE la sentencia SELECT abre un bucle, que debe cerrarse con ENDSELECT.
y que pasa en HANA con el SELECT ENDSELECT?? ES VALIDO SIGUE SIENDO RECHAZADO??
Que tal,
La sentencia es válida en las instalaciones S4/HANA, donde no puede usarse es en SQL Script para HANA.
Saludos.