我想问一下,是否可以使用ABAP动态地计数不同的字段。
在我国CDS中有9个字段,这是相当多的,但由于历史的决定,不可能分割。我需要的是如下代码:
select count(distinct (lv_requested_elements)) from CDS_VIEW; 或
select count(*) from (select distinct lv_requested_elements from CDS_VIEW);我知道将select读入内存并获得sy-dbcnt是可能的,但我希望确保没有其他选项。
发布于 2020-12-17 16:01:57
我假设最简单、最直接的方法是将最小的字段读入内存,然后按分组(区分的)行进行计数:
DATA(fields) = ` BLART, BLDAT, BUDAT`.
DATA: lt_count TYPE TABLE OF string.
SELECT (fields(6))
INTO TABLE @lt_count
FROM ('BKPF')
GROUP BY (fields).
DATA(count) = sy-dbcnt.前面提到的CTE使用相同的内存读取,因此您将不会获得任何性能增益:
公共表表达式创建临时表格结果集,在执行WITH语句时可以访问该结果集。
如果您要经常计算这个键组合,我建议创建消费或嵌套的CDS视图,这将在运行中完成。
https://stackoverflow.com/questions/65321061
复制相似问题