✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
La sentencia SELECT:
Existen en ABAP un conjunto de sentencias que se utilizan para acceder a las bases de datos. Su sintaxis basica seria la siguiente:
SELECT <resultado> "En resultado se colocan los campos que se requieren recuperar
FROM <tabla> "Es la tabla origen de donde se sacan los datos
INTO <target> "Es el destino donde seran alojados los datos
WHERE <condiciones>. "Condiciones de la busqueda
Ejemplo:
* Seleccionando todos los registros
SELECT * FROM ztabla_usuarios
INTO TABLE ti_usuarios.
TI_USUARIOS es una tabla interna del mismo tipo de la tabla ZTABLA_USUARIOS. El asterisco indica que se obtendran todos los campos de la tabla. INTO TABLE se utiliza cuando el resultado de la tabla se almacena en una tabla interna.
Es recomendable evitar el uso del * cuando solo se requiere obtener algunos campos de la tabla origen.
Para obtener la primera ocurrencia de la tabla ZTABLA_USUARIOS donde se cumpla la condicion solicitada, debemos usar la clausula SINGLE, ejemplo:
*selecciono el primer registro que cumpla la condicion
CLEAR wa_usuarios.
SELECT SINGLE *
FROM ztabla_usuarios
INTO wa_usuarios
WHERE nombre_ape NE space.
Si queremos obtener registros de una tabla que cumplan una condicion pero queremos guardarlos en una tabla interna que tiene la misma estructura, entonces usaremos la clausula: INTO CORRESPONDING FIELDS OF TABLE.
*Seleccionando registros que cumplan con la condicion, aunque no su estructura
SELECT nombre_ape estado_usu
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios2
WHERE nombre_ape NE space
AND estado_usu = 'A'.
Si quisieramo obtener el usuario activo con el DNI mas alto tendriamos que usar la clausula MAX, ejemplo:
*Obtengo el usuario activo con DNI mas alto
SELECT SINGLE MAX ( dni )
INTO v_dni
FROM ztabla_usuarios
WHERE estado_usu = 'A'.
Si quisieramos saber la cantidad de usuarios con estado = "activo", debemos usar la clausula COUNT de la siguiente manera:
*Obtengo la cantidad de usuarios activos
SELECT COUNT (*)
INTO v_activos
FROM ztabla_usuarios
WHERE estado_usu = 'A'.
Si quisieramos obtener de una tabla todos los registros que existan en una tabla interna cargada con datos, usaremos FOR ALL ENTRIES IN, que nos permitira especificar condiciones en tiempo de ejecucion, ejemplo:
*Obtengo los registros de los usuarios que existan en la tabla interna TI_PROVEEDORES
SELECT *
INTO TABLE ti_usuarios
FROM ztabla_usuarios
FOR ALL ENTRIES IN ti_proveedores
WHERE dni = ti_proveedores-dni.
Si quisieramos obtener todos los registros que cumplan con u patron de texto en alguno de sus campos, debemos utilizar la sentencia LIKE, ejemplo:
* Recupero los usuarios cuyo nombre empiece con A
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape LIKE 'A%'.
 
 
 
Sobre el autor
Publicación académica de Juan Fernando Guerra Mata, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Fernando Guerra Mata
Profesión: Analista Programador - Guatemala - Legajo: CW28U
✒️Autor de: 63 Publicaciones Académicas
🎓Cursando Actualmente: Consultor Funcional Módulo SD Nivel Inicial
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Certificación Académica de Juan Guerra