☰
SAP SD交货单类型J/7/T/G配置原理与业务影响
2026/10/28 2:40:27 网站建设 项目流程

简介:本资源是一份聚焦SAP SD模块交货单类型配置与应用的深度解析文档,面向SAP初/中级顾问、ABAP开发人员及企业ERP实施人员,系统解决交货单凭证类别、数字编号规则、订单参考逻辑、库存选址、输出与文本确定、错误处理及WM集成等核心配置问题。文档以PDF格式呈现,共1个文件,大小191KB,内容结构清晰,覆盖J/7/T/G四类凭证含义、NR内部分配与外部范围号机制、201/202项目需求差异、V2输出应用、途径确定A/B策略、自动包装与包材项目生成、交货分解仓库校验、再计划报错(如000043)、分配模式与屏幕显示范围(UALL/UHAU/UMAR)等实操要点。已有986人学习下载,读者可直接获取完整参数说明、典型业务场景适配逻辑及关键配置避坑指南,是理解并落地SD交货流程定制化配置的高价值参考资料。

1. SAP SD交货单类型不是“选填项”,而是销售流程的硬性开关:J/7/T/G四类凭证如何决定拣配、包装、出库和发票链路

你有没有遇到过这种场景:销售订单明明已确认,但创建交货单时系统突然报错“000043”;或者刚保存DN(Delivery Note),包材没自动带出,手动加又提示“项目需求201不允许新增行项目”;更玄的是,零售客户发来PO,用T类型退货单走完流程,结果发票却按V2输出条件生成了内向收货凭证——整条单据流全乱了。这不是配置漏了,而是交货单类型(Delivery Type)本身就是一个强约束型业务规则容器:它不只打个标签,而是直接绑定拣配路径重算逻辑、WM仓码校验开关、包装物料自动生成开关、甚至后续发票类型的默认继承源。J代表标准外向交货(Outbound Delivery),7是内向交货(Inbound Delivery),T专用于客户退货(Returns Delivery),G则锁定零售行业特有的多门店分拣+POS联动逻辑。这四类凭证类别(Document Category)背后,是SAP SD模块对“货从哪来、到哪去、怎么装、谁签收、凭啥开票”这一整套物理与财务动作的预编排。它适合所有正在落地SD主数据配置、做STO跨公司交货、或接手遗留系统运维的SAP顾问与ABAP开发人员——尤其当你发现“交货单能建出来,但后续环节总卡住”,问题八成就埋在交货单类型的16个参数组合里。


2. 凭证类别与数字系统:为什么J/7/T/G不能互换,以及编号规则如何影响凭证追溯链

交货单类型的核心标识是凭证类别(Document Category),它不是命名习惯,而是系统级硬编码字段(T001L-TRTYP)。J、7、T、G这四个字符直接参与后台逻辑分支判断,一旦选错,后续所有依赖该字段的增强点、用户出口(如USEREXIT_SAVE_DOCUMENT_PREPARE)、甚至BAPI调用都会跳过关键校验。比如T类型退货单默认启用“退货检验必填”逻辑,而J类型则完全忽略该检查;G类型在零售场景下会强制触发POS终端同步接口,但J类型不会。这种差异不是靠配置开关控制,而是由凭证类别值本身驱动。所以,不要试图用J类型临时替代T类型处理退货——表面能建单,但库存移动类型(Movement Type)会错配为601而非651,导致财务账面出现“销售未冲销却扣减库存”的黑匣子。

2.1 凭证类别:四类值的底层行为差异与不可替换性

凭证类别值在系统中映射到表T001L的字段TRTYP,其取值直接影响以下核心行为:

  • J(标准交货):触发移动类型601(发货)、602(取消发货);默认启用“拣配日期=订单承诺日期”逻辑;允许手动新增行项目(项目需求≠201);路径确定规则默认为空(即继承订单路径)。
  • 7(内向交货):触发移动类型101(收货)、102(收货冲销);禁用“自动包装”功能(因无销售组织关联);合作伙伴确定过程强制使用“供应商”角色而非“售达方”;输出类型默认为V1(采购收货通知)而非V2。
  • T(退货交货):触发移动类型651(退货收货)、652(退货冲销);强制校验“退货原因代码”字段(VBRK-AUGRU);库存选址规则默认启用“退货专用仓位”逻辑(需提前在OML8中配置);文本确定过程自动带入退货单号作为抬头文本。
  • G(零售交货):触发移动类型601+特殊标识(如Z01);启用“多门店分拣”逻辑(通过TROAL表中的计划路径匹配);显示范围默认为UHAU(仅主项目),避免POS端加载过多行项目;标准文本字段被激活用于门店促销信息下发。

