¿Cómo crear una Tabla Cluster y un Cluster de Tablas en SAP?
Además de las tablas transparentes en el sistema SAP existen tablas pool y tablas cluster. Las tablas pool y las tablas cluster se caracterizan por el hecho de que varias tablas definidas lógicamente en el Dictionary ABAP se combinan en una tabla de base de datos física (pool o cluster de tablas).
En las tablas cluster se guardan datos de diferentes tablas en una tabla de base de datos. En consecuencia, la intersección de los campos clave de las tablas cluster forma la clave del cluster.
Los datos dependientes de una clave de cluster se guardan en el campo VARDATA del cluster de tablas. y si el campo VARDATA no puede asumir todos los datos dependientes, la interfaz de base de datos crea un registro de desbordamiento. Tenemos otro campo PAGNO garantiza la singularidad dentro del cluster de tablas.
La interfaz de la base de datos comprime el contenido del campo VARDATA. En consecuencia, el campo VARDATA contiene una descripción sobre cómo se deben descomprimir sus datos. Los campos TIMESTAMP y PAGELG contienen información de administración.
Como conclusión una tabla Cluster es una tabla de la base de datos que contiene varias tablas. Se basa en que las ‘subtablas’ tienen un índice común, y un campo genérico donde se guarda todos los datos de las ‘subtablas’. Las tablas cluster se manejan de forma parecida a tablas ‘reales’, pero en realidad se utiliza la Tabla cluster para crear/visualizar/modificar datos de la tabla. La principal propiedad de una tabla cluster es que guarda varios registros de una tabla en un solo registro de la tabla cluster. Una Tabla Cluster es útil cuando tenemos pocas subtablas pero muchos datos (registros grandes). Realmente su efectividad consiste en conseguir en un solo acceso a la base de datos a los contenidos de muchas tablas.
Un ejemplo para entender la efectividad de estas tablas, es suponer que guardamos la cabecera y el detalle de un pedido en un único registro de la base de datos (en una tabla cluster). Sin embargo, en SAP leeremos el detalle como si estuviera en varios registros aparte de que tenemos la cabecera ya leída, pues con las tablas cluster está todo en un mismo registro, lo que nos ofrece un alto rendimiento en las aplicaciones.
Entendida la parte teórica pasamos a la parte práctica. En este tutorial creamos el cluster de tablas ZCL_LOGALI y la tabla cluster ZTB_LOGALI.
- La longitud máxima de caracteres que se puede asignar al nombre de un cluster de tablas en SAP es de diez caracteres. Creamos el cluster de tablas ZCL_LOGALI entrando en la transacción SE11 del diccionario ABAP. En el menú navegamos en UtilidadesàOtros objetos Dictionary y seleccionamos la opción Pool/Cluster tablas y le ponemos el nombre del cluster de tablas. Utilizamos el iconito de crear para empezar con la creación.
- Seleccionamos la opción Cluster tablas.
- Informamos el campo obligatorio Descripción breve y añadimos el campo MANDT para crear el cluster de tablas con dependencia de mandante (no es obligatorio añadir el campo MANDT).
- Ya tenemos el cluster de tablas que se puede activar asignando el paquete de desarrollo y la orden de transporte. Para quitar los mensajes de advertencia podemos actualizar las opciones técnicas en la transacción SE13 que permiten indicar la categoría de tamaño por registros esperados y las propiedades específicas de base de datos. Entrando en la transacción SE13 informamos el campo Nombre tabla/vista con el nombre del cluster de tablas y utilizamos el botón Modificar.
- Indicamos la categoría de tamaño 1 y grabamos las modificaciones. Ahora podemos activar el cluster de tablas sin mensajes de advertencias.
- Volvemos a la transacción del diccionario de datos SE11 y creamos la tabla cluster ZTB_LOGALI que añadiremos al cluster de tablas.
- En la pestaña Entrega y actualización seleccionamos la clase de entrega A y la Visualización/actualización permitida.
- Para este ejemplo creamos tres campos en la tabla: el mandante, el campo cliente y el campo sociedad. Muy importante aparte de los campos indicados tenemos que tener el campo VARKEY que lo tenemos como campo clave en el cluster de tablas, así que utilizamos el siguiente modelo de datos:
Campo Elemento de datos Tipo instalado/Longitud Clave MANDT MANDT X VARKEY CHAR / 110 X CLIENTE LIFNR X SOCIEDAD BUKRS - Configuramos las opciones técnicas grabando las modificaciones y asignando el paquete de desarrollo y la orden de transporte.
- Volvemos con la flecha atrás o con la tecla F3 a la tabla transparente. Para indicar que la tabla es una tabla cluster y no una tabla transparente tenemos que volver de nuevo a la pestaña Entrega y actualización y navegar en el menú en DetallesàVisualizar/Modificar clase de tabla.
- Con esta opción el sistema crea en la pestaña Entrega y actualización un campo nuevo que permite asignar el cluster de tablas al cual forma parte la tabla cluster. También podemos notar como el tipo de tabla se cambió de tabla transparente a tabla cluster.Ya tenemos el cluster de tablas con una tabla cluster. Al mismo cluster se pueden añadir n tablas cluster.
Cómo se hace la lectura de estas tablas Cluster en un programa ABAP o en una función?
Hola, [FROM ] [FROM ] …() [CLIENT ] ID . [TO ] [TO ] …() [CLIENT ] ID .() [CLIENT ] ID .
Las tablas de bases de datos clúster son tablas relacionales especiales, definidas en ABAP que tienen un uso especial. Utilizamos diferentes sentencias Open SQL (no SELECT o INSERT) para leer y escribir datos en la tabla de clúster con las instrucciones EXPORT TO DATABASE e IMPORT FROM DATABASE.
Para guardar datos de un programa ABAP en una base de datos de clúster, utilizamos la siguiente instrucción:
EXPORT
TO DATABASE
Para leer utilizamos la siguiente instrucción:
IMPORT
FROM DATABASE
Por último, para eliminar los datos:
DELETE FROM DATABASE
Un saludo.