最近在研究WB2R_SV时碰到一个很典型的 SAP 开发问题。
业务希望做一个新的Fiori Elements报表,其中有一列需要显示WB2R_SV页面上的Net Amount。从需求表面看,这件事似乎没有多少技术含量。既然标准 SAP 页面已经把金额显示出来了,我们只要找到它对应的数据库表和字段,再通过CDS View暴露出来即可。
实际情况却完全不是这样。
这个案例很适合说明 SAP 开发里一个经常被忽略的问题,屏幕上能够看到一个字段,并不能证明数据库里存在与它一一对应的持久化字段。SAP GUI、Fiori、ALV 甚至标准报表里展示出来的数据,都有可能只是程序执行过程中临时计算出来的结果。
WB2R_SV正好就是一个非常漂亮的例子。
SAP 官方把WB2R_SV定义为Settle Condition Contracts - Supplier Rebates,用于供应商侧的 Condition Contract Settlement。运行这个应用时,系统可以根据条件合同、结算日期、业务量、条件记录等数据计算结算金额,并在正式运行时生成 Settlement Management 的 settlement document。
沿着程序入口继续追踪,可以看到WB2R_SV对应的主程序是
RWB2R_VENDOR_SETTLEMENT
客户侧还有一套几乎对称