SAP-ABAP:SAP中工单号(生产订单号,Order Number)、预留号(Reservation Number)、凭证号(Material Document Number)三者的关系详解

在SAP系统中,工单号(生产订单号,Order Number)预留号(Reservation Number)凭证号(Material Document Number) 三者之间的关联关系贯穿于生产、物料管理和库存操作的全流程。以下是它们的逻辑关系及对应数据库表:


1. 核心关系流程图

工单号 (AUFNR) → 预留号 (RSNUM) → 凭证号 (MBLNR)
  • 工单号驱动预留号的生成(如生产领料需求)。
  • 预留号被消耗时生成凭证号(如实际领料发货)。

2. 工单号与预留号的关系

AFKO(生产订单头)
  • 字段
    • AUFNR:生产订单号(工单号)
    • GAMNG:订单计划数量
  • 作用:记录生产订单的抬头信息(如计划数量、状态)。
RESB(预留明细)
  • 字段
    • RSNUM:预留号
    • AUFNR:生产订单号(关联工单)
    • MATNR:物料号
    • BDMNG:预留需求数量
  • 作用:工单创建时,系统自动生成预留(如领料需求),通过 AUFNR 字段与工单绑定。

3. 预留号与凭证号的关系

MSEG(物料凭证行项目)
  • 字段
    • MBLNR:物料凭证号
    • RSNUM:预留号(关联预留)
    • AUFNR:生产订单号(可能直接关联工单)
    • BWART:移动类型(如261-生产领料)
  • 作用:当执行工单领料(如MB1A或CO15发货)时,消耗预留并生成物料凭证,通过 RSNUM 关联预留。

4. 工单号直接与凭证号的关系

MSEG(物料凭证行项目)
  • 字段
    • MBLNR:凭证号
    • AUFNR:生产订单号
  • 作用:某些移动类型(如工单收货)会直接在 MSEG 中记录工单号,无需通过预留号关联。

关键关联表总结

表名 字段 关联关系 作用
AFKO AUFNR 工单号主数据 生产订单抬头信息
RESB AUFNR + RSNUM 工单号 → 预留号 工单的物料预留需求
MSEG RSNUM + MBLNR 预留号 → 凭证号 预留被消耗生成凭证
MSEG AUFNR + MBLNR 工单号 → 凭证号(直接关联) 工单收货/发货直接生成凭证
MKPF MBLNR 凭证号主数据 物料凭证抬头信息

实际场景示例

场景1:工单领料(预留 → 凭证)
  1. 创建工单(T-code: CO01)→ 生成工单号 AUFNR=1001
  2. 生成预留:系统自动在 RESB 中创建预留 RSNUM=5001,关联工单 AUFNR=1001
  3. 领料发货(T-code: MB1A)→ 消耗预留,生成凭证号 MBLNR=490000001,在 MSEG 中记录 RSNUM=5001AUFNR=1001
场景2:工单收货(直接生成凭证)
  1. 工单生产完成(T-code: CO15)→ 直接收货入库。
  2. 生成凭证号 MBLNR=490000002,在 MSEG 中直接关联工单 AUFNR=1001(无需预留)。

SQL查询示例

查询工单、预留、凭证的关联关系:
SELECT 
  AFKO~AUFNR AS "工单号",
  RESB~RSNUM AS "预留号",
  MSEG~MBLNR AS "凭证号",
  MSEG~BWART AS "移动类型"
FROM AFKO
INNER JOIN RESB ON AFKO~AUFNR = RESB~AUFNR
LEFT JOIN MSEG ON RESB~RSNUM = MSEG~RSNUM
WHERE AFKO~AUFNR = '1001'.

其他相关表

  • AUFM(工单组件分配):记录工单的物料组件分配,可能包含预留号。
  • MKPF(凭证抬头):通过 MBLNR 获取凭证日期、创建者等信息。

总结

  • 工单号是源头,驱动预留和凭证的生成。
  • 预留号是工单需求的体现(计划层)。
  • 凭证号是实际操作的记录(执行层)。
  • 关联方式
    • 工单 → 预留:通过 RESB.AUFNR
    • 预留 → 凭证:通过 MSEG.RSNUM
    • 工单 → 凭证:通过 MSEG.AUFNR(直接关联)。

你可能感兴趣的:(vip,SAP,ABAP,运维,开发语言)