Business Central v21:如何拦截销售单生成的仓库装运单创建后事件?
Business Central意大利版21中仓库装运单创建后的拦截事件
在Business Central意大利版21中,确实存在可拦截仓库装运单创建完成后的事件,以下是符合你需求的关键事件说明:
核心可用事件
这些事件均位于标准Codeunit 7316 "Whse.-Create Shpt. Orders"中,意大利本地化版本不会移除标准事件,仅会补充本地化功能:
OnAfterCreateWhseShptOrderHeader
触发时机:单个仓库装运单表头创建完成后
参数包含:SalesHeader: Record "Sales Header":生成装运单的源销售订单表头WhseShptHeader: Record "Warehouse Shipment Header":新建的仓库装运单表头
完全匹配你需要的「以销售订单表头为输入参数」的场景,可直接在事件订阅中对新建的装运单表头进行修改。
OnAfterCreateWhseShptOrderLine
触发时机:每一行仓库装运单行创建完成后
参数包含:SalesLine: Record "Sales Line":源销售订单行WhseShptLine: Record "Warehouse Shipment Line":新建的仓库装运单行
适合需要针对装运单行进行修改的场景。
OnAfterCreateWhseShptOrder
触发时机:整个仓库装运单(表头+所有行)创建完成后
参数为:WhseShptHeader: Record "Warehouse Shipment Header":新建的仓库装运单表头
可通过该表头的Source Document和Source No.字段关联到对应的销售订单,进而完成后续修改操作。
订阅示例(AL代码)
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Whse.-Create Shpt. Orders", 'OnAfterCreateWhseShptOrderHeader', '', true, true)] local procedure OnAfterCreateWhseShptOrderHeader(SalesHeader: Record "Sales Header"; var WhseShptHeader: Record "Warehouse Shipment Header") begin // 在这里添加对WhseShptHeader的修改逻辑,比如更新特定字段 WhseShptHeader."自定义字段" := SalesHeader."销售订单对应字段"; WhseShptHeader.Modify(true); end;
内容的提问来源于stack exchange,提问作者Lorenzo Soncini
相关产品推荐
相关产品推荐

