✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
3.6. - Instrucciones SQL: La sentencia SELCT
3.6.1. - La sentencia SELCT
Existen un conjunto de sentencias que se utilizan para acceder a las bases de datos. La principal sentencia es “SELECT”, que tiene la siguiente sintaxis:
SELECT -> Se colocan los campos que se quieren recuperar
FROM -> Se coloca la tabla origen de donde se sacan los datos
INTO -> El destino donde serán alojados los datos
WHERE -> Condiciones de búsqueda
Para obtener todos los registros de una tabla, la siguiente sentencia:
Ti_usuarios es una tabla interna del mismo tipo que la tabla ztabla_usuarios. El asterisco indica que se obtendrán todos los campos de la tabla. La cláusula “INTO TABLE” se utiliza cuando el resultado de la consulta se guarda en una tabla interna.
En caso de existir registros en la tabla ztabla_usuarios, éstos eliminarán el contenido de la tabla interna ti_usuarios. En caso de conservar el contenido de la tabla interna, se puede utilizar la cláusula “APPENDING TABLE” en lugar de “INTO TABLE”.
Es recomendable hacer “CLEAR” y “REFRESH” de la tabla interna antes de realizar la selección. Es recomendable preguntar por la variable de sistema “SY-SUBRC” después de realizar una sentencia “SELCT”.
Si se quiere obtener la primera ocurrencia de la tabla “ZTABLA_USUARIOS”, donde se cumpla determinada condición, se debe utilizar la cláusula “SINGLE”.
El resultado se guardará en la estructura “WA_USUARIOS”, que es del mismo tipo que la tabla “ZTABLA_USUARIOS”. Si se quiere realizar la misma consulta anterior, pero obteniendo el DNI, no es necesario guardar el resultado en una estructura, sino que se guardaría en una variable, en este caso “v_dni”.
Si se quiere obtener de una tabla los registros que cumplan una condición pero se quiere guardar en una tabla interna que no tiene la misma estructura, se debe utilizar la cláusula “INTO CORRESPONDING FIELDS OF TABLE”. Esta cláusula realiza la comparación de los campos teniendo en cuenta los tipos de los campos de cada tabla y la posición de cada uno de ellos, es decir, si en la posición 1 se encuentra un campo de tipo “CHAR” de 4 posiciones, en la misma posición de la otra tabla también debe existir el mismo campo con el mismo “CHAR”.
Si se quiere realizar una selección sobre la tabla “ZTABLA_USUARIOS” en base a los que los usuarios ingresan por pantalla, donde p_nombre corresponde a un parámetro y s_estado corresponde a un “Select-options”, se haría de la siguiente forma:
La cláusula “IN” se utiliza para los “select-options” en las condiciones de un “select”.
Si se quiere obtener el usuario activo con DNI más alto, se tendría que utilizar la cláusula “MAX”. Para el compilador, es irrelevante el orden de las sentencias “INTO” y “FROM” dentro de una sentencia “SELECT.
Si se quiere saber la cantidad de usuarios con estado activo, “= activo”, se debe utilizar la cláusula “COUNT”.
Si se quiere obtener de una tabla todos los registros que existan en una tabla interna cargada con datos, se debe utilizar la sentencia “FOR ALL ENTRIES IN”, que permite especificar condiciones en tiempo de ejecución.
La cláusula “FOR ALL ENTRIES IN”, selecciona todos los registros de la tabla “ZTABLA_USUARIOS” que se encuentren en la tabla interna “ti_proveedores”, siendo que el campo DNI sea igual en ambas tablas, almacenando las coincidencias en la tabla “ti_usuarios”.
Si se quiere obtener todos los registros que cumplan un patrón de texto en alguno de sus campos, se debe utilizar la sentencia “LIKE”.
 
 
 
Sobre el autor
Publicación académica de Adrian Fernandez Marcos, en su ámbito de estudios para la Carrera Consultor ABAP.
Adrian Fernandez Marcos
Profesión: Técnico de Sistemas - España - Legajo: FQ91J
✒️Autor de: 116 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
🎓Egresado de los módulos:
Certificación Académica de Adrian Fernandez