You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Business Central的AL语言中,如何订阅采购申请审批通过事件?

解决方案:采购申请审批通过的事件监听与处理

核心表修正

你之前误用了Purchase Header表——这个表对应采购订单,而非采购申请。在Business Central中,采购申请的头表是Purchase Requisition Header,配套的行表是Purchase Requisition Line。

正确的事件订阅实现

可以订阅Purchase Requisition Header表的OnAfterModifyEvent,通过对比修改前后的状态,判断是否从In Review变为Approved,触发API调用逻辑:

codeunit 50142 "PurchaseReqApprovalListener"
{
    [EventSubscriber(ObjectType::Table, Database::"Purchase Requisition Header", 'OnAfterModifyEvent', '', false, false)]
    local procedure OnAfterModifyPurchaseReqHeader(var Rec: Record "Purchase Requisition Header"; var xRec: Record "Purchase Requisition Header"; RunTrigger: Boolean)
    begin
        // 校验状态是否从审核中切换为已批准
        if (xRec.Status = xRec.Status::"In Review") and (Rec.Status = Rec.Status::Approved) then begin
            // 调用API创建采购订单
            CallPurchaseOrderCreationAPI(Rec);
        end;
    end;

    local procedure CallPurchaseOrderCreationAPI(PurchaseReqHeader: Record "Purchase Requisition Header")
    begin
        // 在此实现API调用逻辑,比如通过HttpClient发送请求
        // 示例伪代码:
        // HttpClient.Post('https://your-api-endpoint.com/create-po', PurchaseReqHeader);
    end;
}

额外提示

  • 选用OnAfterModifyEvent更稳妥,此时采购申请的状态已完成更新,避免状态变更未生效就触发API。
  • 若需传递采购申请的明细数据,可在触发时加载Purchase Requisition Line表的对应记录,一并传给API。
  • 确保代码单元拥有访问采购申请表、执行网络请求的权限。

内容的提问来源于stack exchange,提问作者Liam White

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:02:38