Uso de anotaciones ABAP en vistas CDS

Objectives

After completing this lesson, you will be able to:
  • Utilice anotaciones ABAP en vistas CDS.
  • Trabajar con textos traducibles en CDS.

Anotaciones ABAP para vistas CDS

Las anotaciones SAP son anotaciones CDS creadas y suministradas por SAP. En función de la evaluación, distinguimos dos grupos de anotaciones SAP: anotaciones ABAP y anotaciones específicas de framework.

Anotaciones ABAP

Las anotaciones ABAP definen atributos técnicos y semánticos de un objeto CDS. Se evalúan cuando el objeto definido en el código fuente CDS se activa o cuando el objeto se utiliza en el entorno de tiempo de ejecución ABAP. Las anotaciones ABAP pueden modificar el comportamiento de las sentencias SQL ABAP que acceden a un objeto CDS.

Anotaciones específicas de framework

Las anotaciones específicas de framework definen las propiedades técnicas y semánticas de los objetos CDS necesarios para componentes de software específicos, como OData, IU, análisis, etc. Se evalúan mediante los frameworks de los componentes de software correspondientes mediante una API adecuada y no son relevantes para las activaciones y el entorno de tiempo de ejecución ABAP.

En función del alcance, distinguimos cinco grupos de anotaciones:

Anotaciones de entidad

Anotaciones para vistas CDS y entidades de vista CDS. Colocado delante de la sentencia DEFINE VIEW o de la sentencia DEFINE VIEW ENTITY.

Anotaciones de elemento
Las anotaciones de un elemento de la lista SELECT de una vista CDS. Colocado delante del elemento.
Anotaciones de parámetro
Las anotaciones de un parámetro de una vista CDS. Se coloca delante del parámetro.
Anotaciones de ampliación
Las anotaciones de una ampliación de vista CDS. Colocado delante de la sentencia EXTEND VIEW o la sentencia DEFINE VIEW ENTITY.
Anotaciones de función
Las anotaciones de una función de tabla CDS. Se sitúan delante de la sentencia DEFINE TABLE FUNCTION.

Anotaciones ABAP importantes para entidades de vista CDS

Para las entidades de vista CDS, existen las siguientes anotaciones ABAP importantes:

AbapCatalog.dataMaintenance

Se puede utilizar para restringir la vista previa de datos para una entidad de vista CDS.

ABAPCatalog.viewEnhancementCategory

Especifica cómo se amplía la entidad de vista utilizando ampliaciones de vista CDS. Se puede especificar una lista de valores separados por comas entre corchetes de la matriz de anotaciones.

AccessControl.authorizationCheck

Define el control de acceso implícito cuando se utiliza ABAP SQL para acceder a la vista CDS.

ObjectModel.usageType.<...>

Caracterizar entidades de vista CDS con respecto a sus propiedades relevantes para el rendimiento.

AbapCatalog.entityBuffer.definitionAllowed

Se puede utilizar para activar o desactivar la grabación en memoria intermedia de tablas para una entidad de vista CDS.

Anotaciones ABAP para elementos de vista

La mayoría de las anotaciones semánticas son solo esto: información semántica a evaluar por los frameworks que se basan en CDS.

Solo hay algunas anotaciones en la categoría Semántica, que son anotaciones ABAP.

En las entidades de vista CDS, es obligatorio utilizar la anotación @Semantics.amount.currencyCode para enlazar elementos de importe (tipo de diccionario predefinido CURR) a un elemento de código de moneda (tipo de diccionario predefinido CUKY). Del mismo modo, es obligatorio utilizar la anotación @Semantics.quantity ty.unitOfMeasure para enlazar elementos de cantidad (tipo de diccionario predefinido QUAN) a un elemento de unidad (tipo de diccionario predefinido UNIT). Sin estas anotaciones, un usuario de la entidad CDS tendrá dificultades para interpretar y procesar correctamente los valores proporcionados en estos campos.

Anotaciones agrupadas

Las anotaciones de la misma categoría de anotación se pueden agrupar para que sea visible que estén juntas. En el ejemplo, hay tres anotaciones de la categoría ObjectModel. Todos ellos pertenecen a la subcategoría ObjectModel.usageType. En el ejemplo de código inferior, encontrará un grupo que empieza por @ObjectModel: seguido de un par de corchetes. Dentro de los corchetes, normalmente hay una lista de anotaciones separadas por comas, sin la primera parte (ObjectModel). En nuestro ejemplo, solo hay un subgrupo que empieza por usageType: y que tiene tres anotaciones en su lista separada por comas.

