✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
1 - El Lenguaje SQL
Para acceder y manipular datos usaremos SQL (Lenguaje de Consulta Estructurado).
Las sentencias SQL pueden ser clasificadas en tres grupos:
- Lenguaje de Definición de Datos (DDL). Disponemos sentencias como: CREATE, ALTER, DROP.
- Lenguaje de Manipulación de Datos (DML). Disponemos sentencias como: SELECT, INSERT, UPDATE, MODIFY, DELETE.
- Lenguaje de Control de Datos (DCL): Disponemos sentencias como: GRANT y REVOKE.
En ABAP utilizamos SQL. La sentencia SELECT sería:
Si quisiéramos obtener todos los datos de la tabla ZTABLA_USUARIOS y alojarlo en una tabla interna:
Si quisiéramos obtener de todos los campos, solo DNI, deberíamos crear una tabla auxiliar con solo el campo DNI para alojar los resultado de la consulta:
Si quisiéramos obtener solo el primer registro que cumpla cierta condición deberemos usar SELECT SINGLE *
SELECT INTO CORRESPONDING FIELD OF TABLE:
Si quisiéramos obtener de una tabla base de datos los registros que cumplan cierta condición pero deseamos guardarlos en una tabla interna que no tiene la misma estructura que la tabla base de datos, entonces tenemos que usar la cláusula INTO CORRESPONDING FIELDS OF TABLE:
SELECT ... WHERE IN
Supongamos que tenemos un reporte:
Donde "Nombre y Apellido" es P_NOMAPE y "Estado del Usuario" es S_ESTADO. Si quisiéramos hacer una selección a la tabla ZTABLA_USUARIOS en base a lo que los usuarios ingresan por pantalla haríamos lo siguiente:
La clausula IN se utiliza para los select-options en las condiciones de un select.
SELECT MAX: Si quisiéramos obtener el usuario activo con el DNI más alto:
SELECT COUNT: Si quisiéramos saber la cantidad de usuarios con el estado = 'activo':
SELECT FOR ALL ENTRIES IN: Si quisiéramos obtener todos los registros que existan en una tabla interna cargada con datos, usamos esta sentencia que nos permite especificar condicones en tiempo de ejecución:
A nivel performance es mejor esto que realizar un loop a una tabla con muchos datos.
SELECT ... LIKE: Obtener registros que cumplan con un patró de texto:
SELECT .... INNER JOIN: Tenemos la posibilidad de realizar un SELECT a más de una tabla base de datos. Para ejemplificar usaremos dos tablas estándar: VBRK de Facturas: Datos de cabecera y la tabla VBRP de Factura: Datos de posición.
Supongamos que deseamos recuperar de ambas tablas los registros donde el campo VBELN (Número de factura) coincida.
Para estos registros nos vamos a quedar con los siguientes campos de la tabla VBRK:
Factura (VBELN)
Clase de Factura (FKART)
Tipo de Factura (FKTYP)
Tipo de Documento Comercial (VBTYP)
Moneda del Documento Comercial (WARTK)
Organización de ventas (VKORG)
Canal de Distribución (VTWEG)
Y los siguientes campos de la tabla base de datos VBRP:
Posición de Factura (POSNR).
Valor Neto de Posición de Factura (NETWR).
Entonces ejecutamos la sentencia SELECT INNER JOIN:
 
 
 
Sobre el autor
Publicación académica de Pedro Antonio Duarte, en su ámbito de estudios para la Carrera Consultor ABAP.
Pedro Antonio Duarte
Profesión: Consultor de Sap Abap - Argentina - Legajo: JP24O
✒️Autor de: 128 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Pedro Duarte