✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
SENTENCIA SELECT
Sentencia que permite consultar los reguistros de una tabla.
SINTAXIS:
SELECT <resultado> - Se colocan los campos que se quieren recuperar
FROM <tabla> - Tabla origen de donde se extraen los datos
INTO <target> - Destino donde se alojaran los datos
WHERE <condiciones> - condición de búsqueda
- Para obtener todos los registros de una tabla usamos *
Select * from ztabla_usuarios INTO table ti_usuarios.
INTO TABLE - Se usa cuando el resultado de la consulta se guardara en una TABLA INTERNA
TI_usuarios- viene a ser la tabla interna.
APPENDING TABLE - Usado para conservar los datos de la consulta en una tabla interna , se coloca en lugar de INTO TABLE
RECOMENDACIÓN: Realizar CLEAR y REFRESH de las tablas internas antes de realizar una selección.
- Crear Una TABLA Auxiliar - Si queremos obtener solo un campo de una tabla, la tabla auxiliar solo debe tener ese campo.
SELECT dni fron ztabla_usuarios Into Table ti_usuarios aux.
- Después de realizar una consulta SELECT se debe preguntar usando SY-SUBRC para saber como proseguir
SINGLE - Es una clausula , y la usamos cuando queremos obtener el primer resultado de una consulta que cumpla determinada condición. Ejemplo, el resultado se esta guardando en una estructura que es del mismo tipo que la tabla.
CLEAR wa_usuarios.
SELECT SINGLE * from ztabla_usuarios INTO wa_usuarios WHERE nombre_ape NE space.
- Si queremos Hacer la consulta y obtener el primer resultado solo del campo DNI , ya no se necesitaria una estuctura sino una variable. Ejemplo.
CLEAR v_dni.
SELECT SINGLE dni from ztabla_usuarios INTO v_dni Where nombre_ape NE space.
INTO CORRESPONDING FIELDS OF TABLE : - SE USA Si queremos guardar los datos consultados que cumpla con una condición en una tabla interna que no tiene la misma estructura que la tabla de BD.
Realiza 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 , ejemplo
Si en la posición 1 se encuentra un campo tipo char de 4 posiciones entonces en la misma posición de la otra tabla también debe existir un campo tipo char de 4 posiciones para que la comparación sea correcta
SELECT nombre_ape estado_usu FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE TI_USUARIOS2 and estado_usu ='A'.
- SI SE TIENE UNA PANTALLA DE SELECCIÓN EN EL CUAL HAY 2 CAMPOS EN ESTE CASO NOMBRE Y ESTADO QUE ES UN SELECT-OPTIONS, EL EJEMPLO SERIA
- Select * from ztabla_usuarios Into Table ti_usuarios Where Nombre_ape = p_nombre and estado_usu IN s_estado.
IN - Se usa en una sentencia Select para la condición cuando es un Select-options
MAX - Para obtener el usuario con DNI mas Alto
SELECT sINGLE max (DNI) iNTO v_DNI fROM ZTABLA_USUARIOS wHERE ESTADO_USU = 'A'.
- Cuando se usa la sentencia SELECT es indistinto usar INTO antes de FROM o viceversa.
COUNT - Cuando se quiere saber la cantidad de registros segun la condición, Ejm Cantidad de usuarios con estado Activo
Select COUNT (*) INTO v_activos From ztabla_usuarios Where estado_usu = 'A'.
- FOR ALL ENTRIES IN - Para obtener de una tabla todos los registros que existan en una tabla interna cargada con datos , Esta sentencia permite especificar condiciones en tiempo de ejecución .
ESto mismo se podria realizar recorriendo la tabla interna con un Loop y por cada registro de esta tabla interna realizariamos un select a la tabla ztabla_usuarios, pero se debe tener en cuenta la performance de los programas, ya que si la tabla interna de los proveedores almacena solo 3 registros entonces al ejecutar el programa estariamos accediendo a la BD solo 3 veces , pero si la tabla interna TI_Proveedores almacena 100000 mil registros entonces al ejecutar el programa estariamos accediendo a la BD 100000 veces lo cual produciria un tiempo de espera enorme , para esto usamos FOR ALL ENTRIES para asegurarnos de acceder solo una vez.
Select * Into Table ti_usuarios2 from ztabla_usuarios FOR ALL ENTRIES IN ti_proveedores Where dni = ti_proveedores-dni.
LIKE - Para obtener todos los registros que cumplan con un patrón de texto en alguno de sus campos
Select * From ztabla_usuarios Into Table ti_usuarios Where nombre_ape Like 'A%'.
 
 
 
Sobre el autor
Publicación académica de Victor Rodríguez Azcárate, en su ámbito de estudios para la Carrera Consultor ABAP.
Victor Rodríguez Azcárate
Profesión: Ingeniero de Sistemas - Peru - Legajo: AK14S
✒️Autor de: 63 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Victor Rodríguez