Consejo

Si prefiere esta sintaxis, puede fijarla como predeterminada al insertar anotaciones por finalización automática. En el menú ADT, vaya a Ventana→Preferencias. Vaya a Desarrollo ABAP→Editores→Editores de código fuente→Terminación de código→CDS y, en Inserción de anotaciones CDS, seleccione Estructurado (varias líneas con todos los paréntesis).

Anotaciones ABAP para textos traducibles

Las anotaciones ABAP que empiezan por EndUserText se utilizan para definir textos semánticos traducibles para objetos CDS.

EndUserText.label está disponible como anotación de vista o como anotación de elemento. El valor está limitado a una longitud de 60 caracteres.

EndUserText.quickinfo solo está disponible como anotación de elemento. El valor se almacena como una cadena y puede tener una longitud arbitraria.

Nota

Cuando un elemento de vista se basa en un elemento de datos de diccionario, el framework CDS deriva una etiqueta y una información rápida de las etiquetas de campo que se actualizan en el elemento de datos. Para estos campos, las anotaciones de texto solo son necesarias, en caso de que desee sustituir los textos que provienen del elemento de datos.

Vista Anotaciones activas

La vista Anotaciones activas resume la información semántica de la entidad CDS y sus elementos. Enumera todas las anotaciones de entidad y elemento incluidas en la definición de datos. También enumera información semántica que se deriva (hereda) de otros objetos de repository, por ejemplo, definiciones de tabla de Dictionary y elementos de datos.

Para abrir la vista Anotaciones activas, proceda de la siguiente manera:

  1. Haga clic con el botón derecho en Definición de datos. (Ya sea en la ventana del editor o en el Explorador de proyectos.)
  2. Seleccione Abrir con→anotaciones activas.

En la configuración predeterminada de la perspectiva ABAP, la vista Anotaciones activas se visualiza en una nueva pestaña en la ficha debajo de la vista de editor.

En el ejemplo anterior, puede ver ese elemento Salario anual de la entidad de vista CDS Z00_R_Employee tiene una etiqueta Salario anual que no está definido en la definición de datos CDS. Esta etiqueta se deriva (hereda) del campo fuente en la tabla de base de datos Z00_EMPLOYEE y se origina en el elemento de datos Z00_SALARY, con el que se tipifica el campo de tabla.

Cómo utilizar anotaciones ABAP en vistas CDS

Reproduzca el vídeo para ver cómo utilizar anotaciones ABAP en vistas CDS.

Utilizar anotaciones en definiciones de datos

Desea enriquecer la entidad de vista CDS con metadatos. En un primer paso, defina y actualice anotaciones ABAP tanto para toda la vista como para elementos de vista individuales.

Modelo:

  • /LRN/R_EMPLOYEE (Definición de datos)

Solución:

  • /LRN/R_EMPLOYEE_ANN (Definición de datos)

Tarea 1: Copiar plantilla (opcional)

Copie la definición de datos del modelo. Si ha finalizado el ejercicio anterior, puede omitir esta tarea y continuar editando la definición de datos Z##_EMPLOYEE.

