ABAP CDS Table Buffering
ABAP CDS Table Buffering – El rendimiento en SAP es clave para la eficiencia de las aplicaciones empresariales. Una técnica fundamental para optimizar el acceso a datos es el table buffering o almacenamiento en caché de tablas. En este artículo, explicaremos cómo funciona esta técnica aplicada a CDS View Entities en ABAP, con un enfoque para principiantes y un ejemplo práctico.
¿Qué es el Table Buffering?
El table buffering almacena datos en la memoria compartida de la instancia del Application Server (AS) para evitar accesos constantes a la base de datos. Esto mejora el rendimiento al reducir los tiempos de respuesta en operaciones de lectura.271
SAP permite el almacenamiento en caché para:
- Tablas DDIC
- Vistas de base de datos DDIC
- CDS View Entities
- Vistas CDS basadas en DDIC (obsoletas)
Cuando se accede a una tabla o vista con buffering activado mediante ABAP SQL, los datos se consultan primero en la caché. Si no están disponibles, se recuperan de la base de datos y se almacenan en la memoria.
Tipos de Buffering en ABAP CDS View Entities
Existen distintos tipos de buffering en SAP:
- Buffering Total (Single Record Buffering): Se almacenan todas las filas de la tabla en la caché.
- Buffering Genérico (Generic Buffering): Solo ciertas combinaciones de claves se almacenan.
- Buffering Individual (Full Buffering): Se almacenan registros de forma individual.
Para activar el buffering en una CDS View Entity, se utiliza la siguiente anotación:
@AbapCatalog.entityBuffer.definitionAllowed: true
Luego, se define el tipo de buffering en una vista CDS con la sintaxis:
DEFINE VIEW ENTITY BUFFER ON cds_view_entity …
Este buffer se relaciona con una capa en el modelo de datos, como core, localization, industry, partner o customer.
Ejemplo Práctico: Implementación de Table Buffering en CDS View Entities
A continuación, crearemos una CDS View Entity con table buffering activado.
@AccessControl.authorizationCheck: #NOT_REQUIRED
@AbapCatalog.entityBuffer.definitionAllowed: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@AbapCatalog.entityBuffer.definitionAllowed: true
define view entity ZDEMO_CDS_BUFFERED
as select from scustom
{
key id as CustomerID,
name as CustomerName,
city as City
}
En este caso, hemos definido una vista sobre la tabla SCUSTOM
, activando el almacenamiento en caché con @AbapCatalog.entityBuffer.definitionAllowed: true
.
Para definir el tipo de buffering, creamos la entidad buffer:

define view entity buffer on ZDEMO_CDS_BUFFERED
layer core
type single
Explicación de la Sintaxis
DEFINE VIEW ENTITY BUFFER ON ZDEMO_CDS_BUFFERED
: Define el buffer para la vista ZDEMO_CDS_BUFFERED
.
core
: Define el nivel de buffering.
single
: Solo almacena registros individuales en la memoria del buffer
Restricciones del Table Buffering en CDS View Entities
A pesar de sus ventajas, el table buffering en CDS View Entities tiene ciertas restricciones:
- Solo se pueden utilizar tablas DDIC o otras CDS View Entities con buffering permitido.
- Se necesita al menos un campo clave con una longitud total no mayor a 900 bytes.
- No se permiten parámetros de entrada en la vista.
- No se pueden usar cálculos dinámicos como timestamps actuales.
- No se pueden acceder a tablas con data aging habilitado.
Conclusión
El table buffering en ABAP CDS View Entities es una técnica poderosa para mejorar el rendimiento en SAP. Al reducir el acceso a la base de datos, permite tiempos de respuesta más rápidos en las consultas. Sin embargo, debe usarse estratégicamente para evitar inconsistencias y asegurarse de que los datos en caché sean adecuados para la aplicación.
Si tu aplicación requiere acceso frecuente a datos estáticos o con pocas modificaciones, el table buffering puede marcar una gran diferencia en la optimización del sistema.
Documentación Oficial sobre ABAP CDS Table Buffering en SAP ABAP
Visita la documentación oficial de este tema en el siguiente enlace.