【ABAP】opensql 语法错误

发布时间 2023-06-06 11:41:36作者: LingC_C

在使用case对金额字段进行操作时报错

The maximum possible number of places in the expression starting with DMBTR is 34 places with 2 decimal places. There can be, however, no more than 31 places and 14 decimal places.

select CASE bsad~shkzg WHEN 'H' THEN bsad~dmbtr * -1   ELSE bsad~dmbtr END AS dmbtr,
        CASE bsad~shkzg WHEN 'H' THEN  bsad~dmbe2 * -1  ELSE bsad~dmbe2 END AS dmbe2,
from bsad.

需要使用cast进行类型转换

select CASE bsad~shkzg WHEN 'H' THEN (  CAST( bsad~dmbtr * -1  AS CURR( 23,2 ) ) ) ELSE bsad~dmbtr END AS dmbtr,
        CASE bsad~shkzg WHEN 'H' THEN (  CAST( bsad~dmbe2 * -1  AS CURR( 23,2 ) ) ) ELSE bsad~dmbe2 END AS dmbe2,
from bsad.