ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

一阳指落在一笔业务上,ABAP 如何做到精准命中

一阳指落在一笔业务上,ABAP 如何做到精准命中 客服正在处理一张已经核对过的退款申请。屏幕上有几百条待办,真正需要操作的只有申请号确定、状态仍为待审批、金额没有在核对后被改动的那一笔。此时最怕的不是程序运行慢,而是点中了甲的申请,却改了乙的数据,或者两位审批人几乎同时操作,让同一笔申请被处理两次。拿《仙剑奇侠传》中林月如的一阳指作比喻,颇为贴切。这招的特点是力量集中,瞄准单一目标。放进企业系统,所谓「一指命中」并不是某条名字特别威风的语句,而是一整套约束,准确找到业务对象,确认当前状态,检查操作权限,在并发情况下只让符合条件的修改生效,并把结果清楚地交还给调用方。少了其中任何一环,指法看着利落,落点却未必可靠。ABAP 中确实有不少带着「单点」气质的技术。SELECT SINGLE能取一行,内表的键访问能锁定一个元素,传统增强点能把逻辑安放在特定的业务时刻,RAP的实例动作能针对一张业务单据执行「批准」「拒绝」「释放」之类的操作。但这些技术解决的问题不同。读到一行,只说明找到了数据。精确完成一项业务动作,还得回答能不能改、现在该不该改、别人是否已经改过,以及修改失败时外部究竟看到了什么。我们先看最容易被误当作一阳指的SELECT SINGLE。它让查询最多返回一行,写法简洁,数据库与应用服务器之间也不必传回一大批无用记录。若查询条件包含完整的唯一键,它很适合读取一个确定的对象。可要是条件只写了客户编号,而同一客户存在多笔订单,SELECT SINGLE返回一行,并不等于它理解了我们的业务意图。它只是从符合条件的结果中取出一行。需要「该客户最近创建的一笔订单」时,条件之外还需要明确的排序规则,并用允许ORDER BY的单行限
返回列表