Pasos

  1. Copie la definición de datos /LRN/R_EMPLOYEE en una definición de datos de su propio paquete (nombre sugerido: Z##_EMPLOYEE, donde ## representa su número de grupo).

    1. En la vista Explorador de proyectos, haga clic con el botón derecho en la definición de datos /LRN/R_EMPLOYEE para abrir el menú contextual.

    2. En el menú contextual, seleccione Duplicar ....

    3. Introduzca el nombre del paquete en el campo Paquete. En el campo Nombre, introduzca el nombre de la entidad de la vista CDS (Z##_Employee, donde ## representa su número de grupo).

    4. Ajuste la descripción y seleccione Siguiente.

    5. Confirme la orden de transporte y seleccione Finalizar.

  2. Active la copia.

    1. Pulse Ctrl + F3 para activar la definición de datos.

Tarea 2: Actualizar anotaciones de vista

En su definición de datos, actualice las anotaciones de vista. Añada una anotación que se pueda utilizar para restringir la vista previa de datos para una entidad de vista CDS y ajustar los valores de las anotaciones ObjectModel.usageType.

Pasos

  1. Al principio de la definición de datos, use la finalización de código para agregar la anotación @ABAPCatalog.dataMaintenance con su valor predeterminado.

    1. Sitúe el cursor al principio de la primera fila de código y pulse Intro para insertar una nueva fila vacía.

    2. En la fila vacía, introduzca @A y pulse Ctrl + Espacio para invocar la finalización de código.

    3. En la lista de sugerencias, seleccione @ABAPCatalog: { } (anotación.

    4. Introduzca un signo de punto (.) y pulse Ctrl + Espacio de nuevo.

    5. Seleccione dataMaintenance: #RESTRICTED (anotación).

  2. Agrupe las anotaciones de entidad que empiecen por @ABAPCatalog.

    Consejo

    Puede utilizar la sintaxis del grupo de anotación @ObjectModel.usageType como anteproyecto.
    1. Ajuste el código de la siguiente manera:

      Code Snippet
      123456789
      // @AbapCatalog.dataMaintenance: #RESTRICTED // @AbapCatalog.viewEnhancementCategory: [#NONE] @AbapCatalog: { dataMaintenance: #RESTRICTED, viewEnhancementCategory: [#NONE] } @AccessControl.authorizationCheck: #NOT_REQUIRED
  3. Visualice la documentación de las anotaciones @ObjectModel.usageType y actualice los valores.

    Nota

    Debe asegurarse de que los valores de anotación se ajusten a las opciones técnicas de tabla de su tabla de base de datos para datos de empleado.
    1. Sitúe el cursor en @ObjectModely pulse F1 para abrir la ayuda de idioma ABAP.

    2. En la vista Ayuda de idioma ABAP que se abre debajo del editor, seleccione@ObjectModel, anotaciones de vista CDS, entidad de vista.

    3. Para la anotación serviceQuality, seleccione #D porque la vista no admite el procesamiento transaccional.

    4. Para la anotación sizeCategory, seleccione #M porque esperamos menos de 100.000 conjuntos de datos.

    5. Para la anotación dataClass, seleccione #MASTER porque los datos de empleado son datos maestros.

Tarea 3: Actualizar anotaciones de elemento

En su definición de datos, añada la anotación de elemento obligatoria para establecer el enlace entre el salario anual y el código de moneda. Utilice la vista Anotaciones activas para analizar las etiquetas de elemento derivadas de elementos de datos y proporcionar una etiqueta alternativa para el elemento CurrencyCode.

Pasos

  1. En la lista de elementos, anule el comentario del elemento AnnualSalary y el elemento CurrencyCode.

    1. Seleccione ambas filas de código y pulse Ctrl + Mayús + < para eliminar los signos de comentario del principio de cada fila.

  2. Añada la anotación de elemento obligatorio que identifica el elemento AnnualSalary como importe y lo vincula al elemento CurrencyCode.

    Nota

    Es posible que deba añadir esta anotación manualmente con el soporte de la finalización de código. En el momento de escribir, el editor para las definiciones de datos no ofrece una corrección rápida para este error. (El editor para las definiciones de tabla de base de datos sí lo hace).
    1. Ajuste el código de la siguiente manera:

      Code Snippet
      123456
      department_id as DepartmentId, @Semantics.amount.currencyCode: 'CurrencyCode' annual_salary as AnnualSalary, currency_code as CurrencyCode,
  3. Abra la vista Anotaciones activas y analice los valores de la anotación EndUserText.Label para los diferentes elementos de vista.

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

      Resultado

      La vista Anotaciones activas aparece como una nueva ficha debajo de la vista de editor. El origen de los textos de usuario final se enumera en la columna Tipo de datos de origen.
  4. Vuelva al código fuente de su definición de datos y añada la anotación de elemento EndUSerText.label para el elemento de vista CurrencyCode. Modifique la etiqueta de Moneda a Clave de moneda.

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

      Code Snippet
      123456
      @Semantics.amount.currencyCode: 'CurrencyCode' annual_salary as AnnualSalary, @EndUserText.label: 'Currency Key' currency_code as CurrencyCode,
  5. Active la definición de datos.

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

  6. Vuelva a la vista Anotaciones activas, actualice la visualización y confirme que ahora la nueva etiqueta está activa.

    Consejo

    Para encontrar una anotación específica más fácilmente, primero puede ocultar todo el árbol y, a continuación, desplegar el elemento y la anotación principal que le interesen.
    1. En la barra de herramientas de la vista Anotaciones activas, seleccione Actualizar (F5). Como alternativa, sitúe el cursor en cualquier lugar de la vista y pulse F5.

    2. En la barra de herramientas de la vista Anotaciones activas, seleccione Ocultar todo.

    3. Despliegue Z##_R_EMPLOYEE→CurrencyCode→@EndUserText.