BASES DE DATOS LÓGICAS
|
9.1. INTRODUCCIÓN:
- Una base de datos lógica (BDL) es un programa SAP especial abap/4 que lee y procesa información de tablas de una base de datos. Puede incluirse como atributo de un programa abap/4 de usuario, y se compila conjuntamente con él. Para ir por menú: Herramientas – Workbench Abap 4 – Desarrollo – Entorno programación – Base de datos lógicas. O bien con la transacción SE36. No es muy útil crear bases de datos lógicas nuevas, salvo que sean pequeñas modificaciones de las ya existentes en SAP.
- El nombre de una base de datos lógica tiene 3 caracteres. Los 2 primeros identifican la base de datos dentro de una aplicación o módulo concreto de SAP, y el tercero identifica dicho módulo. Ejemplos: DDF (DD: deudores, F: módulo FI), AFI (AF: órdenes mantenimiento, I: módulo PM de mantenimiento de plantas).
- Para saber si es posible acceder a una tabla mediante una base de datos lógica existente, ir a Detalles – Utilización de tablas. Si no es posible, habrá que acceder a la tabla con un SELECT normal al Diccionario de Datos. Para indicar al programa que se va a usar una base de datos lógica, en la pantalla de atributos de creación del programa hay que indicar la BDL a usar (son 2+1 caracteres). Las BDL tienen variables de selección propias, con lo que automáticamente aparecerán en pantalla de selección.
9.2. CARACTERÍSTICAS DE LAS BDL:
- Características principales: como las BDL estándar están codificadas eficientemente, el acceso a la base de datos es eficiente; a través de ella puede modularizarse un sistema; son fáciles de usar (mediante la sentencia GET) y de generar; si un conjunto de programas debe leer la misma información, los accesos a la base de datos puede codificarse una sola vez, así como la pantalla de selección (que será compartida por todos ellos); el chequeo de autorizaciones es centralizado.
- Jerarquía: El acceso a las tablas se hace de forma jerárquica. Se empieza a leer desde el nivel más alto de la jerarquía, y se va profundizando. Si hay que “profundizar” mucho, es más eficiente usar un SELECT, que accede directamente a la información de la tabla concreta. Pero las bases de datos lógicas son muy útiles cuando hay que acceder a varias o muchas de las tablas de la jerarquía, en lugar de a una sola. Así no es necesario codificar en el programa fuente muchos SELECT anidados, para ir accediendo consecutivamente a las distintas tablas. De esta forma facilitan las selecciones o accesos completos a varias tablas.
- Eventos: Para usar bases de datos lógicas los eventos son imprescindibles para que funcione el programa. En el START-OF-SELECTION se lee la base de datos lógica y se trae la información, con los eventos GET sucesivos. Sintaxis de esta sentencia de evento:
GET [ LATE ] nametable.Este evento se activa cuando la base de datos lógica hace un PUT (sentencia interna) en la tabla correspondiente. La opción LATE indica que debe profundizarse hasta el final de la jerarquía para que se active el evento GET. Es útil por ej. para hacer totales, sumando todas las entradas leídas.
- Elementos (al menos) de una base de datos lógica:
- Estructura: Componente básico. Refleja las dependencias jerárquicas entre tablas de la base de datos. La tabla más general de la BDL es el nodo raíz. Cada nodo (es una estructura del Diccionario de Datos) puede tener una o más tablas hijas. Se ven todas las tablas de la BDL.
- Selecciones: Determina la interface con el usuario para cada report (es decir, la pantalla de selección). Los campos que componen dicha pantalla vienen determinados por las estructuras utilizadas (sentencias TABLES). Nombre de este programa: DBXXXSEL, siendo XXX la base datos lógica. Sólo son PARAMETERS, SELECT-OPTIONS, ...
- Código fuente: El programa (SAP) de la base de datos lógica consta de un conjunto de subrutinas (llamadas por GET) que seleccionan los datos y los pasa al report que usa la BDL. Nombre del programa: SAPDBXXX, siendo XXX la base de datos lógica.
- Otros componentes: Documentación, textos específicos del lenguaje, pantallas de selección específicas, …
El nombre de los programas de las bases de datos lógicas tienen la forma SAPDBxxx, siendo xxx el nombre de dicha BDL. Por ejemplo, para la DDF, el programa se llamará SAPDBDDF. Las subrutinas de estos programas interactúan con los eventos del programa abap/4 (como la sentencia PUT (llamada) interactúa con la sentencia GET (llamante) del programa abap/4). Subrutinas:
- FORM INIT: Es llamado una sola vez, antes de mostrarse la pantalla de selección.
- FORM PBO: Es llamada cada vez que se va a mostrar dicha pantalla.
- FORM PAI: Es llamada cada vez que se pulsa ENTER en la pantalla de selección. Se pasan a la subrutina los parámetros FNAME y MARK (definición automática).
- FORM PUT_tabla: Es llamada cuando en el report abap/4 se ejecuta la sentencia GET tabla. Los datos se leen internamente con la sentencia SELECT. La cesión del control al report principal se hace con la sentencia PUT tabla. Tras ejecutar PUT_nodoraíz, el orden de ejecución es: AUTHORITY_CHECK (si existe), el bloque de proceso del GET, las subrutinas PUT_tabla de mismo nivel o inferior (si existe el GET correspondiente). Al final, si existe, se ejecuta GETLATE.
- FORM AUTHORITY_CHECK_tabla: Es llamada automáticamente por PUT_tabla. Se usa para validar autorizaciones de acceso a esa tabla.
- FORM PUT_xxx_MATCHCODE: Es llamada cuando se activa la búsqueda por matchcode. xxx es el nombre de la base de datos lógica.
- FORM BEFORE_EVENT: Se ejecuta antes del evento marcado en la variable predef. EVENT.
- FORM AFTER_EVENT: Se ejecuta después del evento especificado en EVENT.
- p_VAL, s_VAL, s_LOW_VAL, s_HIGH_VAL: Se ejecutan al pulsar F4 en el campo concreto ‘p’ o ‘s’ de la pantalla de selección, siendo ‘p’ (un PARAMETERS) y ‘s’ (un SELECT-OPTIONS) variables.
- p_HLP, s_HLP, s_LOW_HLP, s_HIGH_HLP: Se ejecutan al pulsar F1 en el campo concreto ‘p’ o ‘s’ de la pantalla de selección, siendo ‘p’ y ‘s’ variables.
9.4. COMPORTAMIENTO EN TIEMPO DE EJECUCIÓN:
El sistema llama a los bloques de proceso (subrutinas del report y del programa de la base de datos lógica) en un orden determinado. Estas son las fases que se siguen:
- Fase PBO:Inicializaciones antes de que aparezca la pantalla de selección, 1 sola vez. SubrutinasINIT y PBO (de la BDL), y eventosINITIALIZATION y AT SELECTION-SCREENOUTPUT del programa principal. Los procesos PBO son ‘Process Before Output’ (se procesan antes de mostrarse la pantalla de selección).
- Fase pantalla de selección:El usuario introduce valores en las variables de selección.
- Fase de ayudas:Si el usuario pulsa F1, ayuda o F4 en la pantalla de selección:
- Subrutinas del programa de la base de datos lógica: p_VAL, p_HLP, s_VAL, s_HLP, s_LOW_VAL, s_LOW_HLP, s_HIGH_VAL, s_HIGH_HLP.
- Eventos del programa principal: AT SELECTION-SCREEN ON VALUE-REQUEST FOR { parámetro | criterio_LOW | criterio_HIGH }.
- Fase PAI:Validaciones de los campos de entrada de la pantalla de selección. SubrutinaFORM PAI USING FNAME MARK (de la BDL), y eventosAT SELECTION-SCREEN campo, AT SELECTION-SCREEN ON END OF campo, AT SELECTION-SCREEN del programa principal. Los procesos PAI son ‘Process After Input’ (se procesan después de que el usuario rellene los campos de entrada de la pantalla de selección).
- Fase de selección de datos:SubrutinaFORM PUT_tabla del programa de la BDL, y eventosSTART-OF-SELECTION, GET [ LATE ] tabla, END-OF-SELECTION del report Abap/4.