Creación de extensiones de metadatos

Objective

After completing this lesson, you will be able to ampliar vistas mediante ampliaciones de metadatos CDS.

Extensiones de metadatos

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.

Creación de extensión de metadatos

Las ampliaciones de metadatos CDS son objetos de desarrollo propios. No están definidos en las definiciones de datos CDS.

Para definir una ampliación de metadatos CDS, proceda de la siguiente manera:

  1. En el explorador de proyectos, localice la definición de datos de la entidad CDS que desea ampliar.
  2. Haga clic con el botón derecho en la definición de datos y seleccione Nuevo Ampliación de metadatos.
  3. Si es necesario, ajuste el paquete e introduzca un nombre y una descripción para el objeto nuevo. A continuación, seleccione Siguiente.
  4. Introduzca una orden de transporte y seleccione Siguiente.
  5. En la lista de plantillas, seleccione Anotar vista y seleccione Finalizar.

    Nota

    También hay una plantilla Anotar entidad. Esta plantilla utiliza la palabra clave ANNOTATE ENTITY en lugar de ANNOTATE VIEW. ANNOTATE ENTITY se puede utilizar para cualquier tipo de entidad CDS, pero el conjunto de anotaciones disponibles es más pequeño. Le recomendamos que utilice ANNOTATE VIEW al crear su ampliación de metadatos para una vista CDS y no para uno de los otros objetos CDS.

Crear ampliaciones de metadatos CDS

Desea ampliar los metadatos de una de sus entidades de vista. En un primer paso, externalice anotaciones existentes en una ampliación de metadatos CDS. A continuación, cree una segunda ampliación de metadatos para añadir más anotaciones y sobrescribir las existentes.

Modelo:

  • n.a.

Solución:

  • /LRN/C_EMPLOYEE_MDX (Definición de datos)
  • /LRN/C_EMPLOYEE_MDX (Ampliación de metadatos)
  • /LRN/C_EMPLOYEE_MDX2 (Ampliación de metadatos)

Prerrequisitos

