VBAP(Vertriebsbeleg: Positionsdaten)是 SAP SD 模块中销售凭证行项目的核心表,存储销售订单 / 合同 / 询价 / 报价等单据行项级的基础信息(如物料、数量、价格、交货相关),是连接销售前端与物流、财务的关键表。以下按 “核心标识、物料信息、数量 / 价格、组织 / 物流、商务条款、状态 / 追溯、增强扩展” 七大维度拆解关键字段的业务含义 + 实操说明:
一、核心标识类(行项唯一识别)
| 字段名 | 数据类型 | 业务含义 | 实操说明 |
|---|---|---|---|
| VBELN | CHAR(10) | 销售凭证编号(抬头单号) | 与 VBAK-VBELN 一致,是关联抬头的核心主键;前台 VA03/VA43 中 “单据号” 即此字段 |
| POSNR | NUMC(6) | 行项目编号 | 行项唯一标识(如 00010、00020),SAP 默认按 10 递增(可配置);组合VBELN+POSNR是 VBAP 的唯一主键 |
| POSAR | CHAR(2) | 行项目类别 | 决定行项的业务逻辑(如 TAN = 标准物料行、TANN = 免费物料、TAX = 税额行、KWN = 合同行);配置路径:SPRO→SD→销售→销售凭证→行项目→定义行项目类别 |
| PSTYV | CHAR(4) | 行项目类别组 | 从物料主数据(MARC-PSTYV)带出,用于确定行项目类别(POSAR);如 NORM = 标准物料、LEIH = 租赁物料 |
| VBTYP | CHAR(1) | 凭证类别(行项级) | 与 VBAK-VBTYP 一致(C = 合同、O = 订单),仅用于行项维度的分类标识 |
二、物料信息类(产品核心属性)
| 字段名 | 数据类型 | 业务含义 | 实操说明 |
|---|---|---|---|
| MATNR | CHAR(18) | 物料编号 | 销售的产品编码,关联物料主数据(MARA/MARC/MVKE);若为文本行(POSAR=TXN),此字段为空 |
| MATKL | CHAR(9) | 物料组 | 物料的分类(如 001 = 家电、002 = 数码),用于定价、报表统计;从 MARA-MATKL 自动带出 |
| ARKTX | CHAR(40) | 物料描述(短文本) | 物料的名称(如 “华为 Mate60 Pro”),从 MARA-ARKTX 带出,可手动修改 |
| KDMAT | CHAR(35) | 客户物料号 | 客户对该物料的自定义编号(如客户称 “华为 Mate60 Pro” 为 “H60-001”),便于与客户对账;优先从客户物料信息记录(KNMT)带出 |
| CHARG | CHAR(10) | 批次号 | 物料的批次(如 20250101),仅启用批次管理的物料(MARA-CHARG=X)才会填充;关联批次主数据(MCHB) |
| WERKS | CHAR(4) | 工厂 | 发货的工厂(对应物料主数据的工厂层 MARC),决定物料库存、成本、交货地点;从客户 - 物料信息记录(KNMT)或物料主数据(MVKE)带出 |
| LGORT | CHAR(4) | 库存地点 | 发货的具体仓库(如 0001 = 成品仓),从工厂 - 库存地点配置(OX09)或销售订单行项手动维护;关联库存表(MARD) |
| MEINS | CHAR(3) | 基本计量单位 | 物料的基础单位(如 PC = 个、KG = 千克),从 MARA-MEINS 带出;与销售单位(VRKME)可能不同 |
| VRKME | CHAR(3) | 销售计量单位 | 销售的计价 / 发货单位(如 “箱”,1 箱 = 10 个);若与基本单位不一致,需维护单位换算(MARM) |
三、数量类(交货 / 订单核心指标)
| 字段名 | 数据类型 | 业务含义 | 实操说明 |
|---|---|---|---|
| KWMENG | QUAN(13,3) | 销售订单数量(销售单位) | 客户下单的数量(如 10 箱),单位为 VRKME;是销售数量统计的核心字段 |
| NMENG | QUAN(13,3) | 已交货数量(销售单位) | 该行列的实际交货数量(如已交 8 箱);精准值建议查 VBUP-LFIMG(VBAP 此字段为参考) |
| BMENG | QUAN(13,3) | 已开票数量(销售单位) | 该行列的实际开票数量(如已开 8 箱);精准值建议查 VBUP-FKIMG |
| UMENG | QUAN(13,3) | 拒绝数量(销售单位) | 因客户取消 / 库存不足等拒绝的数量(如 2 箱);用于订单履约率分析 |
| CMENG | QUAN(13,3) | 确认数量(销售单位) | 系统 / 人工确认可交货的数量(如 9 箱);决定交货单的创建数量 |
| MENGE | QUAN(13,3) | 订单数量(基本单位) | KWMENG 按单位换算后的基本单位数量(如 10 箱 = 100 个);用于库存扣减、成本计算 |
四、价格 / 金额类(财务核心指标)
| 字段名 | 数据类型 | 业务含义 | 实操说明 |
|---|---|---|---|
| NETPR | DEC(11,2) | 净单价(不含税) | 单位物料的不含税价格(如 5000 元 / 台),货币为 VBAK-WAERK;需结合定价条件(KONP-NETPR)核对 |
| NETWR | CURR(15,2) | 行项净金额(不含税) | 净单价 × 订单数量(5000×10=50000 元);所有行项 NETWR 汇总为 VBAK-NETWR |
| BRTPR | DEC(11,2) | 毛单价(含税) | 净单价 + 税额的单价(如 5850 元 / 台);部分场景需结合 KONV 税条件计算 |
| BRTWR | CURR(15,2) | 行项毛金额(含税) | 毛单价 × 订单数量;汇总后为 VBAK-BRUTW(部分版本不生效) |
| PRCTR | CHAR(10) | 利润中心 | 行项归属的利润中心,用于财务利润核算;从物料主数据(MARC-PRCTR)或成本中心带出 |
| KNUMA | CHAR(10) | 折扣协议编号 | 关联客户折扣协议(如返利协议),用于计算客户特殊折扣;关联表 KOMA |
| WAERS | CUKY(5) | 行项货币 | 默认为 VBAK-WAERK,可单独维护(如抬头为 CNY,某行项为 USD) |
五、组织 / 物流类(履约相关)
| 字段名 | 数据类型 | 业务含义 | 实操说明 |
|---|---|---|---|
| VKORG | CHAR(4) | 销售组织 | 与 VBAK-VKORG 一致,行项继承抬头的销售组织(可单独修改,需配置) |
| VTWEG | CHAR(2) | 分销渠道 | 行项维度的分销渠道(如抬头为批发,某行项为零售);影响行项定价条件 |
| SPART | CHAR(2) | 产品组 | 行项物料所属的产品组,与抬头 SPART 可不同 |
| ROUTE | CHAR(6) | 运输路线 | 从发货工厂到客户的运输路线(如上海→北京),决定运费、交货周期;配置路径:SPRO→SD→基本功能→运输→路线→定义路线 |
| VSBED | CHAR(3) | 装运条件 | 行项的交货方式(如空运、海运),优先于抬头 VSBED;决定拣配、发货策略 |
| LADGR | CHAR(4) | 装载组 | 物料的装载属性(如大件、易碎品),用于确定运输工具;从物料主数据(MARC-LADGR)带出 |
| PLTYP | CHAR(1) | 交货单类型 | 该行列生成的交货单类型(如 LF = 标准交货单);配置路径:SPRO→SD→发货→交货单→定义交货单类型 |
| ABGRU | CHAR(2) | 原因代码 | 行项取消 / 拒绝的原因(如 01 = 库存不足、02 = 客户取消);用于订单异常分析 |
六、商务 / 税务类(结算规则)
| 字段名 | 数据类型 | 业务含义 | 实操说明 |
|---|---|---|---|
| MWSTK | CHAR(2) | 税码 | 行项的增值税码(如 J1=13% 增值税、J0 = 免税);关联税务配置(FTXP),决定开票税额计算 |
| ZTERM | CHAR(4) | 付款条件 | 行项维度的付款条件(可与抬头不同);从客户主数据(KNVV-ZTERM)带出 |
| INCO1 | CHAR(3) | 国际贸易术语(行项) | 行项的贸易术语(如 FOB、CIF),优先于抬头 INCO1 |
| INCO2 | CHAR(28) | 国际贸易术语补充 | 如 “FOB 上海港”,细化行项贸易术语 |
| KZBWS | CHAR(1) | 开票冻结标识 | 行项是否冻结开票(X = 冻结);原因可查 FAKSK 字段 |
| FAKSK | CHAR(2) | 开票冻结原因 | 行项开票冻结的具体原因(如 01 = 价格未确认);解除冻结前无法开票 |
| KZLIEF | CHAR(1) | 交货相关标识 | 标记行项是否需要交货(X = 需要、空 = 不需要);如文本行 / 税额行无需交货 |
七、状态 / 追溯类(行项生命周期)
| 字段名 | 数据类型 | 业务含义 | 实操说明 |
|---|---|---|---|
| LFSTA | CHAR(1) | 交货状态 | 行项交货状态(A = 未交货、B = 部分交货、C = 完全交货);精准值建议查 VBUP-LFSTA |
| FKSTA | CHAR(1) | 开票状态 | 行项开票状态(A = 未开票、B = 部分开票、C = 完全开票);精准值建议查 VBUP-FKSTA |
| ERDAT | DATS(8) | 行项创建日期 | 行项添加的日期(与抬头 ERDAT 可不同,如订单创建后新增行项) |
| ERZET | TIMS(6) | 行项创建时间 | 行项添加的时间,格式 HHMMSS |
| ERNAM | CHAR(12) | 行项创建者 | 新增行项的用户账号,用于责任追溯 |
| AEDAT | DATS(8) | 行项最后修改日期 | 行项修改的日期(如调整数量 / 价格后更新) |
| AENAM | CHAR(12) | 行项最后修改者 | 追溯行项修改人 |
| EINDT | DATS(8) | 计划交货日期 | 行项的预计交货日期(如 20250201);精准值建议查 VBEP-EDATU(计划行) |
八、增强 / 扩展类(自定义字段)
| 字段名 | 数据类型 | 业务含义 | 实操说明 |
|---|---|---|---|
| VBAP-zz* | 自定义 | 增强字段 | 如 zz_project(项目号)、zz_batch_type(批次类型)等;通过 SE11 增强 VBAP 表(APPEND 结构)实现,需结合项目增强文档 |
| REFBN | CHAR(10) | 参考行项单号 | 上游单据的行项所属单号(如报价单行项转订单行项,REFBN = 报价单号) |
| REFBP | NUMC(6) | 参考行项编号 | 上游单据的行项号(如报价单 00010 行项转订单 00010 行项) |
| KTGRM | CHAR(2) | 需求类型 | 决定物料需求计划(MRP)的逻辑(如 KE = 销售订单需求);从物料主数据(MVKE-KTGRM)带出 |
| KDMENG | QUAN(13,3) | 客户订单数量 | 客户按自身单位申报的数量(如客户称 “10 箱” 为 “1 批”),用于对账 |
九、关键字段关联逻辑(实操必备)
- VBAP → 抬头:
VBAP-VBELN = VBAK-VBELN(关联客户、组织、货币等抬头信息); - VBAP → 计划行:
VBAP-VBELN = VBEP-VBELN且VBAP-POSNR = VBEP-POSNR(关联交货计划、实际交货日期); - VBAP → 定价:
VBAK-KNUMV = KONV-KNUMV且VBAP-POSNR = KONV-POSNR(关联行项定价条件); - VBAP → 状态:
VBAP-VBELN = VBUP-VBELN且VBAP-POSNR = VBUP-POSNR(精准行项状态); - VBAP → 物料主数据:
VBAP-MATNR = MARA-MATNR(物料基本信息)=MARC-MATNR(工厂层物料信息); - VBAP → 开票:
VBAP-VBELN = VBRP-VBELV且VBAP-POSNR = VBRP-POSNV(关联开票行项)。
十、实操查询示例(常用字段组合)
sql
-- 查询2025年标准销售订单的行项核心信息 SELECT a~VBELN AS 销售单号, b~POSNR AS 行项号, b~MATNR AS 物料号, b~ARKTX AS 物料描述, b~KWMENG AS 订单数量, b~NETPR AS 净单价, b~NETWR AS 行项净金额, b~WERKS AS 发货工厂, b~LFSTA AS 交货状态, b~FKSTA AS 开票状态 FROM VBAK AS a INNER JOIN VBAP AS b ON a~VBELN = b~VBELN WHERE a~AUART = 'OR' -- 标准销售订单 AND a~ERDAT >= '20250101' ORDER BY a~VBELN, b~POSNR;总结
VBAP 表的字段聚焦行项级的物料、数量、价格、物流核心信息,VBELN+POSNR是唯一主键,需重点关注MATNR(物料)、KWMENG(订单数量)、NETPR/NETWR(价格 / 金额)、WERKS(工厂)、LFSTA/FKSTA(状态)六大字段;若需精准的交货计划 / 状态,需关联 VBEP/VBUP 表,自定义字段需结合项目增强文档确认。