MMSC中库存地点无法删除的原因及解决方案
在SAP中,MMSC事务码不支持直接删除库存地点,这是系统设计的数据完整性保护机制。以下是详细原因和正确处理方式:
一、无法删除的核心原因
1. 数据完整性保护(主要限制)
根据ITPUB论坛专家讨论,SAP设计逻辑为:
"物料扩展到某个库存地点后,库存地点是没有办法删掉的,只能通过MM06标注删除。"
根本原因在于:
-
MMSC是创建/扩展工具,不是维护工具:MMSC(集中输入物料的仓储地点)专用于新增库存地点,不具备删除功能
-
防止历史数据丢失:若允许直接删除,会导致所有历史业务数据(采购订单、收货记录、库存移动)失去关联,造成数据不一致
2. 业务数据关联性检查
系统会自动检查该库存地点是否已发生业务:
-
有库存余额:完全无法删除
-
无库存但有业务凭证(如已过账的收货、发货):无法删除
-
无任何业务记录:理论上可删除,但SAP仍限制直接操作
二、正确的处理方式:标记删除
方法:使用MM06事务码
操作步骤:
-
事务码:
MM06(标记待删除物料) -
输入物料号,选择视图 "MRP1" 或 "存储1"
-
进入 "组织级别" ,选择要删除的工厂+库存地点
-
勾选 "删除标记" (Deletion Flag)
-
保存
关键特性:
-
可选择性删除:可选择仅删除特定库存地点,不影响其他库存地点
-
不影响现有业务:已存在的采购订单和库存仍可正常操作
-
仅作逻辑删除:数据仍保留在MARD表中,但LVORM字段标记为'X'
三、删除的两种场景与结果
场景1:库存地点已发生业务
结果:无法物理删除,只能MM06标记删除
系统行为:
-
创建PO时无警告提示(系统默认可用)
-
货物移动(如MIGO)时会有警告信息,但用户可忽略继续操作
严格控制方案: 如需禁止业务操作,需修改消息属性:
SPRO → 物料管理 → 库存管理和实际库存 → 定义系统消息的属性
消息号:M7 127(仓储地点已标记删除)
将W(警告)改为E(错误)[^147^]
场景2:库存地点从未发生任何业务
结果:理论上可删除,但SAP标准功能仍限制
变通方案:
-
使用
MM06标记删除 -
若该库存地点仅被当前物料使用,可联系Basis管理员:
-
将库存地点库存全部移出
-
后台删除该库存地点配置(
OX09)[极高风险,不推荐]
-
四、为什么MMSC不支持删除?
功能定位差异
| 事务码 | 功能定位 | 删除支持 | 用途 |
|---|---|---|---|
| MMSC | 集中快速扩展 | ❌ 不支持 | 批量新增库存地点 |
| MM02 | 物料主数据维护 | ❌ 不支持 | 修改物料属性 |
| MM06 | 标记删除专用 | ✅ 支持 | 逻辑删除库存地点 |
数据表底层机制
-
MARD表:存储物料+工厂+库存地点的当前库存数据
-
MARDH表:存储历史版本数据
-
SAP为保护数据完整性,禁止直接从MMSC层面删除MARD记录
五、特殊处理:批量删除
批量标记删除
对于批量物料的库存地点删除,可使用MM17(批量修改物料主数据):
-
选择对象:MARA-BSTME(或其他字段作为筛选)
-
筛选条件:物料范围、工厂、库存地点
-
执行批量标记删除
六、总结与建议
核心原则
-
接受无法直接删除的事实:这是SAP的标准设计,非系统缺陷
-
使用MM06标记删除:这是唯一合规方式
-
谨慎操作:标记删除前确认该库存地点无在途业务
最佳实践
-
新建库存地点:使用
MMSC快速扩展 -
废弃库存地点:使用
MM06标记删除 -
严格控制:修改消息M7 127为错误消息
-
定期清理:对长期标记删除且无业务的库存地点,联系Basis后台处理(需谨慎)
重要提醒:强行通过SE16/SE16N直接删除MARD表数据是绝对禁止的操作,会导致严重的数据不一致和系统崩溃风险。
通过上述方法,您可以合规地处理MMSC中库存地点的"删除"需求,同时确保系统数据的完整性和可追溯性。
1936

被折叠的 条评论
为什么被折叠?



