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

Posted

技术标签:

【中文标题】如何在 AMDP 方法中进行 REDUCE 计算?【英文标题】:How to do REDUCE calculation in AMDP method? 【发布时间】:2022-01-20 14:40:59 【问题描述】:

我们如何在 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 ).

【问题讨论】:

AMDP 通常是 HANA SQL 脚本。如果你参考 ABAP 来描述你想要达到的目标,你会接触到更少的人,所以我建议你用文字和例子来描述你的目标。 【参考方案1】:

直接转换为 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 方法的上下文中才有意义,该方法要么处理刚执行的数据库查询中的数据,要么为将要执行的数据库查询准备数据。

【讨论】:

以上是关于如何在 AMDP 方法中进行 REDUCE 计算?的主要内容,如果未能解决你的问题,请参考以下文章

你会如何解决这个问题?使用reduce方法计算此数组中嵌套对象值的总和?

区块链BaaS云服务(21)腾讯CCGP ”跨链协议 AMDP“

AMDP-CDS 代码

如何在 javascript 中递归使用 reduce() 方法? [复制]

js数组的reduce方法能计算数组中每个元素出现的次数吗?

js方法reduce的使用