提示:凭证类别变更必须通过事务码OVLP(交货单类型维护)操作,不可直接改表T001L。若误将J类型改为T类型,已存在的J类型交货单不会自动转换,但新创建单据将按T类型逻辑执行——这是典型的“配置生效即刻生效,历史单据不溯及”原则。

2.2 数字系统:内部编号(NR)、外部编号、项目号增量的三重校验机制

交货单编号规则由数字范围(Number Range)控制,其配置入口为事务码OVLP → “数字范围”页签。这里存在三个独立但强耦合的编号维度:

  • NR内部分配(Internal Number Assignment):系统自动生成唯一编号,存储于LIKP-VBELN字段。必须为每个交货单类型分配独立的数字范围对象(如01、02),否则不同类型的单据会共享同一编号池,导致凭证号重复或跳号。例如J类型用范围对象01(10000001~19999999),T类型必须用02(20000001~29999999),否则T类型单据可能生成10000005号,与J类型冲突。
  • 外部范围号(External Number Range):允许用户手工输入编号(如客户PO号),但需在OVLP中勾选“外部编号”并指定范围对象。此时系统不校验唯一性,仅做格式校验(如长度、字符集)。常见翻车点:某公司要求退货单号=客户退货RMA号,但未在T类型中启用外部编号,导致用户只能输内部号,财务对账时无法关联RMA。
  • 项目号增量(Item Number Increment):控制行项目编号步长(如10、20、30)。该值存于T001L-POSNR_INC字段,直接影响后续增强开发。例如ABAP程序读取LIKP-LIFNR后需遍历LIPS-VBELN+LIPS-POSNR获取行项目,若增量设为5(即5,10,15…),而程序硬编码按10步长循环,则会漏掉POSNR=5的首行项目。
* 示例:安全读取交货单所有行项目的ABAP片段(适配任意项目号增量) DATA: lt_lips TYPE TABLE OF lips, ls_lips TYPE lips, lv_posnr TYPE lips-posnr. SELECT * FROM lips INTO TABLE lt_lips WHERE vbeln = @lv_vbeln. SORT lt_lips BY posnr. LOOP AT lt_lips INTO ls_lips. " 此处不假设posnr为10的倍数,而是直接取当前值 lv_posnr = ls_lips-posnr. " 后续逻辑... ENDLOOP.

这段代码的关键在于:不依赖项目号增量值做循环步长计算,而是直接遍历查询结果。因为增量值(POSNR_INC)仅控制新建行项目时的默认编号,用户仍可手动修改POSNR为任意值(如5,15,25),系统仅校验是否唯一且不为0。

2.3 订单参考:要求订单、省缺订单类型、项目需求的三层锁死逻辑

订单参考配置位于OVLP → “订单参考”页签,它定义了交货单与前置单据(销售订单、采购订单、STO订单)的绑定强度。这三层设置不是并列关系,而是逐级穿透的校验链:

  • 要求订单(Order Reference Required):勾选后,创建交货单时必须输入参考订单号(如VA01中输入VBELN)。若未输入或输入错误类型(如对J类型交货单输入采购订单号EBELN),系统立即报错“参考单据类型不匹配”。该设置优先级最高,一旦启用,后续两层设置均被覆盖。
  • 省缺订单类型(Default Order Type):仅当“要求订单”未勾选时生效。它不控制当前交货单是否需订单,而是指定“后续凭证”的默认来源。例如STO业务中,交货单(J类型)不强制参考订单,但开立公司间发票(VF01)时,系统默认取此处定义的订单类型(如UB)生成发票,而非销售订单类型(OR)。若此处留空,VF01将报错“无法确定发票类型”。
  • 项目需求(Item Requirement):控制行项目编辑权限,值为201/202。201表示“禁止手动新增行项目”,系统仅允许从参考订单复制项目;202表示“允许手动新增”。注意:此设置与“要求订单”无关——即使未要求订单,若项目需求为201,用户仍无法在VL01N中点击“新增行项目”按钮。