Para este ejercicio, necesita la entidad de vista con parámetros para los datos de empleado (el nombre sugerido era: Z##_C_EmployeeQueryP). Si no ha finalizado los ejercicios relacionados, cree una copia de la definición de datos /LRN/C_EMPLOYEE_EXT.

Tarea 1: Extraer una extensión de metadatos

Ajuste la definición de su entidad de vista con parámetros para datos de empleado (el nombre sugerido era: Z##_C_EmployeeQueryP) y extraiga todas las anotaciones para las que se permite esto en una nueva ampliación de metadatos de la capa más baja. Utilice el mismo nombre para la definición de datos y la extensión de metadatos. Después de la extracción, utilice una corrección rápida para permitir la ampliación de la entidad de vista.

Pasos

  1. Abra la definición de su entidad de vista con parámetros para datos de empleado y asegúrese de que esté activa.

    1. Pulse Ctrl + Mayús + A.

    2. En el campo de búsqueda, introduzca Z##_C_, donde ## es su número de grupo.

    3. En la lista de posiciones coincidentes, seleccione la entrada Z##_C_EmployeeQueryP y seleccione OK.

    4. Pulse Ctrl + F3 para activar el objeto de desarrollo.

  2. Con una herramienta de refactorización, extraiga todas las anotaciones disponibles en una nueva extensión de metadatos.

    1. En el menú Eclipse, seleccione Código fuente→Extraer extensión de metadatos.

    2. En el campo Entidad ampliada, introduzca Z##_C, pulse Ctrl + Espacio y seleccione el nombre de la entidad de vista CDS que desea ampliar (Z##_C_EmployeeQueryP).

    3. Copie ese nombre del campo Entidad ampliada en el campo Nombre.

    4. Introduzca una descripción (por ejemplo, Employee Query (Metadata)) y seleccione Next.

    5. Confirme la orden de transporte y seleccione Siguiente.

    6. Seleccione Desplegar todo en la parte derecha y analice las anotaciones que se pueden extraer.

    7. Seleccione Seleccionar todo en la parte derecha y Finalizar en la parte inferior.

  3. Utilice la finalización de código para establecer la capa de la extensión de metadatos en el valor con la prioridad más baja.

    1. En la anotación @Metadata.layer, elimine el marcador de posición layer.

    2. Presione Ctrl + Espacio para invocar la finalización del código.

    3. En la lista de sugerencias, seleccione el valor #CORE, ya que esta capa tiene la prioridad más baja.

  4. Utilice una corrección rápida para ajustar la entidad de vista anotada para que permita ampliaciones de metadatos.

    1. Coloque el cursor en la fila de código que comienza con annotate view y pulse Ctrl + 1 para invocar el quickfix. Como alternativa, puede seleccionar el icono de error con la bombilla junto a esta fila de código.

    2. En la lista de quickfixes disponibles, seleccione Añadir la anotación "Metadata.allowExtensions" a la vista base.

  5. Active la ampliación de metadatos y la entidad de vista anotada.

    1. Pulse Ctrl + Mayús + F3 para activar todos los objetos de desarrollo inactivos.

    2. Seleccione Seleccionar todo y OK.

    3. Seleccione Seleccionar todo y Activar.

  6. Abra la entidad de vista anotada en la herramienta Anotaciones activas y verifique que algunas de las anotaciones ahora provengan de la extensión de metadatos.

    1. Haga clic con el botón derecho en cualquier lugar del código fuente y seleccione Abrir con→anotaciones activas.

      Resultado

      Para algunas de las anotaciones, la columna Fuente de datos de origen debe contener su ampliación de metadatos.

Tarea 2: Crear una extensión de metadatos

En función de una plantilla adecuada, cree una segunda ampliación de metadatos para la misma entidad de vista que antes (nombre sugerido: Z##_C_EMPLOYEE_QUERYP2). Seleccione la capa de metadatos con la prioridad más alta, sobrescriba la etiqueta para el parámetro P_DATE y añada una etiqueta para el elemento de vista AssistantName.

Pasos

  1. En el Explorador de proyectos, localice la definición de la entidad de vista que ha ampliado en la tarea anterior.

    1. Por ejemplo, despliegue el subnodo Definiciones de datos de→Core Data Services del paquete ZS4D430_##.

  2. Para esta entidad de vista, cree una nueva ampliación de metadatos CDS basada en la plantilla Anotar vista con parámetros.

    1. Haga clic con el botón derecho en el nombre de la definición de datos para abrir el menú contextual y seleccione Nueva extensión de metadatos.

    2. Copie el valor del campo Entidad ampliada en el campo Nombre y añada el carácter 2 para distinguirlo de la ampliación de metadatos ya existente.

    3. Introduzca una descripción (por ejemplo, Consulta de empleado (metadatos finales)) y seleccione Siguiente.

    4. Confirme la orden de transporte y seleccione Siguiente.

    5. En la lista de plantillas disponibles, seleccione Anotar vista con parámetros y seleccione Finalizar.

  3. Utilice la finalización de código para establecer la capa de la extensión de metadatos en el valor con la prioridad más alta.

    1. En la anotación @Metadata.layer, elimine el marcador de posición layer.

    2. Presione Ctrl + Espacio para invocar la finalización del código.

    3. En la lista de sugerencias, seleccione el valor #CLIENTE, ya que esta capa tiene la prioridad más alta.

  4. Sustituya el marcador de posición parameter_name por p_date y añada una nueva etiqueta para este parámetro, por ejemplo, Fecha de conversión de moneda.

    1. Ajuste el código de la siguiente manera:

      Code Snippet
      1234567891011
      @Metadata.layer: #CUSTOMER annotate view Z##_C_EmployeeQueryP with parameters @EndUserText.label: 'Currency Conversion Date' p_date { element_name; }
  5. Sustituya el marcador de posición element_name por AssistantName y añada una etiqueta para este elemento de vista, por ejemplo, Asistente de departamento.

    1. Ajuste el código de la siguiente manera:

      Code Snippet
      1234567891011
      @Metadata.layer: #CUSTOMER annotate view Z##_C_EmployeeQueryP with parameters @EndUserText.label: 'Currency Conversion Date' p_date { @EndUserText.label: 'Department Assistant' AssistantName; }
  6. Active la nueva ampliación de metadatos.

    1. Pulse Ctrl + F3 para activar el objeto de desarrollo.

  7. Abra la entidad de vista anotada en la herramienta Anotaciones activas y verifique que la etiqueta para el parámetro p_date proviene de la nueva ampliación de metadatos.

    1. Haga clic con el botón derecho en cualquier lugar del código fuente y seleccione Abrir con→anotaciones activas.