🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP El lenguaje SQL y la sentencia SELECT

ABAP El lenguaje SQL y la sentencia SELECT

ABAP El lenguaje SQL y la sentencia SELECT

1 | El lenguaje SQL

Para manipular los datos de las tablas bases de datos centralizadas de SAP será necesario el uso de SQL. SQL es un lenguaje de scripting enfocado a la comunicación con bases de datos y su subsecuente manipulación. Adicionalmente es capaz de realizar operaciones matemáticas tanto sencillas como complejas.

Hay varias implementaciones propietarias de SQL hechas por diferentes empresas y grupos pero todas tienen que cumplir con los estándares ANSI establecidos para SQL. Por lo tanto, la compatibilidad de programas específicos entre implementaciones usualmente está ausente pero el lenguaje será idéntico (excluyendo por supuesto las partes del lenguaje que hayan sido diseñadas como componentes propietarios).

Las sentencias del lenguaje pueden dividirse en 3 grupos:

Lenguaje de definición de datos (DDL):

Con este manipulamos la estructura de la base de datos. Disponemos de 3 sentencias para hacer esto:

  • CREATE: Con esto creamos bases de datos, tablas bases de datos, vistas, etc.
  • ALTER: Modifica la estructura de la base de datos, por ejemplo: Puede añadir o borrar columnas en una tabla.
  • DROP: Con esta sentencia borramos objetos de la estructura.

Lenguaje de manipulación de datos (DML):

Con este manipulamos los datos dentro de la base de datos. Disponemos de las siguientes sentencias:

  • SELECT: Realiza consultas sobre un dato.
  • INSERT: Inserta valores.
  • UPDATE y MODIFY: Ambas sentencias sirven para realizar modificaciones a uno o más registros.
  • DELETE: Elimina registros

Lenguaje de control de datos (DCL):

Con este manipulamos los permisos que los usuarios tienen para interactuar con la base de datos.

  • GRANT: Añade permisos.
  • REVOKE: Quita permisos.

2 | La sentencia SELECT

Esta es la sentencia que más nos importa de momento. La forma en la que opera se destila en: Buscar elementos en la base de datos; Verificar condiciones (si las hay); Copiarlas en otra variable/estructura para guardarla. Opera con la siguiente sintaxis:

SELECT foo
FROM bar
INTO fu
WHERE var.

Donde "foo" son los campos a recuperar; "bar" es la tabla que será el origen de los datos; "fu" es donde serán guardados los valores recuperados; "var" es la condición que se utiliza para la recuperación, cabe destacar que por defecto, SELECT intentará recuperar cuantos datos sean posibles y que tanto las condiciones como otras variaciones del select se usan para restringir la selección de datos.

Otra cosa a destacar es que el las secciones FROM y INTO no tienen un orden. Es decir, podemos usar la sentencia INTO antes del FROM y el compilador no tendrá problemas para compilar el programa.

Las variaciones de SELECT son las siguientes:

SELECT * INTO TABLE:

Usando el Wildcard como parámetro de la sentencia SELECT podemos elegir todos los campos. Mientras que el uso de TABLE como cláusula del INTO sirve para especificar el uso de una tabla interna. Si usamos las sentencias descritas y descartamos el WHERE acabaríamos con un select que copia todos los registros de la tabla en una tabla interna.

En caso de que SELECT no encuentre registros a seleccionar SY-SUBRC será diferente a cero. Otra cosa a recordar es de que sería idóneo usar REFRESH o CLEAR cuando sea posible.

SELECT * APPENDING TABLE:

La implementación de SELECT que usa INTO tiene un problema, el cual es de que si la tabla de salida ya tiene registros estos serán pisados. Por lo tanto, se puede adjuntar los resultados de la selección al final de la tabla de salida reemplazando la sentencia "INTO" por "APPENDING" para lograr este resultado.

SELECT [campo específico]:

En caso que queramos seleccionar todos los registros de una columna en particular se tiene que crear una tabla interna auxiliar compuesta exclusivamente del campo que se quiere seleccionar y se la tiene que poner como salida (parámetro del INTO).

Cabe destacar que si queremos realizar el select para varios campos tendremos que poner los campos en el orden en el que aparecen en su tabla base de datos de origen. Adicionalmente, cabe destacar que en el caso de que la variable/tabla de salida no coincida con el formato de los datos de salida del select se considerará como un error de sintaxis o causará más adelante un RTE (dump).

SELECT SINGLE:

En caso que queramos recuperar la primera ocurrencia de un registro que cumpla las condiciones de selección tendremos que poner "SINGLE" entre "SELECT" y las columnas a recuperar.

SELECT INTO CORRESPONDING FIELDS OF TABLE:

Si ambas tablas (entrada y salida) tienen los mismos campos de interés (los que serán seleccionados) se puede realizar una selección independientemente de la estructura de la tabla de entrada (pero respetando el orden de la tabla de salida). Esto lo hacemos usando la cláusula "CORRESPONDING FIELDS OF TABLE" para la sentencia "INTO".

SELECT...WHERE IN:

"IN" es la sentencia que usamos para especificar que el parámetro que tiene detrás tiene que estar en el rango de valores establecido por el parámetro que el "IN" tiene adelante, el cual debería haber sido establecido a través de un select-options.

SELECT MAX:

Se utiliza para buscar el registro con el máximo valor para una columna específica. Para usarlo usamos la sintaxis SELECT MAX(foo). Donde "foo" es el campo en el que se buscará el mayor valor. Idóneamente se lo usará en conjunto con la cláusula SINGLE.

SELECT COUNT:

Si usamos el "COUNT" luego del SELECT la selección generará como salida un entero el cual será la cantidad de registros que cumplen con las condiciones establecidas.

SELECT FOR ALL ENTRIES IN:

Esta sentencia se pone antes del WHERE junto a una tabla interna como parámetro. Su propósito es permitirnos comparar la tabla base de datos con la tabla interna durante las operaciones lógicas dentro del WHERE.

SELECT...LIKE:

Esta es una de las expresiones que se puede usar dentro del WHERE para buscar patrones de texto. La sintaxis sería WHERE foo LIKE bar. Donde "foo" es el campo de la tabla interna a comprar y "bar" es el patrón de texto a buscar. Recordemos que se puede usar "%" al inicio o al final del texto.

SELECT...INNER JOIN:

Este es similar al FOR ALL ENTRIES IN. Aunque el uso es mucho más específico, este lo usamos para crear registros en una tabla de salida compuesta por campos de dos tablas diferentes basadas en el cumplimiento de condiciones a declarar. Tengamos en cuenta que es necesario crear una tabla interna que sea compatible con ambas tablas.


 

 

 


Sobre el autor

Publicación académica de Mauricio Javier Solis Ibañez, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP SemiSenior

Mauricio Javier Solis Ibañez

Profesión: Técnico Electrónico - Argentina - Legajo: CF20Z

✒️Autor de: 28 Publicaciones Académicas

🎓Egresado del módulo:

Disponibilidad Laboral: FullTime

Certificación Académica de Mauricio Solis

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "El lenguaje SQL y la sentencia SELECT" de la mano de nuestros alumnos.

SAP Master

SENTENCIA SELECT INTO TABLE se utiliza cuando el resultado de la consulta se guarda en una tabla interna simepre despues de un select se debe preguntar por el sy-subrc para saber como proseguir SENTENCIA SINGLE para obtener la primera ocurrencia de la tabla clausula in para select option FOR ALL ENTRIES IN es un formato especial de la sentencia where que se utiliza para especificar condiciones en tiempo de ejecucion no se pueden utilizar like between e in

Acceder a esta publicación

Creado y Compartido por: Andres Felipe Escobar Lopez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

La sentencia SELECT. SELECT: Sentencia ABAP que se utiliza para acceder a las bases de datos a SAP. Tabla interna: Es un objeto de datos que permite guardar en memoria grandes cantidades de registros de datos con la misma estructura. La cantidad de registros máxima esta relacionada con los límites especificados en la instalación del sistema. INTO TABLE: Cláusula ABAP que se utiliza con la sentencia SELECT y produce que los registros de las tablas que se seleccionan se ve la tabla interna que se especifica a continuación. APPENDING TABLE: Cláusula ABAP que se utiliza con la sentencia SELECT y produce que los registros de las tablas que se seleccionan se añadan al final de la tabla interna...

Acceder a esta publicación

Creado y Compartido por: Rafael Razo

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

SELECT: Sentencia ABAP que se utiliza para acceder a las BD. SINTAXIS: SELECT <CAMPOS A SELECCIONAR> FROM <TABLA DONDE SE REALIZARA RA BÚSQUEDA> INTO <DESTINO DE LOS DATOS> INTO TABLE <SE UTILIZA SI EL DESTINO DE LOS DATOS ES UNA TABLA INTERNA> WHERE <CONDICIONES DE LA BÚSQUEDA> APPENDING TABLE: SE UTILIZA CON EL SELECT PARA INDICAR QUE LOS DATOS SE DEBEN INGRESAR AL FINAL DE LA TABLA INTERNA Y NO SIN PISAR LOS YA EXISTENTES EN ELLA. SINGLE: ESTA CLAUSULA QUE SE UTILIZA CON EL SELECT PARA SELECCIONAR EL PRIMER REGISTRO QUE CUMPLA CON LAS CONDICIONES DE BÚSQUEDA. INTO CORRESPONDING FIELDS OF TABLE: CLAUSULA ABAP QUE SE UTILIZA CON UN SELECT Y ES NECESARIA SI QUEREMOS UTILIZAR UN ÁREA...

Acceder a esta publicación

Creado y Compartido por: Juan Santamaria Borja

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


1) SENTENCIA SELECT SELECT es la sentencia que se utiliza para leer los datos de una tabla de la BD. Sintaxis: SELECT <campos> FROM <tabla> INTO <target> where <condiciones>. Existen muchas cláusulas que se pueden utilizar en el SELECT: Si necesitamos que el resultado de la consulta se guarde en una tabla interna: SELECT * FROM ztabla_usuarios INTO TABLE ti_usuarios. Si necesitamos conservar el contenido de la tabla interna luego de reiteradas selecciones. SELECT * FROM ztabla_usuarios APPENDING TABLE ti_usuarios. Utilizar CLEAR y REFRESH a la tabla interna antes de la selección Si se desea obtener el campo DNI de todos los campos de la tabla...

