Virtual elements - Elemento virtual
Un elemento virtual es necesario cuando se requiere un nuevo campo en el modelo de datos de una aplicación y calcular su valor. Estos campos existen únicamente durante tiempo de ejecución, es decir que estos campos no se proporcionan como parte del modelo de datos de persistencia original o no se pueden integrar fácilmente en CDS para que sus valores se puedan calcular directamente en SAP HANA.
Para hacer un ejemplo de elemento virtual se hizo una aplicación sencilla usando RAP y eclipse:
La aplicación se hizo a partir de esta tabla:

Para este ejemplo básico de un elemento virtual se va a crear otra columna calculando un descuento del 20% del precio total.
La vista de consumo antes de realizar el elemento virtual:
Para realizar un elemento virtual se define un campo adicional en la vista de proyección, este campo adicional no persiste en la capa de la base de datos, su valor debe calcularse durante el tiempo de ejecución. El cálculo se implementa en una clase ABAP a la que se hace referencia en una anotación en el elemento virtual en la vista de proyección CDS. Con la anotación “@ObjectModel.virtualElementCalculatedBy” indicamos la clase ABAP que se va a encargar de implementar la lógica que contendrá el elemento virtual.
Es importante crear la clase abap en la que se implementara la lógica para activar la vista de consumo.
La clase de cálculo del elemento virtual debe implementar la interfaz IF_SADL_EXIT_CALC_ELEMENT_READ. Esta interfaz proporciona dos métodos para la implementación del cálculo:
• get_calculation_info: este método se llama antes de la recuperación de datos real. Garantiza que se seleccionen todos los elementos relevantes que se necesitan para el cálculo del elemento virtual.
• calculate: este método se llama después de la recuperación de datos. Utiliza los valores de los elementos relevantes para calcular el valor del elemento virtual.
Para poder visualizar el elemnto virtual en debemos hacer las anotaciones en el metadata extension.
Metadata extension sin la columna "descuento" :
Hacemos la anotación del elemento virtual al final del metadata extension:
Ya habiendo hecho la anotación podemos ver la columna en la aplicación con el descuento del 20% del precio de cada producto.
En la tabla vemos los datos y no se guardan el del elemento virtual.
Cargar Archivo - File Upload (LOB)
A veces se necesita trabajar con datos adjuntos, a continuación, vamos a realizar un ejemplo sencillo donde se cargue un archivo, haciendo uso de rawstring y large object.
Lo primero es definir la tabla, para manejar archivos se debe tener en cuenta tres campos super importantes, para este caso son attachment, mymetipe y filename.
Para el campo attachment se crea un elemento de datos (zatach_dm) que sea rawstring, de tal manera que que se pueda almacenar datos binarios y que más adelante a través de anotaciones hacemos que RAP lo reconozca como un "Large Object" para que sea tratado como archivo. (Se recomienda poner en longitud la mayor posible).
Creamos las vistas a partir de la tabla:
Para la vista de consumo se debe utilizar la anotación "largeObject" para indicarle a RAP que este campo se trata de un archivo, en esta anotación se debe poner los campos correspondientes a mimetype y filename, adicionalmente la anotación "contentDispositionPreference" es para indicar si el archivo se muestra directamente en el navegador (INLINE) o si se descarga automáticamente (ATTACHMENT):
Realizamos la metadata extension:
Realizamos la definición del comportamiento de las vistas (No olvidar crear la clase y la tabla borrador).
Realizamos service definition y service binding.
Comentarios
Publicar un comentario