✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
LECCIÓN 6 SENTENCIA SELECT:
En ABAP existen un conjunto de sentencias que se utilizan para acceder a las tablas de la base de datos. La más importante de estas sentencias es SELECT.
A través de la sentencia SELECT podremos acceder a los registros almacenados en cada una de las tablas que componen a la base de datos de SAP.
La sentencia SELECT presenta muchas variantes de ejecución que utilizaremos en base a la necesidad de información que se nos requiera.
Algunos ejemplos de las variantes más utilizadas de la sentencia SELECT son las siguientes:
- SELECT *: mediante esta sentencia se seleccionan todos los campos y todos registros de la tabla base de datos. Es aconsejable minimizar la utilización del SELECT * ya que consume muchos recursos del sistema
- SELECT SINGLE: utilizaremos esta cláusula para seleccionar un solo registros de la tabla base de datos.
- SELECT… INTO TABLE: mediante esta cláusula almacenaremos el resultado de la selección en la tabla interna que se especifique a continuación de TABLE.
Para evitar que se pisen los datos de la Tabla Interna, se usa la sentencia APPENDING TABLE en vez de INTO TABLE.
Es recomendable usar CLEAR y REFRESH antes de realizar la selección.
- SELECT… INTO CORRESPONDING FIELDS OF TABLE: mediante esta cláusula almacenaremos el resultado de la selección en la tabla interna que se especifique a continuación de TABLE pero esta tabla interna puede no tener la misma estructura que la tabla base de datos.
- SELECT SINGLE: obtenemos la primera ocurrencia dada una condición
- SELECT SINGLE MAX: mediante esta cláusula obtendremos el campo de mayor valor que se especifique a la derecha de MAX.
- SELECT COUNT(*): utilizaremos esta sentencia si quisiéramos contabilizar la cantidad de registros que cumplen con una condición especifica.
- SELECT….FOR ALL ENTRIES: utilizaremos esta sentencia si quisiéramos obtener de una tabla base de datos, todos los registros que existan en una tabla interna cargada con datos.
Código Fuente Ejemplos:
*&---------------------------------------------------------------------* *& Report Z_PRUEBA_ABAP_3_7 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT z_prueba_abap_3_7. * Tabla interna de proveedores DATA: wa_usuarios TYPE ztabla_usuarios, ti_usuarios LIKE STANDARD TABLE OF wa_usuarios. DATA: BEGIN OF ti_usuarios_aux OCCURS 0, dni TYPE z_dni, END OF ti_usuarios_aux. DATA: BEGIN OF ti_usuarios2 OCCURS 0, nombre_ape TYPE z_nombre_ape, estado_usu TYPE z_estado_usu, END OF ti_usuarios2. DATA: v_estado_usu TYPE z_estado_usu, v_nombre_ape TYPE z_nombre_ape, v_dni TYPE z_dni, v_activos TYPE i. DATA: BEGIN OF ti_proveedores OCCURS 0, dni TYPE z_dni, END OF ti_proveedores. *---------------------------------------------------------------------* * Pantalla de selección *---------------------------------------------------------------------* PARAMETERS: p_nomape LIKE v_nombre_ape OBLIGATORY. SELECT-OPTIONS s_estado FOR v_estado_usu. *----------------------------------------------------------------------* START-OF-SELECTION. *----------------------------------------------------------------------* * Selecciono todos los registros SELECT * FROM ztabla_usuarios INTO TABLE ti_usuarios. * Selecciono de todos los registros el campo DNI SELECT dni FROM ztabla_usuarios INTO TABLE ti_usuarios_aux. * Selecciono el primer registro que cumpla la condición CLEAR wa_usuarios. SELECT SINGLE * FROM ztabla_usuarios INTO wa_usuarios WHERE nombre_ape NE space. * Selecciono el primer registro que cumpla la condición CLEAR v_dni. SELECT SINGLE dni FROM ztabla_usuarios INTO v_dni WHERE nombre_ape NE space. CLEAR ti_usuarios2. REFRESH ti_usuarios2. * Selecciono los registros que cumpla la condición SELECT nombre_ape estado_usu FROM ztabla_usuarios INTO CORRESPONDING FIELDS OF TABLE ti_usuarios2 WHERE nombre_ape NE space AND estado_usu = 'A'. * 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. * Obtengo el usuario activo con DNI más alto SELECT SINGLE MAX( dni ) INTO v_dni FROM ztabla_usuarios WHERE estado_usu = 'A'. * Obtengo la cantidad de usuarios activos SELECT COUNT(*) INTO v_activos FROM ztabla_usuarios WHERE estado_usu = 'A'. * Obtengo los registros de los usuarios que existan en la tabla * interna TI_PROVEEDORES SELECT * INTO TABLE ti_usuarios FROM ztabla_usuarios FOR ALL ENTRIES IN ti_proveedores WHERE dni = ti_proveedores-dni.
 
 
 
Sobre el autor
Publicación académica de Gustavo Bolivar, en su ámbito de estudios para la Carrera Consultor ABAP.
Gustavo Bolivar
Profesión: Ing Sistemas - Chile - Legajo: EU47Z
✒️Autor de: 45 Publicaciones Académicas
🎓Egresado del módulo:
Presentación:
Enfocado en programación sap abap.
Certificación Académica de Gustavo Bolivar