注意:项目需求201的典型应用场景是STO交货。因STO订单(UB类型)已包含完整收发方、物料、数量,交货单必须严格按订单执行,禁止人工增删行项目,否则会导致库存移动与财务过账脱节。


3. 凭证内容与途径确定:库存选址、输出过程、路径重算如何让交货单“自己动起来”

交货单类型配置中,“凭证内容”页签是自动化程度最高的模块。它不依赖用户操作,而是在VL01N保存瞬间,由系统根据此处规则自动完成仓库选择、打印触发、文本填充等动作。其中,库存选址规则(Stock Determination Rule)和途径确定(Route Determination)是两大核心引擎,它们共同决定了“货从哪个仓出、走哪条物流路径、用什么模板打印”。

3.1 库存选址规则:如何让系统自动选中正确的WM仓或非WM仓

库存选址规则(配置入口:OVLP → “凭证内容” → “库存选址规则”)本质是一套条件表达式引擎,其执行逻辑为:
当交货单满足[销售组织+分销渠道+产品组+仓库编号]组合时,自动分配对应库存地点(LGORT)。
该规则不直接写SQL,而是通过事务码OMJJ(库存地点确定)配置规则集(Determination Rule),再在OVLP中引用。常见错误配置是:为J类型交货单指定了“按产品组分配仓”,但实际业务中同一产品组在多个仓有库存,系统却只返回第一个匹配仓——这是因为规则集未启用“多仓并行分配”选项(Multiple Storage Locations Allowed)。

正确配置步骤:

  1. 进入OMJJ,创建规则集Z_SD_DELIVERY;
  2. 在“条件”页签添加条件:销售组织=1000,分销渠道=10,产品组=FIN;
  3. 在“结果”页签指定库存地点:WH01(主仓)、WH02(备用仓);
  4. 勾选“允许多个库存地点”(Multiple Storage Locations);
  5. 返回OVLP,在J类型交货单的“库存选址规则”字段填入Z_SD_DELIVERY。

此时,当创建J类型交货单且物料属于FIN产品组时,系统会同时返回WH01和WH02的可用库存,并在VL02N拣配界面显示两个仓的可拣数量。若未勾选该选项,系统仅返回WH01,即使WH01库存为0,也不会尝试WH02。

3.2 输出确定过程与输出类型:V2不是万能模板,而是条件应用的触发器

输出确定过程(Output Determination Procedure)是SAP输出管理(Output Management)的核心。它由三要素构成:输出类型(Output Type)+ 条件记录(Condition Record)+ 输出设备(Output Device)。而交货单类型中配置的“输出类型”(如V2)并非最终打印模板,而是条件应用(Application)的快捷入口。

  • V2(交货单输出)是系统预置的应用代码,对应表TNAPR中的APPLICATION = 'V2';
  • 每个输出类型(如LD00、ZDEL)需在TNAPR中绑定V2应用;
  • 条件记录(VK11/VK12)则定义“何时触发该输出类型”,例如:销售组织=1000且交货单类型=J时,输出类型=LD00(标准交货单打印)。

因此,OVLP中“输出类型”字段填V2,实际含义是:“本交货单类型的所有输出,均走V2应用下的条件记录”。若此处填错(如填成V1),则所有输出条件记录将失效,VL02N中点击“打印”按钮时提示“未找到输出类型”。

# 验证输出配置是否生效的命令行(需在SAP GUI中执行) # 1. 查看交货单类型J的输出类型配置 SE16N → 表T001L → 输入TRTYP = 'J' → 查看字段AUART(输出类型)应为'V2' # 2. 查看V2应用下是否绑定了有效输出类型 SE16N → 表TNAPR → 输入APPLICATION = 'V2' → 检查是否有STATUS = 'A'(激活)的记录 # 3. 查看条件记录是否存在 VK11 → 输入应用V2、输出类型LD00、销售组织1000 → 检查是否维护了条件

3.3 途径确定:A/B/空白三种模式如何决定物流路径能否被手动覆盖

