我尝试用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).
如果没有此解决方法,我该怎么办?
答案 0 :(得分:1)
ABAP 不支持数字文字中的小数点,并且应该按照建议的here在字符文字中指定它们。
缺点是CAST
运算符不支持字符文字,因为syntax help表示:
对于操作数操作数,数据库表或视图的列 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).
答案 1 :(得分:0)
然而,更好的选择是在Open SQL中使用ABAP表达式
SELECT
field1, field2,
CAST( field3 AS FLTP ) * @( conv f( '0.03' ) ) AS out1
FROM table1
INTO TABLE @DATA(lt_table1).