
海外子公司的业务人员在 Fiori 页面提交一批销售订单时,最怕看到的结果并不是某一笔订单报错,而是页面转了很久,只弹出一条笼统的失败消息。二十笔订单里,也许三笔缺少客户,四笔交货日期已经过去,两笔超过信用额度。倘若程序查到第一笔错误就停下,业务人员得反复修改、反复提交,才能摸清这批数据到底出了什么问题。这个场景让我想到林月如的七诀剑气。它给人的印象是剑气发出后覆盖一片目标,而不是贴近一名敌人,只刺出一下。放到 ABAP 开发里,最贴切的类比,是一次接收一组业务对象,对每个对象施加多道明确的业务规则,再把命中的问题按对象汇总返回。若业务需要的是批量完成一个动作,也可以在规则通过后,对合格对象集中执行相应的业务操作。这里得把游戏设定与技术类比的边界摆清楚。可查到的《仙剑奇侠传》资料将原作中的七诀剑气列为攻击敌方全体的招式。系列衍生作品对同名技能另有设计,可能加入回复等效果。因此,本文取用的是原作里「面向多个目标的一次群体出手」这一特征,并不把衍生作品的机制硬套到 ABAP 上。至于名字里的「七」,很适合借来组织七道校验,但这属于我们的程序设计,不能倒过来当成游戏规则。ABAP 没有名叫七诀剑气的关键字,也没有调用一次便自动解决所有业务问题的框架。真正相似的能力来自几个层面共同配合。内表承载一批目标,ABAP SQL 或 CDS 负责取得恰当范围的数据,规则类逐笔判断,RAP 行为定义承载业务动作与校验,EML 则让程序按照业务对象提供的接口发起操作。在 SAP HANA 上,适合由数据库成批完成的筛选和计算还能进一步下推。每一层管一件事,组合起来才有群体招式的效果。假定我们正在处理一批来自海外销售组织的待提交订单。业务要求公司代码、销售组织、客户和币种不能为空,金额必须大于零,请求交货日期不能早于业