
En la última sección, ha visto cómo añadir elementos completamente nuevos a la lista de elementos de una vista CDS mediante ampliaciones de vista CDS. Sin embargo, si desea añadir anotaciones a elementos existentes o sobrescribir valores de anotación, crear una ampliación de vista CDS no es el enfoque correcto. Para añadir y sobrescribir anotaciones, debe crear una ampliación de metadatos CDS. La definición de una ampliación de metadatos CDS comienza con la palabra clave ANNOTATE VIEW seguida del nombre de la entidad de destino.
Veamos un ejemplo: entidad de vista CDS /DMO/C_AgencyTP a la izquierda, define, entre otros, un elemento AgencyID.
La extensión de metadatos CDS a la derecha repite este nombre de elemento AgencyID en su lista de elementos, es decir, dentro del par de corchetes, y añade la anotación @EnduserText.label: 'Customer Text'delante de ella.
Se aplican las siguientes restricciones para las ampliaciones de metadatos:
- No es posible definir elementos nuevos en las ampliaciones de metadatos. Solo puede direccionar elementos existentes de la entidad de destino y añadirles anotaciones.
- No todas las anotaciones se admiten en las ampliaciones de metadatos. La lista de anotaciones permitidas contiene principalmente anotaciones específicas de framework relacionadas con el desarrollo de IU, los análisis y la funcionalidad de búsqueda.
Como requisito previo para crear una ampliación de metadatos CDS, el propietario de la entidad de destino lo ha permitido explícitamente añadiendo @Metadata.allowExtensions: true a la definición.
Dentro de una extensión de metadatos, es obligatorio especificar un valor para la anotación @Metadata.layer. Esta anotación permite crear varias ampliaciones de metadatos para la misma entidad CDS. Se utiliza para controlar la prioridad, en caso de que los valores de anotación de las diferentes extensiones de metadatos se contradigan entre sí. Echemos un vistazo más de cerca.

Cuando hay más de una ampliación de metadatos para la misma entidad CDS, la verificación de sintaxis se asegura de que contengan diferentes valores para la anotación @Metadata.layer. En otras palabras, dado que en este momento se admiten cinco valores diferentes, puede definir un máximo de cinco ampliaciones de metadatos para la misma entidad base. La prioridad es la siguiente:
- #CLIENTE sobrescribe todas las demás capas.
- #PARTNER sobrescribe todas las demás capas excepto #CLIENTE.
- #INDUSTRY sobrescribe #LOCALIZATION y #CORE.
- #LOCALIZATION sobrescribe solo #CORE y
- #CORE tiene la prioridad más baja. Los metadatos de la capa #CORE se pueden sobrescribir en cualquier otra extensión de metadatos.
Nota
En el modelo de programación de aplicaciones ABAP RESTful, se recomienda colocar los metadatos relacionados con la IU en una extensión de metadatos de la capa #CORE. Esto abre una forma elegante para que las soluciones sectoriales, los socios y los clientes ajusten (sobrescriban) la configuración de la IU a sus necesidades.
