我在一个类中有一个方法,它的参数类型为P,但当我试图激活时,我得到了以下语法错误:
表达式中不能使用泛型变量(如I_DISCOUNT)。
代码是:
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.
怎么啦?
发布于 2019-06-11 17:14:17
定义一个局部中间变量
使用TYPE p LENGTH 16 DECIMALS 2
(或您需要的任何内容)定义lv_discount
,用i_discount
的内容填充它,并在SELECT中使用它:
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.
发布于 2019-06-10 10:06:43
SQL expression.You中不允许使用泛型类型,需要由Internal Table
执行此操作。
SELECT carrid, connid, paymentsum, paymentsum AS disc_payment,
paymentsum AS ceil_payment,
paymentsum AS floor_payment,
abs( paymentsum ) AS abs_payment
INTO TABLE @DATA(lt_sflight4) UP TO 10 ROWS
FROM sflight.
DATA:
lt_sflight_ceil_floor_abs LIKE lt_sflight4.
lt_sflight_ceil_floor_abs = VALUE #( FOR sflight IN lt_sflight4 (
carrid = sflight-carrid
connid = sflight-connid
paymentsum = sflight-paymentsum
disc_payment = sflight-paymentsum * i_discount
ceil_payment = ceil( sflight-paymentsum * i_discount )
floor_payment = floor( sflight-paymentsum * i_discount )
abs_payment = sflight-abs_payment ) ).
https://stackoverflow.com/questions/56516606
复制相似问题