如何在OpenSQL中定义CAST为float?

问题描述 投票:0回答:2

我试着用CAST写一条select语句,但我不知道如何放入float值。

这样做是行不通的。

SELECT
  field1, field2,
  CAST( field3 AS FLTP ) * CAST( '0.03' AS FLTP )  AS out2  
FROM table1
INTO TABLE @DATA(lt_table1).

我得到这个错误信息: CASTs to a numeric type are not allowed for '0.03' (the type is incorrect)所以我猜测引号中的任何内容都被认为是文本。

我找到了这个变通方法。

DATA: lv_discount TYPE f VALUE '0.03'.

SELECT
  field1, field2,
  CAST( field3 AS FLTP ) * CAST( @lv_flt AS FLTP ) AS out1
FROM table1
INTO TABLE @DATA(lt_table1).

没有这个变通方法我怎么做?

floating-point sap abap opensql
2个回答
1
投票

ABAP 不支持 小数点在数字字面中,而它们应该用字符字面来指定,如建议的那样 此处. 陷阱是 CAST 操作符不支持字符字面,因为它的 句法帮助 说。

对于操作数 操作数,列 殖民地 的数据库表或视图加上主机变量 dobj除十进制浮点数外,所有数字类型的字面数都可以使用。.

可能的变通方法如下。

SELECT matnr, menge,
  CAST( menge AS FLTP ) * CAST( 3 AS FLTP ) / CAST( 100 AS FLTP ) AS out2
FROM mseg
INTO TABLE @DATA(lt_table1).

0
投票

然而一个更好的选择是在Open SQL中使用ABAP表达式。

   SELECT
      field1, field2,
      CAST( field3 AS FLTP ) * @( conv f( '0.03' ) ) AS out1
    FROM table1
    INTO TABLE @DATA(lt_table1).
© www.soinside.com 2019 - 2024. All rights reserved.