尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

ABAP 里有没有 RxJS take Operator 的对应物,答案藏在数据库读取、内表遍历和控制流三个层面

ABAP 里有没有 RxJS take Operator 的对应物,答案藏在数据库读取、内表遍历和控制流三个层面 在一个很常见的 SAP S/4HANA 开发场景里,我们只想取最近 10 张销售订单,或者一个 RAP 查询收到 OData$top=20之后,只向前端返回 20 条记录。熟悉 RxJS 的开发人员看到这种需求,很自然会联想到take(10)或take(20)。ABAP 能不能直接写出类似下面这种语义呢。source.pipe(take(10))答案是,ABAP 没有一个统一的、可以和 RxJStake一一对应的通用 Operator,但 ABAP 完全能够实现take所表达的核心控制思想,而且在不同数据源上有不同的最佳写法。如果数据还在数据库里,最接近take(n)的是 ABAP SQLUP TO n ROWS。如果数据已经进入 Internal Table,最接近的是LOOP ... FROM ... TO,或者FOR ... IN ... FROM ... TO。如果读取条件比较复杂,真正和take(n)的计数终止行为最接近的,则是计数器配合EXIT。而到了 RAP、OData 和 Fiori Elements 场景,$top、get_page_size、UP TO n ROWS这一整条链路,几乎就是 SAP 技术栈里最
返回列表