A função Open SQL round não está 'disponível' para valores de tipo número de ponto flutuante (FLTP).
Além disso, com Open SQL, a divisão (operador '/') não é possível para inteiros e decimais, mas sim para números de ponto flutuante. No entanto, um valor FLTP não pode ser convertido em um decimal DEC, de fato, não pode ser convertido em nenhum outro tipo de valor
(<<Uma expressão CAST deveria ser independente da plataforma. As conversões do tipo FLTP para outros tipos numéricos não são permitidas porque o resultado seria dependente da plataforma.>>).
Portanto, em vez disso, deve-se usar a função DIVISION para decimais com decimais, o que também cuidará do arredondamento do decimal.
(A função DIV só pode ser usada para valores numéricos sem decimais).
Portanto, isso é o que você teria que fazer em seu lugar:
select division( lvar1, lvar2, 6) ...
Mais informações:
Desde o ABAP 7.50+, existem funções Open SQL para valores numéricos, como a função de arredondamento e as funções de divisão:
No entanto, a função DIVISION do SQL só está disponível para o Open SQL a partir da versão 7.51+.
Na versão 7.50, a SAP 'apenas' o introduziu no ABAP CDS.
Uso:
-
ROUND( expr, pos )
expr: INT1, INT2, INT4, INT8, DEC, CURR e QUAN
pos: INT1, INT2 e INT4
-
DIVISION( expr1, expr2, dec )
expr1, expr2: INT1, INT2, INT4, INT8, DEC, CURR e QUAN
dec: Literal ou variável de host constante com tipo ABAP b, s, i, int8 maior ou igual a 0 e não maior que 6 e a extensão de exp2 mais o número de decimais de exp1 mais 1
Resultado:
Exemplo:
SELECT round( zwert,1 ) AS zwert,
round( zmeng,2 ) AS zmeng,
round( umvkz,-1 ) AS umvkz,
round( stcur,4 ) AS stcur,
round( cast( posnr as DEC( 6,
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019