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

SAP Business One中交货表(ODLN、DLN1)关联OBTN批次表方法咨询

SAP Business One 交货表与批次表关联查询方案

核心关联逻辑

三张表的关联依赖以下核心键值匹配:

  • 交货表头ODLN与交货行DLN1关联:通过表头主键匹配行的外键 ODLN.DocEntry = DLN1.DocEntry
  • 交货行DLN1与批次主表OBTN关联:需同时匹配批次号与物料编码,避免跨物料重名批次关联错误,匹配规则为 DLN1.ItemCode = OBTN.ItemCode AND DLN1.BatchNum = OBTN.DistNumber
    若需要更精准的匹配,可额外加上仓库条件 DLN1.WhsCode = OBTN.WhsCode

基础查询示例

以下是可直接运行的基础查询SQL,可查询交货单的基本信息、行信息及对应批次信息:

SELECT
  ODLN.DocNum, -- 交货单号
  ODLN.DocDate, -- 交货日期
  ODLN.CardCode, -- 客户编码
  ODLN.CardName, -- 客户名称
  DLN1.ItemCode, -- 物料编码
  DLN1.Dscription, -- 物料名称
  DLN1.Quantity, -- 交货行总数量
  OBTN.DistNumber, -- 批次号
  OBTN.MnfSerial, -- 制造商序列号
  OBTN.ExpDate, -- 批次有效期
  OBTN.PrdDate, -- 批次生产日期
  OBTN.Quantity AS BatchCurrentQty -- 批次当前剩余库存
FROM ODLN
INNER JOIN DLN1 ON ODLN.DocEntry = DLN1.DocEntry
INNER JOIN OBTN ON DLN1.ItemCode = OBTN.ItemCode 
  AND DLN1.BatchNum = OBTN.DistNumber
  AND DLN1.WhsCode = OBTN.WhsCode
-- 可自行添加筛选条件,例如按交货日期范围、客户编码筛选
WHERE ODLN.DocDate >= '2024-01-01'

注意事项

  • 若单条交货行拆分了多个批次出库,上述查询会返回多行数据,每一行对应一个批次,如需聚合交货行总数量需自行对DLN1.Quantity去重
  • 若交货行拆分了多个批次出库,DLN1.BatchNum字段为空,此时无法直接通过DLN1关联OBTN,必须通过OBT1中间表关联OBTN查询对应批次信息
  • 若需要查询该交货单实际扣减的对应批次数量,需要额外关联批次交易表OBT1,关联规则为:OBT1.BaseEntry = DLN1.DocEntry AND OBT1.BaseLine = DLN1.LineNum AND OBT1.BaseType = 15(15为SAP B1中交货单的对象类型编码)
  • OBTN中存储的是批次的最新主数据信息,若需要查询交货过账时的批次历史信息,需从批次交易历史表中获取

内容的提问来源于stack exchange,提问作者Daniel Carreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:15:07