✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
1. Lenguaje SQL
Significa Lenguaje de Consulta Estructurado. Se usa como interfaz para comunicarse con bases de datos y realizar operaciones de acceso y manipulación de la información almacenada. Permite seleccionar, insertar, actualizar y borrar datos, así como operaciones administrativas sobre las bases de datos. Realiza cálculos avanzados y álgebra. Es mantenido por ANSI (Instituto Nacional Estadounidense de Estándares).
Las sentencias del lenguaje SQL pueden clasificarse en los siguientes 3 grupos:
*Lenguaje de definición de datos (DDL): Con este podremos definir los diferentes objetos de la BD, usando las siguientes sentencias:
°CREATE: Crea bases de datos, tablas, vistas y demás.
°ALTER: Modifica la estructura de la BD, añadiendo o borrando columnas.
°DROP: Eliminar los objetos de la estructura.
*Lenguaje de manipulación de datos (DML): Con este podemos manipular los datos de los objetos de la BD, borrando o extrayendo datos. Permite introducir datos para posteriormente realizar consultar o modificaciones. Utilizando las siguiente sentencias:
°SELECT: Realiza consultas sobre los datos.
°INSERT: Inserta valores en una BD
°UPDATE: Modifica valores de uno o varios registros.
°MODIFY: Modifica valores de uno o varios registros.
°DELETE: Elimina filas de una BD.
*Lenguaje de control de datos (DDL): Podemos dar o quitar permisos sobre los objetos a los usuarios. Usando los siguientes comandos:
°GRANT: Otorga permisos.
°REVOKE: Elimina permisos previamente concedidos.
2. Sentencia SELECT.
Recupera información en SQL, obtiene registros de la base de datos de uno o varias tablas combinadas. Permite filtrar la información. Recupera 0 o más filas de una o más tablas de bases de datos o vistas de bases de datos. En ABAP la sentencia SELECT tiene la siguiente sintaxis:
SELECT<resultado> "En resultado se colocan los campos que se desean recuperar"
FROM<tabla> "Es la tabla base de datos de dónde se sacan los datos."
INTO<target> "Es el destino donde serán alojados los datos."
WHERE<condiciones> "Condiciones de la busqueda"
A continuación las variantes que presenta la sentencia SELECT para su ejecución:
2.1 SELECT* INTO TABLE.
Obteniendo TODOS* los registros de determinada tabla, así:
SELECT *
FROM ztabla_usuarios
INTO ti_usuarios.
2.2 SELECT* APPENDING TABLE.
Nos permite conservar el contenido de la tabla interna y agregar el nuevo contenido.
SELECT *
FROM ztabla_usuarios
APPENDING TABLE ti_usuarios.
2.3 SELECT campo1.
Obteniendo todos los registros de un campo determinado, creando una tabla auxiliar solo para dicho campo o campos y alojar allí el resultado de la consulta.
SELECT dni estado_asu
FROM ztabla_usuarios
INTO TABLE ti_usuarios_aux.
2.4 SELECT SINGLE.
Obtenemos la primera ocurrencia dónde se cumpla determinada condición.
CLEAR wa_usuarios.
SELECT SINGLE *
FROM ztabla_usuarios
INTO wa_usuarios
WHERE nombre_apre NE space.
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_usuarios
INTO v_dni
WHERE nombre_apre NE space.
2.5 SELECT INTO CORRESPONDING FIELDS OF TABLE.
Obteniendo los registros que cumplan una condición pero sin guardarlos en una tabla interna que no tiene la misma estructura de la BD. Compara los campos según los tipos de los campos y la posición de cada uno de ellos
SELECT nombre_ape estado_asu
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios2
WHERE nombre_apre NE space.
AND estado_asu EQ 'A'.
2.6 SELECT... WHERE IN.
Obtendremos una selección condicional de una tabla con parametros y select-options, dónde en IN se usa para los select-options.
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_apre EQ p_nomape.
AND estado_asu IN s_estado.
2.7 SELECT MAX.
Obtendremos el más alto registro activo de determinada columna.
CLEAR v_dni.
SELECT SINGLE MAX (dni)
INTO v_dni
FROM ztabla_usuarios
WHERE estado_asu EQ 'A'.
2.8 SELECT COUNT.
Obtendremos la cantidad de usuarios con estado activo.
CLEAR v_activos.
SELECT COUNT (*)
INTO v_activos
FROM ztabla_usuarios
WHERE estado_asu EQ 'A'.
2.9 SELECT FOR ALL ENTRIES IN.
Obtendremos todos los registros que existen en una tabla interna cargada con datos, especificando condiciones en tiempo de ejecución. Se utiliza cuando la base de datos a procesar es muy grande.
SELECT *
INTO TABLE ti_usuarios
FROM ztabla_usuarios
FOR ALL ENTRIES IN ti_proveedores.
WHERE dni EQ ti_proveedores-dni.
2.10 SELECT... LIKE.
Obtenemos todos los registros que cumplan con un patrón de texto de alguno de sus campos.
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape LIKE 'A%'.
2.11 SELECT ... INNER JOIN.
Realiza el selecto a más de una base de datos, conocido como JOIN. Obteniendo el resultado de la intersección de los conjuntos A y B, es decir los registros en común entre ambas tablas.
TYPES: BEGIN OF ty_facturas,
vbeln LIKE vbrk-vbeln
fkart LIKE vbrk-fkart,
fktyp LIKE vbrk-fktyp,
END OF ty_facturas.
DATA: ti_facturas TYPES STANDAR TABLE OF ty_facturas,
wa_facturas LIKE LINE OF ti_facturas.
SELECT ti~vbeln ti~fkart ti~fktyp
INTO CORRESPONDING FIELDS OF TABLE ti_facturas
FROM vbrk AS t1 INNER JOIN vbrp AS t2
ON t2~vbeln = t2~vbeln
Podemos probar el código SQL en la transacción SE30.Con el botón Tips&Tricks.
 
 
 
Sobre el autor
Publicación académica de Linda Carolina Zambrano León, en su ámbito de estudios para la Carrera Consultor ABAP.
Linda Carolina Zambrano León
Profesión: Agente - Peru - Legajo: XR55P
✒️Autor de: 63 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Linda Zambrano