05 MM01 前置 FI/MM 配置:补齐公司代码、科目表与期间
创建物料主数据前,FI/MM 的基础配置必须先补齐。否则进入 MM01 时,即使物料号和物料类型都正确,也可能出现部分视图无法维护,或提示公司代码不存在、没有完全维护。

这类问题不要先从物料编号下手。系统会沿着下面这条链路检查组织和财务配置:
工厂 GBJ1 → 估价范围 → 公司代码 6601 → 公司代码全局参数 → MM 物料期间
只要其中一段没有落表,MM01 就可能报错。本文用公司代码 6601、工厂 GBJ1 作为练习场景,把需要补齐的配置一次整理清楚。
先检查公司代码全局参数 OBY6
配置对象:公司代码全局参数
菜单路径:SPRO → SAP 参考 IMG → 财务会计 → 财务会计全局设置 → 公司代码 → 输入全局参数
S/4HANA 常见路径:SPRO → SAP 参考 IMG → 财务会计 → 财务会计全局设置 → 公司代码全局参数 → 输入全局参数
事务代码:OBY6
用途:维护公司代码层面的关键 FI 参数,比如会计科目表、会计年度变式、字段状态变式、过账期间变式、公司、信用控制范围等。

如果公司代码 6601 已经存在,但 OBY6 里的全局参数没维护完整,常见卡点就是下面几个字段:
| 字段 | 为什么重要 | 建议做法 |
|---|---|---|
| 账目表 | FI 和 MM 后续都会用到总账科目 | 先按 F4 选系统已有值;练习环境也可以新建 G001 |
| 会计年度变式 | 决定财务年度和期间 | 自然年练习常用 K4,以系统已有配置为准 |
| 字段状态变式 | 控制会计凭证字段隐藏、可选或必填 | 最稳是复制已有公司代码的值 |
| 过账期间变式 | 控制哪些期间允许过账 | 可先建练习值,再分配给公司代码 |
| 信用控制范围 | 后续 SD/FI 信用管理会用到 | 练习环境可建一个独立范围 |
| 公司 | 可选组织字段 | 它不是账目表,不能替代“账目表”字段 |
最稳的做法是找一个已经能正常创建物料的公司代码,比如 1000,在 OBY6 里对照它的账目表、会计年度变式、字段状态变式、过账期间变式和信用控制范围,再给 6601 填同一套或同业务组对应的一套。
本次报错的主因通常是 OBY6 里账目表为空,其次是会计年度变式、字段状态变式、过账期间变式或 MM 物料期间没有补齐。
新建会计科目表 OB13
配置对象:会计科目表清单
菜单路径:SPRO → SAP 参考 IMG → 财务会计 → 总账会计 → 总账科目 → 主数据 → 准备 → 编辑会计科目表清单
事务代码:OB13
用途:定义一套总账科目的编号规则和基础属性,例如科目表代码、描述、维护语言、总账科目长度、集团科目表等。
练习环境可以新建一个 4 位代码的科目表:
| 字段 | 建议值 |
|---|---|
| 账目表 | G001 |
| 说明 | Garson会计科目表 |
| 维护语言 | ZH 或系统默认语言 |
| 总账科目号长度 | 10 |
| 集团账目表 | 先留空 |
| 冻结 | 不勾选 |
操作步骤:
- 输入事务码
OB13 - 点击“新条目”
- 填入上面的字段
- 保存

保存后还没结束,还要把科目表分配给公司代码:
- 输入事务码
OBY6 - 打开公司代码
6601 - 在“账目表”字段填
G001 - 同时补上会计年度变式、字段状态变式和过账期间变式
- 保存

注意:OB13 创建的只是“科目目录壳子”,还没有具体会计科目。后面还需要用 FS00 创建现金、银行存款、原材料等具体总账科目。
新增信用控制范围 OB45
配置对象:信用控制范围
菜单路径:SPRO → SAP 参考 IMG → 企业结构 → 定义 → 财务会计 → 定义信用控制范围
事务代码:OB45
用途:创建和维护信用控制范围,用来集中控制客户信用额度和信用风险。一个信用控制范围可以分配给一个或多个公司代码。

OB45 只是建立“信用额度池”的基础配置。真正是否拦销售订单,还要继续维护客户信用主数据和 SD 信用检查。
| 字段 | 作用 | 练习建议 |
|---|---|---|
| 信用控制范围 | 一个客户赊账额度池,4 位代码 | 可用自己的测试值,比如 8000 |
| 货币 | 信用额度使用的币种 | 中国测试公司用 CNY |
| 更新 | 决定哪些 SD 单据金额会占用信用额度 | 一般选 000012 |
| FY 变式 | 信用数据按哪个财务日历统计 | 自然年常用 K4 |
| 风险类别 | 新客户默认风险等级 | 初学可先空着,后面在客户里维护 |
| 信贷限额 | 新客户默认信用额度 | 初学可先空着或填小额测试 |
| 代表组 | 信用管理员或信用小组 | 初学可先空着 |
| 所有公司代码 | 是否允许所有公司代码使用 | 通常不勾,只分配给指定公司代码 |
更新 字段最重要,常见选择如下:
| 更新组 | 会把什么算进客户已用信用额度 | 适用场景 |
|---|---|---|
| 空 | 不更新 SD 未清订单、交货、开票金额 | 不做完整 SD 信用管理时 |
000012 | 销售订单、交货、开票、应收账款都算 | 最常用,最完整 |
000015 | 从交货开始算,销售订单不先占额度 | 不希望订单阶段占用额度 |
000018 | 特殊订单或无普通交货流程时使用 | 服务、订单相关开票等特殊场景 |
例如客户信用额度是 100万,使用 000012 时:
| 业务状态 | 是否占用信用额度 |
|---|---|
| 销售订单已创建,未发货 | 占用 |
| 已发货,未开票 | 占用 |
| 已开票,未转会计 | 占用 |
| 已转应收,客户未付款 | 占用 |
| 客户付款清账后 | 释放额度 |
配置顺序可以按下面走:
| 步骤 | 事务码 | 做什么 |
|---|---|---|
| 1 | OB45 | 定义信用控制范围,比如 8000 |
| 2 | OB38 或 OBY6 | 把公司代码分配给信用控制范围 |
| 3 | FD32 | 给客户维护信用额度和风险类别 |
| 4 | OVA8 | 配超过额度时是警告、报错还是冻结 |
| 5 | OVAK/OVAD | 指定销售订单、交货是否启用信用检查 |
本次测试场景建议:
| 字段 | 建议值 |
|---|---|
| 货币 | CNY |
| 更新 | 000012 |
| FY 变式 | K4 |
| 所有公司代码 | 不勾 |
| 风险类别 / 信贷限额 / 代表组 | 可以先空,后面在客户信用主数据里维护 |
配好后,把信用控制范围维护到公司代码全局参数中。

