我们的海外子公司正在打开一张订单,页面上同时显示可售数量、履约能力和信用余量。某次业务调整要求三个指标一起提高,并且提高后的数值要长期保留。这个需求很像《仙剑奇侠传 1》里的雪蛤蟆,但游戏道具与企业软件之间有一道关键界线。游戏允许服用道具后直接增加角色属性,企业系统必须回答谁有权调整、调整依据是什么、数据写在哪里,以及同一请求重复到达时会不会加两次。
雪蛤蟆通常被列为永久增强属性的物品。查到的物品资料将其效果记为武术最大值、灵力最大值、防御最大值各增加两点。它不是恢复当前体力的药,也不是维持几个回合的临时增益。这里的重点是一次操作、三项属性、持久生效。不同游戏版本或资料整理可能有细节差异,本文采用上述三项各加二的描述来建立技术类比。《仙剑奇侠传》一般道具图鉴和17173 的物品资料均给出了这一效果。
ABAP 没有内置名为雪蛤蟆的语句、类或业务对象。最接近它的,是我们自行定义的一次业务动作。动作接收一个明确的对象标识,在规则允许时同时改变多个字段,并由事务机制将结果保存下来。角色的武术、灵力、防御可以映射成某个自建业务对象的三项能力指标。游戏里的服用,对应业务对象上的一次操作。物品从背包消失,对应配额或使用次数被扣减。属性永久增加,对应数据库中的持久状态发生改变。这些只是帮助理解的对应关系,不能把游戏数值直接套进真实订单。
这一点容易和几个常见的 ABAP 概念混淆。给内部表的一行加二,只改变当前程序运行时的内存;程序结束