✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
Introducción a SQL
La sentencia SELECT: existen un carias sentencias para acceder a la base de datos la principal es la mencionada.
SELECT <resultado> En resultado se colocan los campos que se quieren recuperar"
FORM <tabla> es la tabla origen de donde se sacan los datos.
INTO<target> es el destino donde serán alojados los datos.
WHERE<condiciones> condiciones de la búsqueda.
Si queremos obtenes todos los registros de la tabla ZTABLA_USUARIOS usaríamos es te código.
EJ: SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios.
ti_usuarios es una tabla interna del mismo tipo que ZTABLA_USUARIOS. El asterisco indica que se obtendrá todos los campos de la tabla. La cláusula INTO TABLE se utiliza cuando el resultado de la consulta de guarda en la interna. Evitar * cuando se requiere obtener algunos campos. En caso de existir registros en la tabla ZTABLA_USUARIOS, estos pisarán el contenido de la tabla interna TI_USUARIOS. Si quisieramos consevar el contenido de la tabla interna luego de reiteradas selecciones tendríamos que usar la cláusula APPENDING TABLE en el lugar de INTO TABLE. Es recomendable hacer un CLEAR y REFRESH de la tabla interna antes de realizar una Selección.
Si quisierasmos obtiener todos los campos de la tabla ZTABLA_Usuarios en el campo de DNI se crea un tabla auxiliar solo con el campo DNI.
EJ:
SELECT dni
FORM ztabla_usuarios
INTO TABLE ti_usuarios_aux.
después de SELECT se debe preguntar por el SY-SUBRC para saber como proseguir.
Si queremos obtener la primera ocurrencia de la tabla ZTABLA_USUARIOS donde se cumpla la determinada condición debemos usar la cláusula SINGLE.
CLEAR wa_usuarios.
SELECT SINGLE *
FORM ztabla_usuarios
INTO wa_usuarios
WHERE nombre_ape NE space.
wa_usuarios es del mismo tipo ZTABLA_USUARIOS. Si quisieramos hacer una consulta anterior pero solo obtener el campo DNI entonces ya no sería necesaria la estructura WA_USUARIOS sino que se guardaría en la variable V_DNI.
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_usuarios
INTO v_dni
WHERE nombre_ape NE space.
Si queremos obtener una tabla los registros que cumplan una condición pero queremos guardarlos en una tabla interna que no tiene la misma estructura que la tabla entonces usaremos la cláusula INTO CORRESPONDING FIELDS OF TABLE.
SELECT nombre_ape estado_usu
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios2
WHERE nombre_ape NE scape
AND estado_usu = 'A'.
TI_usuarios2 esta compuestos por dos campos, NOMBRE_APE y ESTADO_USU. si tenemos un reporte que tiene la pantalla de selección. Para nombre y apellido es el parameter P_NOMAPE y el estado de usuario es el select-options S_ESTADO. Si quisiéramos hacer una selección a la tabla ZTABLA_USUARIOS en base alos usuarios ingresan por pantalla.
EJ: *Selecciono los registros que cumplan con los parámetros de pantalla
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape = p_nomape
AND estado_usu IN s_estado.
la cláusula In se utiliza par los select_options en la condiciones de un select. Si queremos obtener un usuario activo con Dni más alto tendríamos que usar la cláusula MAX
SELECT SINGLE MAX (dni)
INTO v_dni
FROM ztaba_usuarios
WHERE estado_usu = 'A'.
Si queremos saber la cantidad de usuarios = 'activo' debemos usar la cláusula COUNT
SELECT COUNT (*)
INTO v_activos
FROM ztabla_usuarios
WHERE estado_usu= 'A'.
Ahora si queremos una tabla todos los registros que existan en una tabla interna cargada con datos, ahi utilizamos la sentencia FOR ALL ENTRERIES IN, que nos permite especificar la condición en tiempo de ejecución.
*obtengo los registros de los usuarios que existen en la tabla interna TI_PROVEEDORES
SELECT *
INTO TABLE ti_usuarios
FROM ztabla_usuarios
FOR ALL ENTRES IN ti_proveedores
WHERE dni = ti_proveedores-dni.
si queremos obtener los registros que cumplan con un patrón de texto alguno de sus campos.
*Recupero los usuarios cuyo nombre empiece con A. se utiliza la sentencia LIKE
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape LIKE 'A%'.
 
 
 
Sobre el autor
Publicación académica de Juan Carlos Pavicich, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Carlos Pavicich
Profesión: Técnico Informático - Argentina - Legajo: VR91L
✒️Autor de: 116 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Tengo el agrado de dirigirme a ud/s con el objeto de mencionar mi experiencia y conocimientos técnicos necesarios para desarrollar actividades en el rubro de su empresa.
Certificación Académica de Juan Pavicich