一、相关表格介绍
1、 T156:移动类型主表
Movement Type (Inventory Management)
你可以把它理解为一张基础信息登记表。
主要作用:定义了所有可用的移动类型代码,并存储其最基本、最通用的描述信息。它是 T156SC 中 BWART 字段的检查表,保证了数据的合法性。T156是"户口本"。所有合法的移动类型及其基础定义,都配置在表T156中。MSEG表中的BWART字段,其值必须存在于T156表中,否则系统会报错,认为你使用了非法的移动类型。
核心字段:MANDT(客户端)、BWART(移动类型)、LTEXT(移动类型描述)。
T156就像一张"移动类型清单"。它定义了系统中所有可用的移动类型(如101、201、261等)的基本身份,比如它的名字。
2、T156SC:移动类型控制参数表
Mvt Type: Qty/Value Posting: Customer Table; as of Rel. 4.6A
T156SC 才是真正决定一个移动类型"行为"的核心配置表。OMJJ 事务代码的配置结果,最终就存储在这张表中。它包含了大量标志位字段,用来控制各种业务功能。
T156SC是一本"控制策略手册"。它为核心移动类型定义了具体的行为规则,决定了每个移动类型在"数量/价值更新"等控制维度上该如何运作。
系统在执行物料移动时,会将这两张表结合使用。首先通过 T156 确认这个移动类型是合法的,然后再到 T156SC 中查找它具体的行为规则。
T156SC 其主键是:BWART, WERTU, MENGU, SOBKZ, KZBEW, KZZUG, KZVBR 这7个字段:
①BWART (移动类型): 这是识别一笔货物移动具体类型的核心标识,例如 101 代表"采购订单收货",261 代表"发货到成本中心"。它指明了业务操作的基本性质。
②WERTU (价值更新) :该字段标识物料主记录中是否进行价值管理。如果物料需要按价值记账(例如产成品、原材料),该字段值通常为 X;如果物料只进行数量管理而不需要价值更新(例如某些低值辅料),则该字段为空。
③MENGU (数量更新) : 该字段标识物料主记录中是否进行数量管理。对于所有需要库存管理的物料,此字段值通常为 X。它决定了移动是否会影响物料的库存数量。
④SOBKZ (特殊库存标识) :用于标识该物料移动是否涉及非公司自有库存,例如:E:销售订单库存K:供应商寄售库存 O:提供给分包商的物料,如果是公司自有库存,此字段通常为空。
⑤KZBEW (移动标识) : 该字段指示了该笔货物移动所参照的业务单据或来源。常见取值有:B:按采购订单的货物移动 F:按生产订单的货物移动 L:按交货单的货物移动
⑥KZZUG (收货标识) :标识该操作是否为收货/入库操作,用于区分是增加库存还是减少库存。
⑦KZVBR (消耗过账) : 标识该物料移动是否需要进行消耗性过账。例如,将物料发到成本中心时,这个标识就表明该笔业务涉及费用消耗,需要直接计入成本。
T156 与 T156SC 的区别
T156 (移动类型表):这张表是一份标准清单,定义了所有可用的移动类型(如101、201、261)及其基础属性。SAP在交付时已经为所有标准的移动类型创建好了记录,基本上不需要你去新增或修改。它的维护类型是G,表示SAP提供的标准内容,通常不建议更改。
T156SC (移动类型控制表):这张表才是真正的控制策略手册,决定了每个移动类型在"是否更新数量/价值"等控制维度上的具体行为。SAP同样为所有标准移动类型预设了完整的控制参数(比如101移动类型的所有默认控制标志),你通常不需要去修改或新增记录。
虽然你很少会直接去维护T156和T156SC表,但"配置移动类型"这项工作是SAP项目实施中必须完成的。
使用标准事务代码 OMJJ:这是SAP官方提供的、专门用于配置移动类型的事务代码。所有对移动类型行为的调整,都应该在这个图形化的配置界面中完成。
系统自动存储配置:当你在OMJJ中勾选或修改某个选项(例如,设定移动类型101是否需要进行批次管理)并保存后,系统会自动将这些更改写入到后台的T156SC和相关控制表中。
3、T156SY:移动类型控制参数表
T156SY是SAP系统中的一张系统表,全称为"移动类型:数量/价值更新:系统表,版本4.6A"。它的核心作用是控制物料移动(如收货、发货、转储)产生物料凭证和财务凭证的逻辑。
简单来说,当你在SAP中做一笔货物移动(如用MIGO收货),系统会依据T156SY中定义的规则,决定这笔业务如何更新库存数量和库存价值,以及是否生成会计凭证。
T156SY中有几个关键字段,它们就像决策的"输入条件",共同决定了这笔业务的后续处理方式。
| 字段名 | 中文描述 | 作用与常见值说明 |
|---|---|---|
| KZBEW | 移动标识 | 标识货物移动的类型,如:B-采购订单收货、F-生产订单收发货。 |
| SOBKZ | 特殊库存类型 | 标明是否为特殊库存,如:K-供应商寄售、E-销售订单库存。 |
| KZVBR | 消耗过账 | 决定是否将物料消耗过账到成本中心、资产或项目,如:V-消耗、E-销售订单。 |
| KZZUG | 收货标识 | 标记是否为特殊的收货,如:X-库存运输订单,代表跨工厂转储。 |
| WERTU | 价值更新 | 物料主记录中决定物料是否进行价值管理,若为空则不更新价值。 |
| MENGU | 数量更新 | 物料主记录中决定物料是否进行数量管理,若为空则不更新数量。 |
| BUSTW | 价值串 | 系统根据上述条件找到对应的价值串,它是最终决定财务凭证科目的关键。 |
| BUSTM | 数量串 | 与价值串类似,用于确定数量更新的具体逻辑。 |
T156SY在SAP库存移动的自动过账配置中扮演着核心角色。系统处理一笔货物移动时,大致会经过以下流程:
①收集"输入"条件:系统会从货物移动的上下文中提取关键信息,这些信息正是T156SY表中的字段,包括上面提到的:移动类型、移动标识(KZBEW)、特殊库存(SOBKZ)、消耗过账(KZVBR)、收货标识(KZZUG)等。
②匹配T156SY记录:系统根据收集到的这些信息,去T156SY表中寻找与之精确匹配的记录。
③确定"输出"结果:一旦找到匹配的记录,系统就能确定这笔业务对应的价值串(BUSTW)。这个价值串是T030表的索引,系统通过它最终找到需要记账的总账科目,从而生成财务凭证。
4、T156W:存储价值串与事务键对应关系
T156W是SAP系统中的一张标准透明表,全称为"Posting string values",意为"价值串的值"。它存储了每个价值串(Value String)所包含的具体记账事务/事件键(Transaction/Event Key),这些键是最终确定会计科目的核心要素。
简单来说,T156W定义了"用什么记账科目来处理这笔业务"。它是SAP库存移动自动科目确定流程中的关键一环。
T156W 表,一个价值串可能包含多个事务键,系统会根据业务场景按顺序执行。CNT02 是 T156W 表中的"连续计数器",用于在一个价值串中区分不同的事务键顺序
| 价值串 (BUSTW) | 计数器 (CNT02) | 事务键 (VORSL) | 业务场景说明 |
|---|---|---|---|
| WE01 | 01 | BSX | 一般PO收货、入库 |
| 02 | WRX | GR/IR清算 | |
| 03 | PRD | 价格差异 | |
| 04 | KDM | 汇兑差异 | |
| 05 | EIN | 收货/收票 | |
| 06 | EKG | 收货/收票组 | |
| 10 | BSX | 物料更新 | |
| 11 | UMB | 重估 | |
| WA01 | 01 | BSX | 一般发货与冲销 |
| 02 | GBB | 库存冲销/消耗 | |
| 03 | PRD | 价格差异 | |
| 06 | UMB | 重估 | |
| WA03 | 01 | KON | 管道、寄售发货与冲销 |
| 02 | GBB | 库存冲销 | |
| WA04 | 01 | BSX | 库存转储、转储记账 |
| 02 | PRD | 价格差异 | |
| 12 | AUM | 库存转储差异 | |
| WA06 | 01 | KON | 寄售库存转其他库存 |
| 11 | BSX | 物料更新 | |
| WA11 | 01 | BSX | 分包库存消耗 |
| 02 | KBS | 科目分配采购订单 | |
| 04 | FRN | 外部作业费用 | |
| WA15 | 01 | BSX | 固定资产相关 |
| 02 | ANL | 固定资产科目 | |
| WE06 | 01 | KBS | 消耗类PO收货 |
| 02 | WRX | GR/IR清算 | |
| WF01 | 01 | BSX | PP生产订单收货 |
| 02 | GBB | 库存冲销 | |
| 03 | PRD | 价格差异 | |
| 04 | AUM | 库存转储差异 |
5、T156M:数量过账串
T156M是SAP系统中的一张标准透明表,全称为Posting String: Quantity,即"数量过账串"。它与之前介绍的T156SY(价值过账串)和T156W(价值串的值)紧密配合,但职责不同:T156M专门负责管理物料移动对库存数量的更新逻辑。
简单来说,当一笔物料移动发生时,T156SY决定"要不要更新价值和数量",T156W决定"记什么科目",而T156M则决定了"更新哪些类型的库存数量和如何更新"。
T156M的作用就是根据移动类型和业务场景,确定这笔移动涉及哪些库存类型,以及应该如何更新这些库存的数量。
T156M与T156SY、T156W共同构成了SAP物料移动自动过账的完整逻辑。简单概括三者的关系:
T156SY:决定是否需要更新数量和价值的"开关"与"总规则"。
T156W:决定如何记账(记什么科目)。
T156M:决定如何更新数量(更新哪些库存类型、更新哪张表)。
6、T030:标准科目表
T030是SAP系统中的一张核心配置表,全称为Standard Accounts Table(标准科目表)。它是实现SAP 物料管理(MM)与财务会计(FI)自动集成的关键。
简单来说,当你在SAP中做一笔收货、发货或转储时,T030表里预先配置好的规则,会告诉系统应该自动记到哪个总账科目。
T030是连接后勤业务(物料移动类型、物料主数据)与财务核算(总账科目)的静态数据映射表。它本身只是一张存储配置结果的表。真正让它"活"起来的是它与其他系统对象(账目表、评估类)和业务操作(通过价值串传递的事务码、科目修改码)的联动关系。顾问通过事务代码OBYC来维护这张表,是实现MM与FI集成的核心后台配置工作。
二、总体流程
1、用户操作
比如用户执行事务代码 MIGO,选择"A01 收货"和"R01 采购订单",输入采购订单号,移动类型填 101,点击过账。
2、规则查找------从"移动类型"到"事务键"
2.1. T156 → 获取 BUSTR(价值串引用)
系统用移动类型 101 作为钥匙,去查找表 T156(移动类型主数据表)。
关键字段:BWART = 101,找到对应的 BUSTR(价值串引用)字段。
取值:对于101,BUSTR 通常是001。
(T156-BUSTR 是一个核心的参考字段,用于标识一个移动类型复制自哪个标准移动类型。你可以把它理解为移动类型的"祖先"或"父节点"标识。
系统的逻辑是:我不会把"101移动类型的所有复杂规则"都写在这个T156表记录里。我在这里只放一个标签 001。然后,系统拿着这个标签 001,去其他表(比如控制记账规则的T156W、控制字段选择的T158等)查找"标签001对应的那套具体规则是什么"。
为什么用 BUSTR 这个设计:为了"复用"。假设移动类型 101、102、161 在核心记账逻辑上基本相同(都是收货入库)。SAP没必要为每个移动类型都写一遍完全相同的复杂规则。它们只需要在T156表里,各自指向同一个 BUSTR 值(比如 001),然后系统只需要维护好"标签001对应的那套规则"就可以了。
T156-BUSTR 就是连接移动类型和这套通用规则的桥梁。告诉系统:所有移动类型 101 的业务,都走编号为 001 这套控制规则。)
你对一个物料执行移动类型 101 的收货操作。
系统首先去查 T156 表。在这张表里,针对 BWART='101' 的记录,系统找到了一个 BUSTR 字段,其值为 '001'。
BUSTR='001' 起到了标签或入口代码的作用,告诉系统:"所有移动类型 101 的业务,都走编号为 001 这套控制规则。"
2.2. T156SC / T156SY→ 解析价值串
匹配具体条件 (T156SC 表)
T156SC 其主键是:七个字段:BWART (移动类型) 、WERTU (价值更新) 、MENGU (数量更新) 、SOBKZ (特殊库存标识) KZBEW (移动标识) 、KZZUG (收货标识) 、KZVBR (消耗过账) (系统在执行具体的货物移动时,根据该次移动的业务场景(如采购入库、销售出库、盘盈盘亏等)动态地确定了这些字段的值)
现在系统知道要走 001 这套规则,但它还需要结合这次业务的具体细节来决定具体行为。例如:这次收货是否价值更新(WERTU=X)?是否数量更新(MENGU=X)?是否为特殊库存(SOBKZ=' ')?
系统拿着这些具体条件,去 T156SC 这张"客户可配置"的表中进行精确匹配。
关键点:虽然 T156SC 表没有 BUSTR 字段,但它的所有配置都服务于 BUSTR 所定义的那套规则。每一组 T156SC 的配置(由 BWART, WERTU 等7个字段唯一确定),都隐式地属于某个 BUSTR。你可以理解为 BUSTR 决定了"走哪条路",而 T156SC 决定了"在这条路上遇到不同情况该怎么处理"。
锁定最终规则 (T156SY 表)
现在,系统已经掌握了所有信息:BUSTR='001'(规则入口)+ WERTU='X'(具体条件)。
它拿着这两个关键信息,去查询 T156SY 表。T156SY 的联合主键就包括 MANDT(客户端)和 BUSTR。
因此,系统可以精确地找到唯一一条记录:BUSTR='001' 且 WERTU='X'。
这条记录最终告诉系统:
应该使用 BUSTW (价值串,例如 'WE01') 去 T156W 表中确定会计科目。
应该使用 BUSTM (数量串) 去T156M处理数量更新逻辑。
T156SY 表正是根据 BUSTR='001' + WERTU='X' 等具体条件,来确定 BUSTW (价值串) 和 BUSTM (数量串) 的
T156-BUSTR='001' 只是一个"入口代码"或"标签"。系统拿着这个标签,去 T156SY 这张"规则分配表"里,结合更多"具体场景"来寻找真正执行记账的"执行者"------即 BUSTW(价值串,例如 'WE01') 和 BUSTM(数量串)。
BUSTW (价值串 - Posting String for Values)
这是一个4位的代码(如 WE01, WA01),它指向 T156W 表。你可以把它想象成一个"过账指令模板",里面详细定义了此次货物移动需要生成哪些会计凭证行(如:借:库存商品,贷:GR/IR),以及每行取哪个金额(如:采购订单金额、差异金额)。
BUSTM (数量串 - Posting String for Quantities)
这也是一个4位的代码,指向 T156M 表。它则决定了此次货物移动如何更新和管理数量,比如更新哪个库存类型(非限制、质检、冻结)、是否生成物料凭证行等
T156SY 就是连接"标签" (BUSTR) 和"执行者" (BUSTW, BUSTM) 的中转站。
它通过 BUSTR 结合物料主数据属性 (WERTU 等) 和业务场景标志 (SOBKZ 等) 等多维度条件,精准地为每一次货物移动匹配唯一的 BUSTW 和 BUSTM。
最终,BUSTW 负责搞定"钱"(会计科目),BUSTM 负责搞定"物"(库存数量和状态)
2.3. T156W → 确定事务键
最后,系统用价值串 WE01 去查找表 T156W,这张表里定义了每个价值串具体包含哪些事务键。
关键字段:BUSTW = WE01,关联出所需的事务键,对于101,至少会包含 BSX(库存过账)和 WRX(GR/IR清算科目)。
3、对象查找------补全"记账参数"
找到了"规则(事务键)",系统还需要找到"对象"是谁,也就是要从业务单据和主数据中收集以下信息:
供应商:从采购订单中获取,用于确定应付暂估的明细科目。
一般修改 (General Modification):对于 GBB 这样的科目,需要此值进一步细分,但101用到的 BSX、WRX 通常不需要。
评估级别 (Valuation Class):从物料主数据(会计视图)中读取,告诉系统这个物料是"原材料"还是"产成品"。这是确定存货科目的关键。
评估修改 (Valuation Modification):从工厂的配置中读取(事务码 OMWD),是一个分组代码,简化配置。
4、科目确定------OBYC配置(T030表)
现在,系统已经集齐了所有信息:
借方:事务键 BSX + 估价修改码 + 评估类 = 应该记到哪个存货科目?
贷方:事务键 WRX + 估价修改码 = 应该记到哪个GR/IR科目?
系统拿着这些"钥匙",去查找自动记账的配置表 T030(可通过事务码 OBYC 维护)。
OBYC的作用:这是一个映射表,为"事务键 + 一般修改+ 估价修改码 + 评估类"这个组合,分配一个最终的总账科目号。
只要找到了唯一匹配的行,系统就得到了借方和贷方应使用的总账科目。
5、会计凭证生成
确定了借贷双方的所有科目后,系统开始生成会计凭证,并将凭证数据写入以下表中:
BKPF(会计凭证抬头):凭证日期、公司代码、过账日期等。
BSEG(会计凭证行项目):具体的记账行,包括借方:库存科目,贷方:GR/IR清算科目,以及金额、供应商、物料等信息。
最终,系统提示"物料凭证XXXX已过账",会计凭证生成完毕。你可以在MIGO的"文件信息"中查看它。
简要描述如下:
第一步:移动类型 → 价值串引用(T156表)
系统根据移动类型(如101)查询表T156,找到字段BUSTR(Posting String Reference)的值
第二步:业务参数组合 → 唯一价值串(T156SC/T156SY)
这是最关键的一步。SAP用7个核心参数组合确定唯一的价值串
参数字段 名称 示例值 含义
BWART 移动类型 101 业务类型
WERTU 价值更新 X 物料是否更新金额
MENGU 数量更新 X 物料是否更新数量
SOBKZ 特殊库存 空 是否特殊库存(寄售/委外等)
KZBEW 移动标识 B B=采购订单, F=生产订单
KZZUG 收货标识 空 是否为收货移动
KZVBR 消耗过账 空 是否消耗性收货
一个移动类型(如101)可能对应多个价值串(WE01/WE06/WF01...),系统就是根据这7个参数的组合来决定取哪一个。
第三步:价值串 → 事务键列表(T156W表)
确定了价值串(如WE01)后,系统查询表T156W,按CNT02(计数器)的顺序获取该价值串包含的所有事务键
第四步:事务键 → 总账科目(OBYC/T030表)
最后,系统用事务键,结合评估类(从物料主数据读取)和估价修改码(从工厂配置读取),在OBYC配置(表T030)中匹配总账科目。
| 步骤 | 关键表 | 关键字段 | 维护事务码 |
|---|---|---|---|
| 定义移动类型基础属性 | T156 | BWART, BUSTR, SHKZG | OMJJ |
| 价值串确定规则 | T156SC / T156SY | BWART, WERTU, SOBKZ, KZBEW 等七要素 | OMJJ |
| 价值串→事务键 | T156W | BUSTW, CNT02, VORSL | 系统预定义,不可配置 |
| 事务键→总账科目 | T030 | VORSL, VALUATION_MOD, ACCOUNT | OBYC |
三、移动类型-价值串-事务键-总账科目
1、常用的移动类型
| 大类 | 移动类型(BWART) | 业务含义 | 典型事务代码 |
|---|---|---|---|
| 收货 | 101 | 采购订单收货(库存增加) | MIGO, MB01 |
| 103 | 收货进入冻结状态(质检前) | MIGO | |
| 122 | 无采购订单的退货 | MIGO, MB1A | |
| 501 | 无采购订单收货(如盘盈入库) | MIGO, MB1C | |
| 511 | 免费收货(不产生应付) | MIGO, MB1C | |
| 发货 | 201 | 成本中心消耗领料 | MB1A, MIGO |
| 261 | 内部订单消耗领料 | MB1A, MIGO | |
| 541 | 发料至分包商(委外加工) | MB1B, MIGO | |
| 551 | 库存报废(损失) | MB1A, MIGO | |
| 601 | 销售出库(发货给客户) | VL01N, VL02N | |
| 转储 | 301 | 工厂间转储(一步法) | MB1B, MIGO |
| 309 | 物料到物料的转换(如物料号变更) | MB1B, MIGO | |
| 311 | 同一工厂内存储地点间转储 | MB1B, MIGO | |
| 调整 | 321 | 质检库存转为非限制使用库存 | MB1B, MIGO |
| 322 | 非限制使用库存转为质检库存 | MB1B, MIGO | |
| 343 | 冻结库存转为非限制库存 | MB1B | |
| 349 | 冻结库存转为冻结库存(调整) | MB1B | |
| 561 | 库存初始化(期初导入) | MIGO, MB1C |
2、常用的价值串
价值串(Value String)是SAP系统中连接业务操作与财务记账的核心桥梁。它是一个由多个事务键(Transaction Key)组成的预定义集合,代表了某一类业务动作(如收货、发货)所需执行的一整套记账规则。
你可以把它理解为财务模块的"执行指令清单":当一笔物料移动发生时,系统会根据业务特征找到对应的价值串,然后按顺序执行清单上的每一条指令(事务键),最终生成完整的会计凭证。价值串是SAP预定义的标准内容,顾问无法新增或修改,但可以查看其具体构成。
2.1、采购相关价值串(收货/退货)
| 价值串 | 业务含义 | 包含的核心事务键 | 业务场景说明 |
|---|---|---|---|
| WE01 | 采购订单收货(库存物料) | BSX、WRX、PRD、KDM | 标准采购入库(如原材料、成品收货),生成库存增加和暂估负债 |
| WE02 | 采购订单退货(库存物料) | BSX、WRX | 已入库的库存物料退货给供应商,冲减库存和暂估 |
| WE06 | 采购订单收货(直接消耗) | KBS、WRX | 采购物料直接用于成本中心/订单(不进库存),如办公用品直接交付行政部 |
| WE07 | 采购订单退货(直接消耗) | KBS、WRX | 直接消耗的采购物料退货,冲减已记录的费用 |
2.2、库存移动相关价值串(领用/转移)
| 价值串 | 业务含义 | 包含的核心事务键 | 业务场景说明 |
|---|---|---|---|
| WA01 | 一般发货与冲销 | BSX、GBB、PRD、UMB | 成本中心领料、生产发料、销售出库等场景 |
| WA03 | 寄售发货与冲销 | KON、GBB、AKO、EIN、EKG | 从供应商寄售库存中提货消耗 |
| WA04 | 库存转储 | BSX、AUM、PRD、UMB、GBB | 工厂间转储(如301移动类型)、同一工厂内存储地点转储 |
| WA06 | 寄售库存转自有库存 | KON、BSX、GBB、AKO、EIN、EKG | 将供应商寄售库存转为公司自有库存 |
| WA11 | 分包库存消耗 | BSX、KBS、PRD、FRN、UMB | 委外加工发料给分包商 |
| WA15 | 固定资产相关 | BSX、ANL、PRD、FRN、UMB | 固定资产采购收货,直接记入固定资产科目 |
2.3、生产相关价值串
| 价值串 | 业务含义 | 包含的核心事务键 | 业务场景说明 |
|---|---|---|---|
| WF01 | 生产订单收货 | BSX、GBB、PRD、AUM、UMB | 生产订单完工入库(成品/半成品入库) |
| EF01 | 生产订单收货(成品入库) | BSX、GBB | 生产订单完成后,成品入库 |
2.4、盘点相关价值串
| 价值串 | 业务含义 | 包含的核心事务键 | 业务场景说明 |
|---|---|---|---|
| WE17 | 盘点盘盈 | BSX、INV | 盘点发现库存多于账面,记录库存增加和盘盈收益 |
| WE18 | 盘点盘亏 | BSX、INV | 盘点发现库存少于账面,记录库存减少和盘亏损失 |
3、常用的事务键
| 事务键 | 业务场景/含义 | 对应的典型物料移动示例 | 简要说明 |
|---|---|---|---|
| 库存记账 | |||
| BSX | 库存过账 | 所有库存收货、发货 | 最核心的库存科目,借方记库存增加,贷方记库存减少。 |
| WRX | GR/IR清算 | 采购订单收货(101) | 即"货到票未到"暂估科目,用于采购收货时过渡。 |
| 消耗与成本 | |||
| GBB | 库存冲销/消耗 | 成本中心发料(201)、生产发料(261) | 最常用的消耗科目,需结合科目修改进一步细分场景。 |
| AUF | 生产订单产出/差异 | 生产订单收货(101) | 用于无科目分配的生产订单收货,贷记此科目。 |
| VBR | 生产消耗 | 生产订单发料(261) | GBB + VBR 的组合代表生产投入,借记生产成本科目。 |
| VAX | 销售成本 | 销售订单发货(601) | 不带科目分配(如成本中心)的销售出库成本。 |
| VAY | 销售成本 | 销售订单发货(601) | 带科目分配(如成本中心)的销售出库成本。 |
| 差异与价格重估 | |||
| PRD | 价格差异 | 采购收货、发票校验 | 物料采用标准价格时,实际成本与标准成本差异科目。 |
| UMB | 重估差异 | 用MR21/MR22修改物料价格 | 物料价格变更时产生的损益,通常记重估损益科目。 |
| AUM | 转储差异 | 工厂间转储(301)、物料间转换(309) | 库存转移时产生的价值差异。 |
| 特殊业务 | |||
| FRL | 外包作业费用 | 外包采购订单收货 | 应付给外包商的加工费科目。 |
| VBO | 外包消耗 | 外包采购订单收货 | 发给外包商的自有物料消耗科目。 |
| BSV | 外包产出 | 外包采购订单收货 | 外包成品收货时,贷方记库存减少。 |
| KON | 委托负债 | 从受托代销库存提货 | 从受托代销(consignment)库存中提货时,确认对供应商的应付暂估。 |
| VNG | 报废/毁损 | 报废出库(551) | 物料报废损失科目。 |
| INV | 库存盘点差异 | 盘盈盘亏 | 库存盘点产生的损益调整科目。 |
科目修改(一般修改) 是事务键的细分标识,用于区分同一事务键下的不同场景。最典型的例子就是 GBB,它必须与"科目修改"(如 VBR, AUF, VAX)配合使用,才能精准地找到对应的总账科目。
①事务键 (Transaction Key):决定"大类"
事务键定义了最根本的业务活动,是SAP系统预定义好的。在物料移动记账的配置(通常指OBYC)里,你会看到很多事务键。
GBB: 代表"库存移动产生的借方对应科目的出库/消耗类业务"。比如你从仓库领出一个手机去用。
BSX: 代表"存货增加"(比如你买了一个手机入库)。
WRX: 代表"已收货物/已清发票的差异"(比如发票金额和收货金额不一样)。
通俗说: 事务键 GBB 就像一个"出库业务"的大筐。所有"非销售给外部客户"的物料减少,都先扔进这个GBB大筐里。
②科目修改 (Account Modification):区分"细类"
当系统看到事务键是 GBB(知道是"出库消耗")后,它还需要知道:这是发给生产部门做产品?还是发给销售部门做样品?还是因为盘点发现少了?
这些细分的"去向"或"原因",就是科目修改。
通俗说: 科目修改就是贴在GBB这个大筐里的小标签。
标签 VBR:代表"生产消耗"。 → 会计记账:借"生产成本"。
标签 VAY:代表"销售订单消耗"。 → 会计记账:借"销售费用-样品"。
标签 AUA:代表"资产领用"。 → 会计记账:借"固定资产"。
4、常用的移动类型和事务键对应关系
| 移动类型 | 业务场景 | 价值串 | 事务键 | 对应OBYC科目类型 | 借贷方向 |
|---|---|---|---|---|---|
| 101 | 采购订单收货 | WE01 | BSX + WRX | 库存科目 + GR/IR清算科目 | 借:BSX / 贷:WRX |
| 102 | 101冲销 | WE02 | BSX + WRX | 库存科目 + GR/IR清算科目 | 借:WRX / 贷:BSX |
| 122 | 退货(有PO) | WE06 | BSX + WRX | 库存科目 + GR/IR清算科目 | 借:WRX / 贷:BSX |
| 201 | 成本中心发料 | WA01 | GBB + BSX | 消耗科目 + 库存科目 | 借:GBB / 贷:BSX |
| 261 | 生产订单发料 | WA01 | GBB + BSX | 消耗科目 + 库存科目 | 借:GBB / 贷:BSX |
| 301 | 工厂间转储 | WA04 | BSX + AUM | 库存科目 + 转储差异 | 借:BSX/借:BSX / 差异:AUM |
| 309 | 物料转换 | WE27 | BSX | 库存科目(转出/转入) | 借:BSX / 贷:BSX |
| 311 | 存储地点转储 | WE50 | BSX | 库存科目(转出/转入) | 借:BSX / 贷:BSX |
| 501 | 无PO收货 | WE19 | BSX | 库存科目 | 借:BSX |
| 511 | 免费收货 | WE21 | BSX | 库存科目 | 借:BSX |
| 551 | 报废 | WE22 | GBB | 消耗科目(报废损失) | 借:GBB / 贷:BSX |
| 561 | 期初库存导入 | WE23 | BSX | 库存科目 | 借:BSX |
| 601 | 销售出库 | WA01 | VAX/VAY + BSX | 销售成本科目 + 库存科目 | 借:VAX/VAY / 贷:BSX |
| 701/702 | 盘点盘盈/盘亏 | WE17/WE18 | INV + BSX | 盘点损益科目 + 库存科目 | 701借:INV贷:BSX / 702相反 |
四、SAP中如何自动找到会计科目完成自动记账
自动记账科目 = 事务键 + 科目修改 + 评估类 + 评估分组码
自动记账的关键在于四个核心要素的协同作用。其中前两项决定了记账的规则,后两项决定了记账的对象。
1. 事务键:定义记账规则的核心
事务键是SAP预定义的、用来标识具体财务过账规则的代码。你可以把它理解为一个记账动作,比如"记库存"、"记消耗"、"记价格差异"。常见的事务键包括:
BSX:对应库存科目。只要涉及库存增加或减少,基本都会用到它。
GBB:对应库存的冲销/消耗科目。用于成本中心领料、生产发料、报废等出库场景。
WRX:对应GR/IR(收货/收发票)清算科目。在采购收货但还未收到发票时,用于暂估应付账款。
PRD:对应价格差异科目。当物料采用标准价格,采购或生产成本与实际有差异时使用。
2. 科目修改:对记账规则的精准细分
当一个事务键(如GBB)对应多种不同的业务场景时,系统需要进一步区分。科目修改(也叫"一般修改")就起到了细分规则的作用。例如:
GBB + VBR:表示"成本中心消耗",科目应记为"管理费用"或"制造费用"。
GBB + AUF:表示"生产订单消耗",科目应记为"生产成本-原材料消耗"。
这个关联关系是在配置移动类型(事务代码OMJJ)时设定的。
3. 评估类:连接物料与科目的桥梁
评估类是物料主数据(会计视图)中的一个字段。它是物料在财务上的一个分组,让系统知道这笔账应该记到哪个大类的科目中去。
用途:同一个物料类型(如"原材料")可以通过不同的评估类(如3000、3001)来对应不同的库存科目(如"原材料-主料"、"原材料-辅料")。
配置:通过事务代码OMSK可以将评估类分配给物料类型。
4. 评估分组码:简化配置的组织单元
为了减少配置工作量,可以将多个工厂(评估范围)归类到同一个"评估分组码"下。这样,在配置科目时,只需对这个"分组码"设置一次即可,无需为每个工厂重复设置。
自动过账的完整决策过程(以实际场景为例)
下面通过两个典型场景,串联起这四个要素是如何共同起作用的。
场景一:货物采购收货
业务动作:使用移动类型 101 对采购订单进行收货。
系统逻辑链条:
定规则:系统找到移动类型101,其价值串指向两个事务键:BSX(记库存增加)和 WRX(记GR/IR清算科目)。此事务键不需要科目修改。
找对象:系统从物料主数据中读取到评估类(如3000),从工厂配置中读取到评估分组码(如0001)。
匹配科目:系统在OBYC配置表中,通过以下组合找到两个总账科目:
BSX + 0001 + 3000 → 原材料库存科目 (借方)
WRX + 0001 + 3000 → GR/IR清算科目 (贷方)
场景二:成本中心领料发货
业务动作:使用移动类型 201 将物料发往成本中心。
系统逻辑链条:
定规则:系统找到移动类型201,其价值串指向 GBB 事务键。同时,OMJJ配置中定义了该场景下GBB对应的科目修改为 VBR。
找对象:系统同样读取物料主数据的评估类(3000)和工厂的评估分组码(0001)。
匹配科目:系统在OBYC配置表中,通过以下更精细的组合找到两个总账科目:
BSX + 0001 + 3000 → 原材料库存科目 (贷方)
GBB + VBR + 0001 + 3000 → 管理费用-物料消耗 (借方)
SAP物料移动自动记账的根本逻辑,就是系统通过一个 "规则+对象" 的查找过程,最终在OBYC配置表里找到唯一的总账科目。
整个过程可以拆解为系统按顺序做的三次"匹配":
第一匹配:业务决定规则 (从哪里找?)
当你做一笔物料移动时(比如用201发料到成本中心),系统首先会去读这个移动类型的配置(事务代码OMJJ)。
它会找到这个业务动作对应哪个事务键(也就是记账规则)。
例如:201发料 → 事务键是 GBB(库存冲销/消耗)。
如果需要进一步细分(比如GBB要区分是发给成本中心还是生产订单),系统还会在这里找到科目修改(也叫一般修改)。例如:发给成本中心的201,科目修改一般是 VBR。
第二匹配:对象提供参数 (往哪里找?)
系统知道了该用哪个"规则"后,就需要拿到"对象"的参数,才能去配置表里匹配。
评估类:系统去物料主数据(会计视图)里读取这个物料的评估类,比如3000(代表原材料)。
估价修改:系统去工厂的配置里,读取这个工厂被分配给了哪个估价修改码(评估分组码),比如0001。
第三匹配:配置完成映射 (最终找到科目)
现在,系统手里有了四个关键参数:
事务键 + 科目修改 + 评估类 + 估价修改
它拿着这组"钥匙",去自动记账的配置表(事务代码OBYC)里进行精准匹配,找到那条唯一的配置,从而确定借贷双方的总账科目。
使用移动类型 101 对采购订单进行收货。
系统逻辑链条:系统找到移动类型101,其价值串指向两个事务键:BSX(记库存增加)和 WRX(记GR/IR清算科目)。
第一层:移动类型 101 如何找到"价值串"?
配置事务码:OMJJ
当你在系统中使用移动类型101进行收货时,系统会去OMJJ的配置表中,根据几个关键条件(如移动标识、特殊库存类型等),找到它应该使用的价值串 (Value String)。
什么是价值串? 你可以把它理解成一个"记账规则包"。因为一个业务动作(比如收货)往往需要更新多个科目(库存增加、GR/IR清算),价值串就把这些对应的"事务键"(如BSX、WRX)打包在一起,方便系统统一调用。
101对应的价值串:对于标准的101采购订单收货,系统最常用到的价值串是 WE01 或 WE06。这个分配关系,就定义在OMJJ的配置中。
第二层:"价值串"如何链接到"事务键" BSX 和 WRX?
关键后台表:T156W
这是整个链条中最关键的一环。当系统确定了价值串(比如 WE01)后,它会去一张名为 T156W 的后台表中,查找这个价值串下包含了哪些事务键。
核心逻辑:在表 T156W 里,WE01 这个价值串就被定义好了一组记账规则,其中就明确包含了 BSX(库存过账)和 WRX(GR/IR清算) 这两个事务键。同时,这个表也定义了这些事务键的顺序和是否需要进行"科目修改"等细节。
第三层:"事务键"如何找到最终的总账科目?
配置事务码:OBYC
这是最后一步,也是你比较熟悉的部分。系统拿着从T156W里找到的"事务键"(BSX, WRX),再结合物料主数据中的"评估类"和工厂的"估价修改码",去OBYC的配置表(对应的后台表是 T030)里进行匹配,最终确定借、贷双方的总账科目。
| 链条环节 | 关键事务码 | 核心作用 | 关键后台表 | 在本例中的实例 |
|---|---|---|---|---|
| 移动类型 → 价值串 | OMJJ | 定义移动类型的控制参数,并分配价值串。 | T156, T156SC | 移动类型 101 (满足采购订单收货条件) → WE01 (价值串) |
| 价值串 → 事务键 | (无直接事务码, 查看表用SE16) | 定义每个价值串具体包含哪些事务键(BSX, WRX等)。 | T156W | 价值串 WE01 → 事务键 BSX 和 WRX |
| 事务键 → 总账科目 | OBYC | 为"事务键 + 估价修改码 + 评估类"的组合分配总账科目。 | T030 | 事务键 BSX + 估价修改码 0001 + 评估类 3000 → 原材料-库存科目 |
五、移动类型怎么来的
移动类型 (BWART) 的来源与配置,这个存储下来的BWART值(比如101)又是怎么来的呢?
默认逻辑:从"上游凭证"复制。标准SAP逻辑中,移动类型通常是自动带出的,不需要你每次都手动输入。系统会根据你操作的单据类型(如采购订单)和你选择的业务动作(如"收货"),自动预填充移动类型101。这也是MIGO界面中移动类型字段有时显示为灰色不可修改的原因。
存储位置:写在MSEG表里。无论这个值是系统自动带的,还是你手动改的,保存后它都会被写入到物料凭证行项目表MSEG的BWART字段中。从这一刻起,这笔物料移动就被贴上了这个业务类型的标签。
配置定义:T156是"户口本"。所有合法的移动类型及其基础定义,都配置在表T156中。MSEG表中的BWART字段,其值必须存在于T156表中,否则系统会报错,认为你使用了非法的移动类型。
这个自动确定关系,并不是存储在单张表里的一个"值",而是由系统程序根据一系列规则动态判断出来的。或者说,这个"规则"在SAP系统里是通过配置"写死"的,而不是像数据那样存储在某个表中。
移动类型是一个"中央控制参数"(central control parameter)。当你基于一个参考单据(如采购订单、生产订单、预留)创建货物移动时,SAP系统程序会根据单据类型、单据中的项目类别、以及你执行的"动作"(如收货、发货),在代码逻辑中"写死"了默认的移动类型。
用通俗的话说就是:系统内部有一段程序逻辑,明确定义了:"如果是针对采购订单收货,就默认用101"。
所以,它更像是一个程序中的硬编码规则(或可配置的默认值),而不是一个存储在任何一张表里的"映射"。
影响因素:哪些"变量"会影响这个确定过程?虽然默认规则是"写死"的,但最终生效的移动类型还会受到以下几个因素的影响,系统会综合判断:
参考单据类型:这是最主要的因素。针对采购订单收货 → 移动类型101;针对生产订单收货 → 移动类型101(但用的是另一套价值串WF01);针对销售订单发货 → 移动类型601。
特殊库存标识:同样是对采购订单收货,如果是"寄售"特殊库存,系统可能会默认一个不同的移动类型(如K类)。
物料主数据/物料类型:不同物料类型(如原材料、成品)在某些场景下可能影响默认的移动类型。
工厂/存储地点配置:某些工厂特定的设置也可能影响移动类型的默认行为。
六、借贷关系怎么确定
T156W 定义了"做什么"(执行哪些记账规则),OBYC 定义了"记到哪"(具体的科目),那借贷关系到底在哪里决定:
借贷关系本质上是由"业务动作"决定的,而这个决定被固化在了"移动类型"的配置参数中。T156W 和 OBYC 并不直接决定"借"还是"贷",它们分别负责"执行规则"和"提供科目"。
第一步:业务动作定性------"是收还是发?"
借贷关系的源头,是业务操作本身。
如果做的是 收货(如用移动类型 101 采购收货),逻辑上是库存增加。
如果做的是 发货(如用移动类型 201 发料到成本中心),逻辑上是库存减少。
这个 "增加" 或 "减少" 的定性,是借贷关系的根本来源。
第二步:移动类型标记------"'借'还是'贷'?"
移动类型在接收了"业务动作"的定性后,会在 T156 表(配置入口是 OMJJ)里用 SHKZG 这个字段明确标记自己的"借贷方向标识"。
这个标记是整个借贷逻辑的关键"开关"。
业务动作 典型移动类型 T156 表中的 SHKZG 字段值 含义 对库存科目的影响
收货 (增加) 101 (采购收货) S (借方) 表示此移动类型会生成一个借方记账行项 库存增加 (记借方)
发货 (减少) 201 (成本中心发货) H (贷方) 表示此移动类型会生成一个贷方记账行项 库存减少 (记贷方)
第三步:T156W 传递规则------"按顺序执行哪些记账指令"
确定了"库存"这第一条腿的方向(是借还是贷)后,系统需要知道"对方科目"的指令是什么。
T156W 不负责决定方向。它的角色是"发令官",根据移动类型找到对应的 价值串 (BUSTW),然后按照计数器 CNT02 的顺序,列出一条条需要执行的记账规则(事务键)。
对于 101 收货,T156W 会列出:BSX (库存过账), WRX (GR/IR清算)。
对于 201 发货,T156W 会列出:GBB (库存冲销/消耗), BSX (库存过账)。
注意:BSX 这个规则,在 101 (收货) 场景下会生成借方分录(因为是收货),而在 201 (发货) 场景下会生成贷方分录(因为是发货)。同一个 BSX 在不同业务下方向不同,其方向正是由第二步中移动类型的 SHKZG 标识决定的。
第四步:OBYC 提供科目------"'借/贷'后面具体写上哪个科目编号"
最后,系统拿着第二步确定的"借贷方向"和第三步确定的"事务键(如 BSX、GBB)",去 OBYC(后台表 T030)里查找具体的科目。
OBYC 的配置表中,虽然界面上有"借方科目"和"贷方科目"两栏,但这个配置是为事务键本身设定候选科目,而非决定方向。方向是由系统在执行时,根据第二步的 SHKZG 标识来动态选择的。
例如,在 OBYC 里配置 BSX,你可能只填了一个库存科目 14010101。系统拿到这个科目号后,会根据 SHKZG 是 S 还是 H,自动决定是把 14010101 写到会计凭证的"借方"还是"贷方"。
七、物料凭证的生成
第一步:确定"身份" -- 查询 T156SY
当你在 MIGO 里保存一个货物移动时,系统会立刻根据业务场景(移动类型、是否特殊库存等)收集T156SC表格的7个关键字段,然后用它们去查询 T156SY 这张表。T156SY 是这个流程的控制中心,它会告诉系统两个至关重要的"指令":BUSTW(价值串)和 BUSTM(数量串)。这就像是系统通过7个参数,在 T156SY 这个"指令集"里找到了这次移动的"执行指南"。
第二步:兵分两路,各司其职
拿到 BUSTW 和 BUSTM 这两个指令后,系统的处理路径就分开了:
左路:数量更新:系统拿着 BUSTM(数量串)去处理 T156M 表。T156M 里定义了本次移动在"数量"上的一切规则,比如移动类型是否允许负库存、是否要生成物料凭证中的某些数量字段等。正是在这一步,系统根据 T156M 的配置,正式生成了物料凭证(写入表 MSEG 和 MKPF),记录了"物"的变化。
右路:价值更新:系统拿着 BUSTW(价值串)去处理 T156W 表。T156W 里定义了本次移动需要涉及哪些"记账键值"(如 BSX 存货、WRX 收货/收发票清算、GBB 库存修改差异等)。系统会把这些记账键值交给自动记账(OBYC)配置,最终确定会计科目。
第三步:生成凭证,完成过账
物料凭证:在左路处理完成后,物料凭证就生成了。它忠实记录了"数量、位置、批次、物料"等信息,你可以把它看作是实物的"流水账"。
会计凭证:右路完成科目确定后,会计凭证随即生成,记录"金额、科目"等价值信息。
物料凭证本质上是:记录物料在特定时间点,因某一业务事件(如收货、发货、转储),发生的【数量、价值、状态】变化的正式单据。
所以,一个标准的物料凭证在数据库表(主要是MSEG和MKPF)里,可以回答以下所有问题:
什么物料? (物料号)
何时发生? (过账日期)
谁操作的? (用户)
多少数量? (数量、单位)
从哪到哪? (工厂、库存地点、仓位、批次)
何种库存? (普通库存、寄售、销售订单库存等)
价值多少? (金额)
为何发生? (关联的采购/生产/销售订单号)
如何记账? (移动类型及七个关键字段)