首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HANA中标量变量的表总数

HANA中标量变量的表总数
EN

Stack Overflow用户
提问于 2015-03-25 13:24:59
回答 1查看 2.9K关注 0票数 3

我目前正在通过ABAP对象为HANA编写数据库过程。我想返回一个标量值,它是从一个选择中计算出来的,而不是另一个开发人员必须从表中读取的表。我希望不通过导入/导出参数声明要在存储过程中使用的变量。

代码语言:javascript
复制
methods: _amdp_previous_years
    importing value(mandt) type mandt
              value(in_object) type j_objnr
              value(in_year) type gjahr
    exporting value(out_results) type total_table
              value(out_total) type f.
代码语言:javascript
复制
method _amdp_previous_years  by database procedure for hdb
    language sqlscript options read-only
    using rpsco.

    declare totals double array;

    declare out_array double array;

    -- begin of totals,
    --    total type float,
    -- end of totals,
    -- out_results = type table of totals
    out_results = select sum( wlp01 ) + sum( wlp02 ) + sum( wlp03 ) + sum( wlp04 ) + sum( wlp05 ) +
                         sum( wlp06 ) + sum( wlp07 ) + sum( wlp08 ) + sum( wlp09 ) + sum( wlp10 ) +
                         sum( wlp11 ) + sum( wlp12 ) + sum( wlp13 ) + sum( wlp14 ) + sum( wlp15 ) +
                         sum( wlp16 ) as total from rpsco
                   where objnr = :in_object
                     and gjahr = :in_year;
    totals := array_agg( :out_results.total );
    out_total := :totals[1];

    -- Type not declared
    -- in sap = wlp01 = curr(15,2)
    -- total is not a decimal
    -- total is not a double
    -- total is not a float
    -- total is not a int
    -- total is not a real
    -- what is total supposed to be then?
    results = select sum( wlp01 ) + sum( wlp02 ) + sum( wlp03 ) + sum( wlp04 ) + sum( wlp05 ) +
                     sum( wlp06 ) + sum( wlp07 ) + sum( wlp08 ) + sum( wlp09 ) + sum( wlp10 ) +
                     sum( wlp11 ) + sum( wlp12 ) + sum( wlp13 ) + sum( wlp14 ) + sum( wlp15 ) +
                     sum( wlp16 ) as total from rpsco
               where objnr = :in_object
                 and gjahr = :in_year;
    out_array := array_agg( :results.total );              


endmethod.

第一条语句工作正常,我猜是因为选择的结果被放置到一个被声明为ABAP浮动的字段中。

第二个选择工作并填充结果,但是我不确定如何访问这些列。SAP数据元素是一个货币字段(15,2)。我尝试过文档中的所有标量类型。我收到的错误与它不是正确的类型相同。

这是不可能的,因为类型没有在手动之前显式定义吗?在网上浏览教程时,人们建议使用CREATE或CREATE,但在尝试使用这些语句时我会收到语法错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-25 15:03:13

我可以自己回答,以防其他人发现这个。您可以通过各种函数(如to_double( )、to_integer( )等)对列进行类型化。现在,所选内容如下:

代码语言:javascript
复制
    results = select to_double( sum( wlp01 ) + sum( wlp02 ) + sum( wlp03 ) + sum( wlp04 ) + sum( wlp05 ) +
                                sum( wlp06 ) + sum( wlp07 ) + sum( wlp08 ) + sum( wlp09 ) + sum( wlp10 ) +
                                sum( wlp11 ) + sum( wlp12 ) + sum( wlp13 ) + sum( wlp14 ) + sum( wlp15 ) +
                                sum( wlp16 ) ) as total from rpsco
               where objnr = :in_object
                 and gjahr < :in_year;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29256964

复制
相关文章

相似问题

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