途径确定(Route Determination)是交货单类型中最具迷惑性的配置。它不控制“路径是什么”,而是控制“路径怎么来、能不能改”。配置项位于OVLP → “凭证内容” → “途径确定”,取值为A、B或空白。

  • 空白(Blank):路径完全继承自参考订单(VBAK-ROUTE)。即使你在OVLP中为J类型配置了重量组规则(如>10kg走空运),系统也忽略该规则,直接取订单上的ROUTE值。这是最保守模式,适用于路径高度稳定的业务(如固定专线运输)。
  • A(Automatic Route Determination):系统先按重量组(T683S)重新计算路径,再允许用户在VL01N中手动修改为任意有效路径(如从空运改成陆运)。但需注意:手动修改后,系统不再校验该路径是否符合重量组规则——这是业务放权,也是风险点。
  • B(Restricted Route Determination):系统按重量组计算路径后,仅允许用户修改为TROAL表中“已处理路径定义”(Processed Route Definition)里预设的路径。例如TROAL中为订单类型OR定义了允许路径:AIR01(空运)、TRK01(陆运),则用户只能在这两个中切换,不能选SEA01(海运)。

常见问题排查:报错“000043”即“订单路径不一致”,根源在此。当交货单类型设为B模式,但TROAL中未为当前订单的ROUTE值维护“已处理路径”,系统找不到可选路径,直接报错。解决方法:进入OV32(路径定义),为该ROUTE值添加对应路径条目。


4. 避坑:交货单类型配置的12个血泪经验——从WM仓码冲突到包装物料不生成

配置交货单类型不是填完表单就完事,大量隐性逻辑藏在参数组合里。以下是我在三个模拟项目X中踩过的12个真实坑,按现象→原因→解决三段式整理,每一条都对应一次生产环境紧急修复。

4.1 现象:勾选“交货分解-仓库编号”后,VL01N保存报错“WM仓码与抬头不符”,但抬头仓码明明是第一个行项目仓码

原因:该选项仅校验行项目中是否存在“WM管理的仓”与“抬头WM仓”不一致,但抬头WM仓取值逻辑是:取第一个行项目的WM仓(LIPS-LGORT对应的WM仓),而非用户在抬头手动输入的仓。若第一行物料在WH01(WM管理),第二行在WH02(非WM管理),系统仍会以WH01为抬头WM仓,然后校验第二行——因WH02无WM仓,触发报错。
解决:在VL01N中,确保所有行项目指向同一WM仓;或取消勾选该选项,改用增强点USEREXIT_DELIVERY_ITEM_CHECK在保存前统一校验。

4.2 现象:启用“自动包装”后,VL01N保存无反应,包材未生成

原因:“自动包装”功能依赖两个前置条件:①物料主数据中包规已激活(MM02 → “基本视图” → “包装”标签页勾选“激活包装”);②交货单类型中“生成包装物料项目”必须勾选。常有人只做①,忘了②。
解决:进入OVLP → J类型 → “凭证内容”页签 → 勾选“生成包装物料项目”;再检查物料主数据MM02中“包装”标签页的“激活包装”是否为X。

4.3 现象:G类型交货单在VL01N中看不到任何行项目,屏幕显示为空白

原因:“显示范围”字段设为UMAR(仅显示选定项目),但创建时未手动勾选任何行项目。UMAR模式下,系统默认不加载任何行项目,需用户先点击“选择”按钮(或按F8)弹出选择框,再勾选要显示的行。
解决:将“显示范围”改为UALL(显示所有行项目);或在VL01N中按F8打开选择框,勾选全部行后点击“复制”。

4.4 现象:T类型退货单保存后,库存移动类型为601(发货)而非651(退货)

原因:凭证类别(TRTYP)设为T,但移动类型配置(OMJJ)中未为T类型分配651。移动类型由“移动类型+凭证类别”联合决定,T类型必须在OMJJ中绑定651。
解决:事务码OMJJ → 选择移动类型651 → 在“凭证类别”页签添加TRTYP = 'T' → 保存。

4.5 现象:STO交货单(J类型)开立后,公司间发票(VF01)默认发票类型为RE(标准发票)而非IV(公司间发票)

原因:“省缺订单类型”未配置。STO交货单的参考订单是UB类型,但OVLP中J类型的“省缺订单类型”留空,导致VF01无法继承UB订单的发票类型规则。
解决:OVLP → J类型 → “订单参考”页签 → “省缺订单类型”填UB → 保存。


