✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
LA SENTENCIA SELECT
Existe en ABAP un conjunto de sentencias que se utilizan para acceder a las bases de datos, la principal sentencia es SELECT, cuya sintaxis es la siguiente.
-Select <resultado> "en resultado se coloca los campos que se quieren recuperar".
-From <tabla> "tabla es la tabla origen donde se sacan los datos"
-Into <target> "target es el destino donde será alojado el dato"
-Where <condicion> "condiciones de la búsqueda"
NOTA: Evitar el uso del * cuando solo se requiere obtener algunos campos de la tabla origen.
NOTA: es recomendable hacer CLEAR y REFRESH de la tabla interna antes de realizar la selección.
* Para obtener todos los registros de la tabla ZTABLA_USUARIOS usaremos el siguiente código:
SELECT * FROM ztabla_usuarios INTO TABLE ti_usuarios.
(TI_USUARIOS es una tabla interna del mismo tipo de la tabla ZTABLA_USUARIOS), (INTO TABLE se utiliza cuando el resultado de la consulta se guarda en una tabla interna).
En la sentencia anterior, en caso de existir registros de la tabla ZTABLA_USUARIOS, estos remplazaría el contenido de la tabla interna TI_USUARIOS
* Si se quiere conservar el contenido de la tabla interna TI_USUARIOS, se debe sustituir el comando INTO TABLE por APPENDING TABLE.
SELECT * FROM ztabla_usuario APPENDING TABLE ti_usuarios.
* Para obtener de la tabla ZTABLA_USUARIOS el campo DNI se debe crear una tabla interna auxiliar solo con el campo DNI para alojar el resultado de la consulta
SELECT dni FROM ztabla_usuario INTO TABLE ti_usuarios_aux.
* Para obtener la primera ocurrencia de la tabla ZTABLA_USUARIOS donde se cumpla determinada condición debemos usar la cláusula SIGLE.
CLEAR wa_usuarios. SELECT SIGLE * FROM ztabla_usuarios INTO wa_usuarios WHERE nombre_ape NE space.
* Si se quiere obtener solo el campo DNI entonces ya no es necesario la estructura WA_USUARIOS sino que se guardaría el resultado en la variable V_DNI
CLEAR v_dni. SELECT SIGLE dni FROM ztabla_usuarios INTO wa_usuarios WHERE nombre_ape NE space.
* Para obtener de una tabla los registros que cumplan una condición pero que se guarde en la tabla interna que no tiene la misma estructura de la tabla.
SELECT nombre_ape estado_usu FROM ztabla_usuarios INTO CORRESPONDING FIELDS OF TABLE ti_usuarios2 WHERE nombre_ape NE space AND estado_usu = 'A'.
* Para obtener el usuario activo con el DNI más alto se usa la clausula MAX
SELECT SIGLE MAX dni INTO v_dni FROM ztabla_usuarios WHERE estado_usu = 'A'.
*Para saber la cantidad de usuarios con estado = 'activo' se usa la cláusula COUNT
SELECT CONUT * INTO v_activos FROM ztabla_usuarios WHERE estado_usu = 'A'.
* Para obtener de una tabla todos los registros que existan en una tabla interna cargada con datos.
SELECT * INTO TABLE ti_usuarios FROM ztabla_usuarios FOR ALL ENTRIES IN ti_usuarios WHERE dni = ti_proveedores-dni.
* Para obtener todos los registros que cumplan con un patrón de texto en algunos de sus campos.
SELECT * FROM ztabla_usuarios INTO TABLE ti_usuarios WHERE nombre_ape LIKE 'A%'.
 
 
 
Sobre el autor
Publicación académica de Francis Correntin, en su ámbito de estudios para la Carrera Consultor ABAP.
Francis Correntin
Profesión: Tecnico en Sistemas Ferros - Argentina - Legajo: CK40S
✒️Autor de: 33 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Certificación Académica de Francis Correntin