Avalados por :

Como chamar uma função de tabela dentro de um procedimento armazenado no SAP HANA

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 7 Vistas
0
Cargando...
Olá amigos,

Estou escrevendo esta postagem no blog sobre como chamar uma função de tabela dentro de um procedimento armazenado ou vice-versa no SAP HANA.

Como todos sabem, as visualizações de script de cálculo estão obsoletas e a função de tabela é o substituto das visualizações de script. No HANA 2.0, temos a função de tabela como um nó também. Isso significa que, assim como usamos um nó de projeção e um nó de agregação, também podemos usar um nó de função de tabela que pode receber parâmetros ou argumentos e retornar um valor escalar, uma string ou uma tabela também em alguns casos. Esta é uma característica poderosa no SAP HANA.

Agora, o conteúdo do meu artigo é: podemos chamar uma função de tabela dentro de um procedimento ou vice-versa? A resposta é sim.

Por favor, leia a postagem no blog para entender mais sobre isso.

Cenário de negócio

Em um dos cenários em que trabalhei ao replicar a tabela de elementos WBS "PRPS" para o sistema HANA nativo usando SLT. O cenário que enfrentamos foi a conversão interna para externa durante a replicação usando SLT, ou seja, a conversão de tipo de dados ou conversão alfanumérica no SAP SLT não estava funcionando corretamente e estava causando falhas nas junções nos modelos de dados HANA que desenvolvemos posteriormente. Sem perder muito tempo corrigindo isso no SLT, foi recomendado escrever nossa própria função personalizada no HANA que lidaria com a conversão e atualizaria os dados na tabela.


O ' - ' entre os elementos WBS não estava sendo exibido corretamente, espaços eram adicionados após a replicação, etc., e isso estava causando um problema ao criar o modelo para relatórios. .

O SAP ABAP, BW ou BW4HANA tem um módulo de função de conversão alfanumérica que converterá os dados para o formato necessário e lidará com as conversões internas para externas.

Como a empresa queria uma solução de dados e análises em tempo real, acabamos escrevendo um procedimento armazenado que irá inserir registros em uma tabela chamando a função de tabela e programamos o procedimento armazenado com a ajuda da programação de jobs XS e posteriormente programamos o procedimento armazenado para ser executado a cada 30 minutos no SAP BPA por redwood.

Então, como fizemos isso?

Escrevemos um procedimento armazenado que eventualmente chamará uma função de tabela dentro dele.

Minha intenção aqui não é mostrar como escrever o código de conversão dentro da função de tabela, pois é uma lógica personalizada e varia de empresa para empresa, mas sim mostrar como podemos chamar uma TF dentro de um procedimento armazenado.



Por favor, veja o diagrama abaixo:




Esta é a melhor maneira de chamar uma função de tabela dentro de um procedimento armazenado.

Agora, podemos chamar um procedimento armazenado dentro de uma função de tabela que é então usada em uma visualização de cálculo gráfico?

A resposta é sim.

Podemos chamar um procedimento dentro de uma função de tabela, desde que o procedimento seja apenas de leitura. Um procedimento tem apenas parâmetros IN, OUT, IN OUT.

Código.


O código acima não funciona em versões anteriores do HANA. Por favor, teste do seu lado.



Agora, uma pergunta pode surgir em nossa mente, podemos chamar um procedimento armazenado dentro de um procedimento armazenado?



A resposta é óbvia e é sim. Podemos chamar quantos procedimentos forem necessários dentro de um procedimento e também podemos usar tipos de tabela dentro de outro procedimento dentro do procedimento principal.

Obrigado.



Narasingha Prasad Patro

SAP HANA XSA
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?