0

我尝试用 CAST 编写一个 select 语句,但我不知道如何输入浮点值。

这不起作用:

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).

如果没有这种解决方法,我该怎么做?

4

2 回答 2

1

ABAP不支持数字文字中的小数点,它们应该在字符文字中指定,如此处建议的那样
陷阱是CAST运算符不支持字符文字,因为它的语法帮助说:

对于操作数操作,数据库表或视图的列col以及主变量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).
于 2017-01-17T14:47:32.020 回答
0

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

   SELECT
      field1, field2,
      CAST( field3 AS FLTP ) * @( conv f( '0.03' ) ) AS out1
    FROM table1
    INTO TABLE @DATA(lt_table1).
于 2017-10-11T22:12:23.303 回答