La función Open SQL round no está 'disponible' para valores de tipo número de punto flotante (FLTP).
Además, con Open SQL, la división (operador '/') no es posible para enteros y decimales, pero sí lo es para números de punto flotante. Sin embargo, un valor FLTP no puede ser convertido en un decimal DEC, de hecho, no se puede convertir en ningún otro tipo de valor
(<<Una expresión CAST debería ser independiente de la plataforma. Las conversiones del tipo FLTP a otros tipos numéricos no están permitidas porque el resultado sería dependiente de la plataforma.>>).
Por lo tanto, en lugar de eso, se debe utilizar la función DIVISION para decimales con decimales, lo que también se encargará de redondear el decimal.
(La función DIV solo se puede utilizar para valores numéricos sin decimales).
Por lo tanto, esto es lo que tendrías que hacer en su lugar:
select division( lvar1, lvar2, 6) ...
Más información:
Desde ABAP 7.50+, existen funciones Open SQL para valores numéricos, como la función de redondeo y las funciones de división:
Sin embargo, la función DIVISION de SQL solo está disponible para Open SQL desde la versión 7.51+.
En la versión 7.50, SAP 'solo' lo introdujo en ABAP CDS.
Uso:
-
ROUND( expr, pos )
expr: INT1, INT2, INT4, INT8, DEC, CURR y QUAN
pos: INT1, INT2 e INT4
-
DIVISION( expr1, expr2, dec )
expr1, expr2: INT1, INT2, INT4, INT8, DEC, CURR y QUAN
dec: Literal o variable de host constante con tipo ABAP b, s, i, int8 mayor o igual a 0 y no mayor al valor máximo de 6 y la longitud de exp2 más el número de decimales de exp1 más 1
Resultado:
Ejemplo:
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