Pular para o conteúdo
Moovi — página inicial
SAP → ABAP

Criando uma Scalar Function ADT

Criar Scalar Function ADT

Por Gabriel Dias Faria3 min de leitura

Como Criar uma Scalar Function no SAP utilizando ADT (Eclipse)

Você já precisou realizar um cálculo específico no banco de dados, mas sentiu que faltava uma opção simples e direta no seu código SAP? É exatamente aqui que entram as Scalar Functions.

Hoje, vamos aprender como criar a sua própria Scalar Function de forma prática utilizando o ADT (Eclipse).

(Caso você ainda não saiba o que é uma Scalar Function ou por que ela é tão importante, leia nosso artigo anterior onde explicamos todos os detalhes e exemplos de utilização).

Para não complicar, vamos usar um exemplo bem simples: uma Scalar Function (SF) que pega um número de entrada e adiciona um valor a ele. Pronto para colocar a mão na massa? Vamos lá!

Passo 1: Criando a Definição da SF (SF Definition)

O primeiro passo é dar "nome aos bois" e definir os parâmetros da sua função.

  1. No seu ADT, crie um novo objeto e filtre a busca por Scalar.
  2. Selecione a opção Function Definition.
  3. Preencha o Nome e a Descrição da sua função.

Ao criar, vamos implementar a estrutura da nossa SF. No nosso exemplo, teremos dois inputs (o Número original e o Valor a Adicionar) e um output (o Retorno da Soma).

Veja como fica o código da definição:

define scalar function YFX_ADD_N_TO_NUMBER
  with parameters
    p_original_number: int4,
    p_number_to_add: int4
  returns int4

Passo 2: Implementando a Referência da SF

Agora que definimos a cara da nossa função, precisamos dar vida a ela. Para isso, vamos criar a referência da nossa Scalar Function.

Crie uma nova referência dando o mesmo nome da SF, porém adicionando o sufixo _SQL no final.

Feito isso, o próximo passo é criar a Classe ABAP que fará a referência da nossa Scalar. Basta criar uma classe padrão implementando a interface if_amdp_marker_hdb (que é a interface padrão para procedures no HANA).

Volte na referência da SF que criamos e preencha o campo de referência com o nome da nossa classe recém-criada.

Atenção a este detalhe: O nome da classe precisa estar em letras MAIÚSCULAS e chamando o método execute.

Agora, vamos implementar a classe. Basta adicionar o método referenciando a SF que criamos no Passo 1. Veja o código completo abaixo:

CLASS ycl_add_n_to_number DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .
 
  PUBLIC SECTION.
 
    INTERFACES if_amdp_marker_hdb .
 
    CLASS-METHODS execute
        FOR SCALAR FUNCTION YFX_ADD_N_TO_NUMBER.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.
 
CLASS ycl_add_n_to_number IMPLEMENTATION.
 
  METHOD execute BY DATABASE FUNCTION
               FOR HDB
               LANGUAGE SQLSCRIPT
               OPTIONS READ-ONLY.
    result = p_original_number + p_number_to_add;
  ENDMETHOD.
 
ENDCLASS.

Feito isso, basta ativar a Classe. Pronto! O motor da sua Scalar Function já está rodando.

Passo 3: Colocando a Scalar Function em prática

A melhor parte é que agora você pode utilizar a sua Scalar Function dentro de uma CDS View, integrando o cálculo do banco de dados diretamente na sua seleção de dados.

Veja um exemplo de uma CDS View utilizando a função que acabamos de criar:

define view entity YI_TESTE
  as select from sflight
{
  key carrid,
      currency,
      @Semantics.amount.currencyCode : 'currency'
      price,
      YFX_ADD_N_TO_NUMBER( p_original_number => cast(price as int4), 
                           p_number_to_add   => cast(2 as int4) ) as NewPrice
}

Ao rodar essa view, o resultado será exibido de forma limpa e rápida, com o novo valor já calculado pelo banco de dados.

💡 Dica de Ouro

Lembre-se de uma regra básica de matemática e programação: ao converter valores para int (inteiro), o sistema sempre arredonda para baixo. Planeje seus cálculos tendo isso em mente para evitar surpresas nos resultados!

E aí, gostou de como é simples criar uma Scalar Function no ADT? Aproveite essa funcionalidade para otimizar suas leituras de banco de dados e deixar seu código muito mais inteligente. Até a próxima!

Todos os artigos

Aprenda na prática

Do artigo ao projeto entregue

Os cursos da Moovi têm ambiente SAP de prática e acompanham você do primeiro passo à especialização.

Conhecer os cursos
Fale no WhatsApp