复制字段状态变式 OBC4
配置对象:字段状态变式 / 字段状态组
菜单路径:SPRO → SAP 参考 IMG → 财务会计(新)→ 财务会计全局设置(新)→ 分类账 → 字段 → 定义字段状态变式
事务代码:OBC4
用途:定义过账时哪些字段隐藏、可选、必填。例如录入会计凭证时,成本中心、订单、文本、业务范围等字段是否必须填写。
练习环境不要从零新建字段状态变式。字段状态变式下面有很多字段状态组,空建容易导致后面 FS00 或过账时报更多错。最稳做法是复制标准 0001,并选择“复制所有”。

选择复制所有。

复制完成后,回到 OBY6,把字段状态变式维护到公司代码 6601 的全局参数里。

新建过账期间变式 OBBO
配置对象:过账期间变式
菜单路径:SPRO → SAP 参考 IMG → 财务会计 → 财务会计全局设置 → 凭证 → 过账期间 → 定义未清过账期间变式
S/4HANA 常见路径:SPRO → 财务会计(新)→ 财务会计基本设置(新)→ 分类账 → 会计年度和过账期间 → 过账期间 → 定义未清过账期间变式
事务代码:OBBO
用途:创建“过账期间变式”的代码和名称,用来控制哪些会计期间允许过账。
操作步骤:
- 输入事务码
OBBO - 新建过账期间变式:
G001 - 名称填:
Garson练习记账期间变式 - 保存

保存后,把过账期间变式分配给公司代码。可以在公司代码全局参数里维护,也可以用 OBBP 分配。
给公司代码维护物料管理期间 OMSY
配置对象:物料管理公司代码
菜单路径:SPRO → SAP 参考 IMG → 后勤 - 常规 → 物料主数据 → 基本设置 → 维护物料管理的公司代码
事务代码:OMSY
用途:为公司代码初始化 MM 物料期间,维护当前会计年度、当前期间,以及是否允许上一期间过账。没有维护时,创建物料或做 MM 业务时也可能提示“公司代码不存在或没有完全维护”。
OMSY 用来初始化或查看 MM 公司代码期间。后续关闭期间通常用 MMPV,查看或控制上一期间过账常用 MMRV。
按本次练习时间 2026 年 7 月,可以先维护这一行:
| 字段 | 建议值 |
|---|---|
| 年份 | 2026 |
| Pe | 7 |
| Abp | 勾选 |
| DBp | 不勾 |
字段含义:
| 字段 | 意思 |
|---|---|
| 年份 / Pe | 当前 MM 期间 |
| MP / FYr | 上一个 MM 期间 |
| LM | 上一年度最后期间,通常是 12 |
| Abp | 允许过账到前一期间 |
| DBp | 不允许过账到上一年度,练习先不勾 |

配完仍报错时怎么查
如果上面都维护了,MM01 仍然报错,先排除会话缓存:
- 退出
MM01 - 在 SAP 命令框输入
/nex,重新登录 - 再进
MM01测试GBJ1 + GROH
如果还报错,不要继续盲改配置,直接查底层表。MM01 会读取下面几张关键表:
| 表 | 查询条件 | 必须看到 |
|---|---|---|
T001W | WERKS = GBJ1 | 工厂存在,BWKEY 有值 |
T001K | BWKEY = 上一步的 BWKEY | BUKRS = 6601 |
T001 | BUKRS = 6601 | 公司代码存在,KTOPL、PERIV、FSTVA 有值 |
MARV | BUKRS = 6601 | MM 期间存在,年份和期间有值 |
用 SE16N 查,重点不是看配置画面,而是确认配置有没有真的落表。
最常见的问题有两个:
| 可能问题 | 说明 |
|---|---|
T001W-BWKEY 不是 GBJ1 | 你以为工厂分给了 6601,但系统通过估价范围走到了别处 |
T001K 没有 BWKEY → 6601 | 工厂公司代码分配画面看着有,但估价范围表没完整 |
也可以直接用 SE37 测函数:
- 进入
SE37 - 输入函数:
ACCOUNTING_KEYS_READ_FOR_PLANT - 点击测试执行
- 参数填:
WERKS = GBJ1
| 异常 | 对应问题 |
|---|---|
T001W_NOT_FOUND | 工厂没定义好 |
T001K_NOT_FOUND | 估价范围或工厂公司代码分配有问题 |
T001_NOT_FOUND | 公司代码全局参数没真正落表 |
MARV_NOT_FOUND | OMSY 没真正落表 |
这一步能直接定位,不用继续猜。
