Hello Friends,
Estoy escribiendo esta publicación en el blog sobre cómo llamar a una función de tabla dentro de un procedimiento almacenado o viceversa en SAP HANA.
Como todos saben, las vistas de cálculo scriptadas están obsoletas y la función de tabla es el reemplazo de las CV scriptadas. En HANA 2.0 tenemos la función de tabla como un nodo también. Lo que significa que al igual que usamos un nodo de proyección y un nodo de agregación de la misma manera podemos usar un nodo de función de tabla que puede tomar los parámetros o argumentos y devolver un valor escalar o una cadena o una tabla también en algunos casos. Esta es una característica poderosa en SAP HANA.
Ahora el contenido de mi artículo es, ¿podemos llamar a una función de tabla dentro de un procedimiento o viceversa? La respuesta es sí.
Por favor, lee la publicación del blog para comprender más sobre esto.
Escenario de negocio
En uno de los escenarios en los que trabajé al replicar la tabla de elementos WBS "PRPS" al sistema HANA nativo utilizando SLT. El escenario que enfrentamos es la conversión interna a externa mientras se replica usando SLT o podemos decir conversión de tipo de datos o conversión alfanumérica en SAP SLT no funcionaba correctamente y estaba causando fallas en las uniones en los modelos de datos de HANA que desarrollamos posteriormente. Sin perder mucho tiempo en arreglar eso en SLT, se recomendó escribir nuestra propia función personalizada en HANA que se encargará de la conversión y actualizará los datos en la tabla.
El ' - ' entre los elementos WBS no se estaba mostrando correctamente, se agregaban espacios después de la replicación, etc., y estaba causando un problema al crear el modelo con fines de informes.
.
SAP ABAP, BW o BW4HANA tiene
módulo de función de conversión alfanumérica
que convertirá los datos al formato requerido y se encargará de las conversiones internas a externas.
Como la empresa quería una solución de datos y análisis en tiempo real, terminamos escribiendo un procedimiento almacenado que insertará registros en una tabla llamando a la función de tabla y programamos el procedimiento almacenado con la ayuda de la programación de trabajos XS y posteriormente programamos el procedimiento almacenado para que se ejecute cada 30 minutos en SAP BPA por redwood.
Entonces, ¿cómo lo hicimos?
Hemos escrito un procedimiento almacenado que eventualmente llamará a una función de tabla dentro de él.
Mi intención aquí no es mostrar cómo se escribe el código de conversión dentro de la función de tabla, ya que es una lógica personalizada y difiere de empresa a empresa, sino mostrar
cómo podemos llamar a una TF dentro de un procedimiento almacenado.
Por favor, vea el diagrama a continuación:
Esta es la mejor manera de llamar a una función de tabla dentro de un procedimiento almacenado.
Ahora, ¿podemos llamar a un procedimiento almacenado dentro de una función de tabla que luego se utiliza en una vista de cálculo gráfica?
La respuesta es sí.
Puede llamar a un procedimiento dentro de una función de tabla siempre que el procedimiento sea de solo lectura. Un procedimiento tiene solo parámetros IN, OUT, IN OUT.
Código.
El código anterior no funciona en versiones anteriores de HANA. Por favor, pruébelo desde su lado.
Ahora una pregunta puede surgir en nuestra mente, ¿podemos llamar a un procedimiento almacenado dentro de un procedimiento almacenado?
La respuesta es obvia y es sí. Podemos llamar tantos procedimientos como sea necesario dentro de un procedimiento y también podemos usar tipos de tabla dentro de otro procedimiento dentro del procedimiento principal.
Gracias.
Narasingha Prasad Patro
SAP HANA XSA