Acceder a esta publicación

Creado y Compartido por: Maria Guadalupe Gonzalez Sanchez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

una sentencia peculiar de ABAP en el uso de tablas es: CORRESPONDING FIELDS OF TABLE, se utliza con la sentencia SELECT y es necesaria si se quiere usar un area de trabajo con diferente estructura a el area de trabajo de la tabla leida. La sentencia FOR ALL ENTRIES IN, es util para buscar las coincidencias de una tabla interna en una tabla base de datos

Acceder a esta publicación

Creado y Compartido por: Carolina Sanchez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

LA SENTENCIA SELECT: Sentencia que se usa para accesar a los datos. SELECT <resultado FROM <tabla> into <target> (es el destino donde serán alojados los datos). WHERE <conditios>. SELECT * FROM ztabla_usuarios INTO TABLE ti_usuarios. INTO TABLE (los registros seleccionados se colocan en la tabla interna). (el INTO puede ir antes o después del FROM). APPENDING TABLE (los registros seleccionados se colocan en la tabla interna PERO sin borrar los que ya se tenían almancenados). Es recomendable usar CLEAR y REFRESH de la tabla interna antes de realizar la selección. SINGLE (selecciona la primer ocurrencia de la consulta) es como traer el TOP en SQL, CLEAR wa_usuarios. SELECT SINGLE * FROM ztabla_usuarios...

Acceder a esta publicación

Creado y Compartido por: Gerardo De La Rosa Rivera

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Instrucciones SQL: La sentencia SELECT 1. La sentencia SELECT Se utiliza para acceder a la base de datos SELECT <campos> FROM <tabla > INTO <target> WHERE <condiciones> La cláusula INTO TABLE se utiliza cuando el resultado de la consulta se guarda en una tabla interna. Si queremos conservar el contenido de la tabla interna utilizamos la cláusula APPENDING TABLE en lugar de INTO TABLE y agrega los registros al final. Es recomendable hacer CLEAR y REFRESH de la tabla interna antes de realizar la selección. Siempre después de un SELECT se debe preguntar por el SY-SUBRC para saber como proseguir. Si quisiéramos obtener la primera ocurrencia de la tabla ZTABLA_USUARIOS donde se cumpla determinada...

Acceder a esta publicación

Creado y Compartido por: Pedro Alejandro Arroyo Gutierrez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Sentencias ABAP que se utilizan para acceder a la base de datos: SELECT <resultado> FROM <tabla> INTO TABLE <target> WHERE <condiciones>. Evitar el uso del * cuando solo se requiera obtener algunos campos de la tabla origen. Es una buena práctica. Es recomendable hacer CLEAR y REFRESH de la tabla interna antes de realizar la selección. Si necesitamos conservar el contenido de la tabla interna a la que haremos el SELECT ... INTO tablainterna tenemos que usar la cláusula APPENDING TABLE en lugar de INTO TABLE. APPENDING TABLE: cláusula que se usa con la sentencia SELECT y produce que los registros de las tablas que se seleccionan se añadan al final de la tabla interna sin pisar los registros...

Acceder a esta publicación

Creado y Compartido por: Jose Ignacio Rodini

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

1- La sentencia SELECT SELECT <resultado> "En resultado se colocan los campos que se quieren recuperar" FROM <tabla> "Es la tabla origen de donde se secan los datos" INTO <target> "Es el destino donde serán alojados los datos" WHERE <condiciones> "Condiciones de la búsqueda" Es recomendable hacer CLEAR y REFRESH de la tabla interna antes de realizar la selección. Otras clausulas: SINGLE: Para obtener la primera ocurrencia de una tabla. INTO CORRESPONDING FIELDS OF TABLE: Para obtener los registros de una tabla interna en una tabla que no tiene la misma estructura IN: Se utiliza para los select-options en...

Acceder a esta publicación

Creado y Compartido por: Calixto Gutiérrez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


CLEAR WA_USUARIOS. REFRESH TI_SFLIGHT. SENTENCIAS SELECT SELECT * FROM SFLIGHT INTO TABLE TI_SFLIGHT WHERE S_FLIGHT-FLIGHT ='001'. Si quisieramos obtener de una tabla los registros que cumplan una condicion pero queremos guardarlos en una tabla interna que no tiene la misma estructura que la tabla, entonces tenemos que usar la clausula INTO CORRESPONDING FIELDS OF TABLE. Se utiliza con un area de trabajo al area utilizada para leer la tabla, Realiza la comparacion de los campos teniendo en cuenta los tipos de los campos de cada tabla y la posicion de cada uno de ellos (ej: un campo de tipo char de 4 posiciones en cada tabla). La clausula IN se utiliza para los select-options en las condiciones de un select. ej: select * from ztabla_usuarios...

Acceder a esta publicación

Creado y Compartido por: Oscar Guillermo Rodriguez Villate / Disponibilidad Laboral: FullTime

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!