如何在AMDP方法中进行REDUCE计算



我们如何在AMDP方法中实现类似以下逻辑的REDUCE。

lv_total = reduce tslxx9( init x type tslxx9 for lwa_out in lt_out
where ( companycode     = <lf_wa>-bukrs and
ryear           = <lf_wa>-year  and
currency        = <lf_wa>-currency
)
next x = x + lwa_out-amount ).

SQLScript的直接转换是使用GROUP BY子句和SUM聚合函数对本地表变量执行SELECT。类似这样的东西:

METHOD sum_amdp BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT.
lv_total = SELECT SUM( amount )
FROM :it_out
WHERE companycode = :lf_wa.bukrs
AND ryear = :lf_wa.year
AND currency = :lf_wa.currency
GROUP BY companycode, ryear, currency;
ENDMETHOD.

当然,这种方法在AMDP中实现是毫无意义的,因为它甚至不访问数据库。但它展示了SQLScript如何能够对变量执行复杂的SQL语句。这只在更大的SQLScript方法的上下文中才有意义,该方法要么处理刚刚执行的数据库查询中的数据,要么为即将执行的数据库询问准备数据。

最新更新