Abap SELECT中计算中泛型类型P的语法错误
我在一个参数类型为p的类中有一个方法,但在尝试激活时出现以下语法错误: 表达式中不能使用I_折扣之类的泛型变量 代码是:Abap SELECT中计算中泛型类型P的语法错误,abap,Abap,我在一个参数类型为p的类中有一个方法,但在尝试激活时出现以下语法错误: 表达式中不能使用I_折扣之类的泛型变量 代码是: METHODS ceil_floor_abs IMPORTING i_discount TYPE p . METHOD ceil_floor_abs. SELECT carrid, connid, paymentsum, paymentsum * @i_discount AS disc_payment, ceil( paymentsum
METHODS ceil_floor_abs IMPORTING i_discount TYPE p .
METHOD ceil_floor_abs.
SELECT carrid, connid, paymentsum, paymentsum * @i_discount AS disc_payment,
ceil( paymentsum * @i_discount ) AS ceil_payment,
floor( paymentsum * @i_discount ) AS floor_payment,
abs( paymentsum ) AS abs_payment
INTO TABLE @DATA(it_sflight4) UP TO 10 ROWS
FROM sflight.
ENDMETHOD.
怎么了?SQL表达式中不允许使用泛型类型。您需要通过内部表进行操作 定义一个局部中间变量 定义p长度为16位小数2的lv_折扣或您需要的任何内容,用i_折扣的内容填充它,并在选择中使用它:
METHODS ceil_floor_abs IMPORTING i_discount TYPE p .
DATA: lv_discount TYPE p LENGTH 16 DECIMALS 2.
lv_discount = i_discount.
METHOD ceil_floor_abs.
SELECT carrid, connid, paymentsum, paymentsum * @lv_discount AS disc_payment,
ceil( paymentsum * @lv_discount ) AS ceil_payment,
floor( paymentsum * @lv_discount ) AS floor_payment,
abs( paymentsum ) AS abs_payment
INTO TABLE @DATA(it_sflight4) UP TO 10 ROWS
FROM sflight.
ENDMETHOD.
试着给它一个特定的大小:数据价格类型p长度16小数2。谢谢,但是在方法定义过程中有什么方法吗?或者如何在方法中传递这样的参数?使用所述类型定义本地lv_折扣,用i_折扣的内容填充它,并在SelectThank Andras中使用它。这种方式也出现在我的脑海中,我解决了这个问题。但由于我不是专家,我想知道是否还有其他方法可以做到这一点。声明类型为P的参数或字段符号被视为泛型类型,因为它可以有任意数量的数字/小数。如果使用类型来声明独立类型,则必须指明使其完整(即非泛型)的位数/小数位数,并且可以使用它来键入参数,以便直接在选择中使用它。但是如果你真的想要一个泛型参数,比如任何数字类型,那么你必须按照安德拉斯的解释去做:可能包含所有数字的类型是decloat34。
METHODS ceil_floor_abs IMPORTING i_discount TYPE p .
DATA: lv_discount TYPE p LENGTH 16 DECIMALS 2.
lv_discount = i_discount.
METHOD ceil_floor_abs.
SELECT carrid, connid, paymentsum, paymentsum * @lv_discount AS disc_payment,
ceil( paymentsum * @lv_discount ) AS ceil_payment,
floor( paymentsum * @lv_discount ) AS floor_payment,
abs( paymentsum ) AS abs_payment
INTO TABLE @DATA(it_sflight4) UP TO 10 ROWS
FROM sflight.
ENDMETHOD.