首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SELECT计算中的泛型类型P存在语法错误

SELECT计算中的泛型类型P存在语法错误
EN

Stack Overflow用户
提问于 2019-06-10 00:56:52
回答 2查看 67关注 0票数 2

我在一个类中有一个方法,它的参数类型为P,但当我试图激活时,我得到了以下语法错误:

表达式中不能使用泛型变量(如I_DISCOUNT)。

代码是:

代码语言:javascript
复制
  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.

怎么啦?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-11 17:14:17

定义一个局部中间变量

使用TYPE p LENGTH 16 DECIMALS 2 (或您需要的任何内容)定义lv_discount,用i_discount的内容填充它,并在SELECT中使用它:

代码语言:javascript
复制
  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.
票数 3
EN

Stack Overflow用户

发布于 2019-06-10 10:06:43

SQL expression.You中不允许使用泛型类型,需要由Internal Table执行此操作。

代码语言:javascript
复制
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 ) ).
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56516606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档