
Las tablas bases de datos, los elementos de datos y los dominios
1| Los datos en el sistema SAP
El sistema SAP está compuesto por datos, pero no todos los datos del sistema son iguales.
De acuerdo a para que se utilizan podemos clasificar los datos del sistema SAP en tres tipos:
- Datos maestros: Son datos que no se modifican muy a menudo. Por ejemplo: datos de materiales, cuentas, bancos, clientes, etc.
- Datos de movimientos: Son datos muy volátiles y con gran volumen de generación. Por ejemplo: datos de facturas, de pedidos, datos de documentos, etc.
- Datos del sistema o de control: Son datos que tienen que ver con la configuración del sistema.
Ahora bien, los datos del sistema SAP se guardan o almacenan en tablas bases de datos por lo que a continuación aprenderemos qué son las tablas bases de datos y a través de que herramienta de ABAP se gestionan.
2|¿Qué es el Diccionario de datos ABAP?
Una de las grandes ventajas que presenta el sistema SAP y particularmente ABAP es que existe una herramienta centralizada desde la cual se pueden crear, modificar y visualizar todas las definiciones de datos que existen en el sistema.
Esto resulta un gran ventaja comparativa frente a otros sistemas que no se cuentan con esta funcionalidad centralizada, que aparte de ello es muy poderosa, es simple de utilizar y amigable. Nos referimos al Diccionario de datos ABAP.
Diccionario de datos ABAP
Es la herramienta de ABAP que permite la administración de todas las definiciones de datos existentes en el sistema SAP.
Cuando hablamos de todas las definiciones de datos nos estamos refiriendo tanto a las definiciones estándar del sistema que fueron creadas por SAP como también a las definiciones de datos creadas por el usuario, lo que se conoce como Z.
El Diccionario de datos ABAP está completamente integrado en el Workbench ABAP, siendo el Workbench el conjunto de herramientas que se utilizan para el desarrollo, el testing y la ejecución de los programas ABAP.
Esto último significa que el resto de los componentes del WorkBench ABAP, es decir todas las herramientas de ABAP que se utilizan para desarrollar, probar y ejecutar programas tienen acceso a las definiciones almacenadas en el Diccionario de datos ABAP.
Transacción SE11
La transacción estándar SE11 corresponde al Diccionario de datos ABAP.
Es una de las transacciones más utilizadas de SAP tanto por los Consultores Técnicos ABAP como por los Consultores Funcionales de los distintos módulos.
Podemos crear, modificar y visualizar los siguientes objetos:
- Tablas base de datos: Es un objeto de ABAP en el que se almacenan en forma permanente la información. Es el componente central del Diccionario de datos ABAP. El conjunto de tablas forman lo que se denomina base de datos del sistema. En SAP una tabla base de datos es sinónimo de Tabla transparente. Cada tabla base de datos está compuesta por filas y columnas. Las filas forman lo que se denominan registros de la tabla base de datos. La columnas son los campos de la tabla base de datos. Algunos de estos campos forman lo que se conoce como clave de la tabla.
- Vistas: Es un objeto de ABAP que consiste en la unión de dos o más tablas base de datos existentes en el Diccionario de datos ABAP, utilizando condiciones de unión y selección, que nos van a permitir visualizar datos pertenecientes a varias tablas base de datos en una única selección de datos. Las vistas de tablas bases de datos tienen la misma estructura que las tablas bases de datos, es decir tienen filas y columnas, la única diferencia es que solo se almacena de ellas la definición y no los datos.
- Tipos de datos: Son tipos de datos que podemos crear dentro del Diccionario de datos ABAP, los cuales no almacenan información sino que se utilizan como referencia para definir datos en programas o tablas base de datos o para configuración. Dentro de los tipos de datos podemos crear 3 tipos diferentes de objetos que son lo sig.
Elemento de datos: Es un tipo de datos de ABAP que define el tipo de datos de una variable en un programa o de un campo dentro de una tabla base de datos.
Estructura: Es tipo de datos de ABAP que no almacena información sino que es un tipo de datos complejo que contiene varios campos. Podemos utilizar una estructura definida en el Diccionario de datos ABAP en un programa como referencia para declarar otros tipos de datos.
Tipo tabla: Es un tipo de datos de ABAP mediante el cual se puede crear un tipo de tabla interna utilizando el formato de una estructura. Se utilizan en casos muy específicos dentro de ABAP.
- Grupos de tipos: Es un objeto de ABAP que podemos crear para definir dentro de él todos los tipos de datos que utilizamos más comúnmente en nuestros programas de modo de poder incluir este grupo de tipos en nuestros desarrollos ABAP y no tener que volver a definir todos los tipos de datos nuevamente. Funciona como una especio de INCLUDE de tipos de datos.
- Dominios: Es un objeto de ABAP que consiste en la especificación técnica de un campo de una tabla de la base de datos y define lo que se conoce como estructura del campo. Es reutilizable para otros campos. Un dominio tiene asociado un ámbito de valores posibles.
- Ayudas para búsqueda: Es un objeto de ABAP que se utilizado para definir posibles valores de ayuda de un campo de una tabla base de datos o de un campo de una pantalla de SAP. Comúnmente todos los parámetros de la pantalla de selección de un programa ABAP presenta ayuda de búsqueda ya que es una forma muy práctica de simplificarle al usuario de la tarea de introducir valores correctos en la pantalla de selección.
- Objetos de bloqueo: Es un objeto de ABAP que podemos crear para permitir que varios usuarios de SAP puedan actualizar datos de una tabla base de datos en forma concurrente, sin que se pierda información, de modo de garantizar la consistencia de los datos.
Cuando un objeto ABAP del Diccionario de datos es modificado, ya sea que estemos hablando de una tabla base de datos, un elemento de datos o cualquiera de los objetos que acabamos de mencionar, cualquier programa ABAP que lo referencie o utilice automáticamente cambia su referencia al nuevo estado del objeto la próxima vez que se ejecute.
Esto se debe a que ABAP es interpretado por lo que no es necesario recompilar programas que referencien a objetos que se modifiquen dentro del Diccionario de datos.
3|¿Cómo crear una tabla base de datos, un elemento de datos y un dominio?
Vamos a aprender a crear el objeto más importante que tiene el Diccionario de datos ABAP, nos referimos a las tablas bases de datos.
Crearemos la tabla base de datos de usuarios de prueba cuyo nombre será ZTABLA_USUARIOS, para ello accedemos al Diccionario de datos ABAP correspondiente a la transacción SE11 y en la pantalla inicial de la transacción introducimos el nombre de la nueva tabla a la derecha del texto Tabla base datos y presionamos el botón Crear.
Luego veremos la siguiente pantalla en donde completamos la Descripción breve de la nueva tabla con el texto Tabla de usuarios.
En la solapa Entrega y actualización completamos la Clase de entrega con A que significa que la tabla es de aplicación y que tiene datos maestros y de movimientos.
Existen otras opciones que podremos ver si presionamos el botón del matchcode que aparece al posicionar el cursor en el cuadro de texto.
En el campo Browser datos / Actualización vista tabla elegiremos la opción Visualización / Actualización permitida esto significa que se podrá actualizar el contenido de la tabla base de datos mediante la transacción SM30.
Transacción SM30
La transacción estándar SM30 se utiliza para actualizar los registros de una tabla base de datos. En las próximas lecciones veremos en detalle para que sirve esta funcionalidad y cómo se implementa.
En la solapa Campos vamos a ingresar los campos que va a tener nuestra tabla base de datos. Estos van a ser:
- MANDANTE
- DNI
- NOMBRE_APE
- ESTADO_USU
- DIRECCION
- FNACMIENTO
- NACIONALIDAD
Recordatorio:
Todas las tablas base de datos que creamos deben tener el mandante como primer campo de la tabla. Esto se debe a que los datos almacenados en las tablas bases de datos son dependientes del mandantes, es decir los datos de una tabla en el mandante 100 son diferentes a los datos de la misma tabla en el mandante 200. El mandante se debe ser parte de la clave de la tabla base de datos.
Una ves que ya definimos cuales son los campos que forman parte de la tabla base de datos tenemos que tildar aquellos que serán los campos claves de la tabla, los cuales no podrán repetirse ni tener valores iniciales o en blanco. En la tabla base de datos ZTABLA_USUARIOS que acabamos de crear los campos que forman la clave de la tabla son el MANDT y el DNI que corresponde al documento nacional de identidad del usuario, el cual es un número único por usuario.
Cuando tenemos que definir los tipos de datos de cada campo de la tabla base de datos tenemos dos opciones: se le puede asignar un tipo instalado seleccionado la línea del campo y presionando el botón Tipo Instalado como podría ser CHAR de 30 posiciones o crear un elemento de datos para cada campo.
En nuestra tabla base de datos ZTABLA_USUARIOS crearemos los elementos de datos Z_DNI, Z_NOMBRE_APE, Z_ESTADO_USU, Z_DIRECCION, Z_FNACIMIENTO y Z_NACIONALIDAD.
También es posible utilizar elementos de datos que ya existen en el sistema, como es el caso de MANDT.
Para crear el elemento de datos Z_DNI hacemos doble clic sobre el elemento y el sistema nos ofrecerá guardar los cambios a la tabla base de datos, diremos que Sí y le asignaremos como paquete el objeto local
A continuación, visualizaremos la siguiente pantalla en donde en la Descripción breve completaremos una descripción del contenido del campo, en este caso DNI.
Para definir el tipo de datos del elemento de datos podemos elegir entre crear un dominio para este campo, utilizar un tipo instalado ya existente en el sistema o utilizar un tipo referencia.
En este caso utilizaremos un tipo instalado y le asignaremos el tipo de datos NUMC de 8 posiciones.
Luego iremos a la solapa Denominadores de campo y actualizaremos los denominadores de campo que son los títulos con los que se verá el campo cuando se visualice en una transacción o reporte.
En este caso los denominadores de campo son todos iguales pero la idea es dar una descripción más detallada de la descripción breve.
Por último, activaremos el elemento de datos mediante el botón de activación y nos aparecerá una nueva ventana de diálogo donde confirmaremos la activación seleccionado el elemento a activar y presionando el botón de la tilde verde. Finalmente visualizaremos la tabla ZTABLA_USUARIOS con el elemento de datos Z_DNI correspondiente al campo DNI.
Para el campo NOMBRE_APE crearemos el elemento de datos Z_NOMBRE_APE tal como hicimos con Z_DNI.
Para el campo ESTADO_USU, crearemos el elemento de datos Z_ESTADO_USU tal como hicimos con Z_DNI y también crearemos el dominio ZZ_ESTADO_USU para asociarle el ámbito de valores : A=Activo, I=Inactivo y N=Anulado.
Si hacemos doble clic sobre el dominio ZZ_ESTADO_USU el sistema nos preguntará en una ventana de diálogo si deseamos crear el dominio.
Contestaremos que Sí y veremos la siguiente pantalla en donde completamos la Descripción breve del dominio con Estado del usuario y el tipo de datos será CHAR de posición1.
Luego en la solapa Ámbito de valores completaremos el ámbito de los valores del dominio.
Por último, activamos el dominio ZZ_ESTADO_USU y luego activamos el elemento de datos Z_ESTADO_USU.
Vamos a realizar los mismos pasos para crear los elementos de datos Z_DIRECCION, Z_FNACIMIENTO y Z_NACIONALIDAD correspondientes al resto de los campos de la tabla base de datos ZTABLA_USUARIOS.
Ahora nos queda configurar las opciones técnicas de la tabla base de datos ZTABLA_USUARIOS presionando el botón Opciones Técnicas.
Aquí completaremos la Clase de datos con APPL0 que es la correspondiente a Datos maestros, tablas transparentes.
Y la Categoría de tamaño con 3 que es el valor correspondiente a una tabla de 78.000 a 310.000 registros de datos.
Los valores que visualizamos en la Categoría de tamaño cambian de acuerdo a cada instalación de SAP.
Luego activamos la tabla base de datos ZTABLA_USUARIOS y veremos la siguiente ventana de diálogo donde el sistema nos informa que existen mensajes de advertencia.
Aquí se nos presentan dos opciones: si presionamos que No deseamos visualizar el log de activación la tabla se activará sin importar los mensajes de advertencia, si presionamos que Si deseamos visualizar el log de activación el sistema nos dirá cuáles son las advertencias para que las corrijamos previamente a la activación de la tabla. Dado que nuestro objetivo como desarrolladores ABAP siempre será priorizar la calidad presionaremos Sí.
En la siguiente pantalla del sistema nos informa que falta definir la Categoría de Ampliación de la tabla base de datos que acabamos de construir.
Categoría de ampliación
Es lo que determina si la tabla base de datos será ampliable en el futuro, es decir si se le podrán agregar campos. Este concepto está muy ligado con las llamadas Estructuras Append las cuales veremos en detalle en el Nivel Avanzado de la carrera SAP ABAP.
Para definir la categoría de ampliación seleccionamos la opción del menú Detalles / Categoría de ampliación.
Luego visualizaremos la siguiente ventana de diálogo donde el sistema nos informa que la categoría ampliación de la tabla no se encuentra clasificada, por lo que presionamos el botón de la tilde verde. Y finalmente seleccionamos la opción Ampliable de cualquier manera y presionamos el botón Tomar.
Ahora sí podremos activar nuestra tabla base de datos ZTABLA_USUARIOS sin ninguna advertencia.