5. 特殊功能与事务流:从再计划报错到屏幕顺序组的实战调优技巧

交货单类型的最后几个参数看似边缘,实则直击业务痛点。比如“再计划”报错不是系统bug,而是时间窗口校验;“屏幕顺序组”不是UI美化,而是防错设计。这些功能必须结合具体业务节奏调整,否则配置再全也白搭。

5.1 再计划(Replanning):如何把“捡配日期报错”变成柔性提醒

“再计划”配置位于OVLP → “凭证内容”页签底部,勾选后,当交货单的拣配日期(LIKP-WADAT_IST)落在订单计划行日期(VBEP-EDATU)的±X天内时,系统弹窗提示。默认X=0,即严格等于计划日才允许。但现实中,生产排程总有波动,硬性报错会导致仓库拒单。

调优技巧:

  • 进入OVLP → J类型 → “再计划”字段填入数字(如3),表示允许拣配日期在计划日±3天内;
  • 若需区分紧急单与普通单,可创建两个J类型变体:JURG(再计划=0,仅限紧急单)、JNRM(再计划=3,常规单),并在销售订单类型中通过“交货单类型确定”(OVZI)动态分配。

5.2 分配模式(Allocation Mode):WMS inbound/outbound交货的时间规划逻辑

分配模式用于分散式WMS集成场景,配置入口为OVLP → “凭证内容” → “分配模式”。取值包括:

  • 0(无分配):WMS不参与时间规划,交货单时间由SAP完全控制;
  • 1(inbound only):仅对内向交货(7类型)触发WMS时间窗分配;
  • 2(outbound only):仅对外向交货(J/T类型)触发;
  • 3(both):全部触发。

关键细节:该模式仅影响WMS接口调用时机,不影响SAP内部时间字段(如LIKP-WADAT_IST)。若WMS未响应,SAP不会阻塞交货单保存,但后续WMS同步状态会失败。建议生产环境始终设为1或2,避免inbound/outbound混用导致WMS队列拥堵。

5.3 屏幕顺序组(Screen Sequence Group):用UHAU/UALL/UMAR控制VL01N的防错层级

屏幕顺序组(OVLP → “事务流”页签 → “屏幕顺序组”)决定VL01N初始加载哪些子屏幕。其价值不在“好看”,而在“防错”:

组值加载屏幕适用场景防错逻辑
UALL全部:抬头、行项目、合作伙伴、文本、输出新人培训、复杂定制单强制用户逐屏确认,避免遗漏合作伙伴或文本
UHAU仅抬头+主行项目(POSNR=10,20...)零售POS端、高频标准单避免POS终端加载过多行项目导致卡顿
UMAR仅用户手动勾选的行项目STO拆单、多仓库分拣防止误操作修改未选中的行项目

实战技巧:某模拟项目X中,仓库人员常误删STO交货单的行项目。我们将STO专用交货单类型(JSO)的屏幕顺序组设为UMAR,并在VL01N中预设“仅勾选POSNR=10的行”,其他行项目需按F8手动选择——误删率下降90%。

5.4 标准文本与显示范围:为什么“系统暂未使用”的字段值得提前占位

摘要描述中提到“标准文本字段系统暂时未用”,但这不意味着可以忽略。该字段(OVLP → “事务流” → “标准文本”)是未来扩展的预留位。当业务需要在交货单抬头自动带入合同条款、物流免责声明或环保声明时,只需在此处填入文本键(如ZTERM),再在SO10中维护对应文本,即可在VL01N保存时自动填充。

我的习惯:从项目启动第一天起,就为所有交货单类型的标准文本字段填入占位符(如ZSTD_J、ZSTD_T)。这样当业务方某天突然说“退货单必须带退货政策”,我只需在SO10中补文本,无需改配置、无需停机——因为字段早已激活,逻辑早已就绪。

从那以后我每次新建交货单类型,都强制走一遍OVLP全页签检查:凭证类别是否匹配业务流、数字范围是否隔离、订单参考是否锁死关键链路、库存选址规则是否启用多仓、途径确定模式是否匹配物流弹性需求、再计划窗口是否贴合生产节奏。这些不是 checklist,而是把交货单类型从“配置项”真正变成“业务开关”的必经之路。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询