SELECT 计算中泛型 P 的语法错误
Syntax error with generic type P in calculation in SELECT
我在 class 中有一个参数类型为 P 的方法,但是当我尝试激活时出现以下语法错误:
No generically typed variables (like I_DISCOUNT) can be used in expressions.
密码是:
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 中不允许泛型类型 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 ) ).
定义局部中间变量
定义lv_discount
为TYPE p LENGTH 16 DECIMALS 2
(或任何你需要的),用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.
我在 class 中有一个参数类型为 P 的方法,但是当我尝试激活时出现以下语法错误:
No generically typed variables (like I_DISCOUNT) can be used in expressions.
密码是:
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 中不允许泛型类型 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 ) ).
定义局部中间变量
定义lv_discount
为TYPE p LENGTH 16 DECIMALS 2
(或任何你需要的),用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.