0

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

1 回答 1

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

于 2021-12-20T10:14:12.080 回答