Oracle EBS R12 INVMTL_SYSTEM_ITEMS_B物料主表基础属性完整详解
前置说明
- 表全称:
INV.MTL_SYSTEM_ITEMS_B - 主键:
INVENTORY_ITEM_ID + ORGANIZATION_ID含义:一条记录 = 一个物料在一个库存组织下的定义;主组织创建物料,分发到业务库存组织时自动生成多行记录。 - 视图:
MTL_SYSTEM_ITEMS_VL= B 表 +MTL_SYSTEM_ITEMS_TL(多语言),报表标准视图。 - 基础属性定义:区分于库存管控、计划、采购、成本扩展属性;基础属性 = 物料唯一标识、组织归属、单位、启用状态、审计字段、键弹性域,是所有业务识别物料的底层标识。
一、主键与组织隔离属性(最底层基础标识)
1.INVENTORY_ITEM_ID(NUMBER,NOT NULL)
- 系统内部全局唯一物料 ID;序列来源:
MTL_SYSTEM_ITEMS_S.NEXTVAL - 全系统所有关联表(事务、BOM、PO、OM、预留)的核心外键;
- 业务说明:对外不展示,仅系统内部关联使用。
2.ORGANIZATION_ID(NUMBER,NOT NULL)
- 库存组织 ID,关联
ORG_ORGANIZATION_DEFINITIONS; - MOAC 多组织隔离根基;同一
INVENTORY_ITEM_ID在多个 ORG 可以拥有不同属性配置。
二、键弹性域(物料编码核心业务标识)
EBS 物料使用键弹性域 Item Key Flexfield(弹性域代码 MSTK),SEGMENT1~SEGMENT20。
1.SEGMENT1~SEGMENT20(VARCHAR2(40))
- SEGMENT1:绝大多数企业用作物料编码(Item Number),业务主键;
- 可配置多段编码结构:大类。中类。规格。版本;
- 唯一索引:
MTL_SYSTEM_ITEMS_B_U1(ORGANIZATION_ID,SEGMENT1),保证同组织物料编码不重复。
2.CONCATENATED_SEGMENTS(视图字段,物理表不存在)
视图拼接所有 SEGMENT,界面展示完整物料编码。
三、名称、描述基础信息(B 表 + TL 表分工)
1.DESCRIPTION(VARCHAR2(240))
- 英文默认描述,存储在 B 基表;
⚠️重要:多语言名称不在本表,存放于
MTL_SYSTEM_ITEMS_TL.DESCRIPTION;开发报表必须关联 TL 表获取中文名称。
2.LONG_DESCRIPTION
长文本物料说明、规格参数,同样多语言版本在 TL 表。
四、计量单位基础属性(库存核算基准)
1.PRIMARY_UOM_CODE(VARCHAR2(3),NOT NULL)
主计量单位代码,关联MTL_UNITS_OF_MEASURE
- 库存账面、成本核算、财务记账强制以主单位为准;
- 物料一旦产生库存事务,禁止修改主单位。 示例:EA(个)、KG、M、BOX。
2.SECONDARY_UOM_CODE(VARCHAR2(3))
辅助计量单位(双单位物料启用),例如:卷 (主)/KG (辅助)。
3.SECONDARY_DEFAULT_IND
辅助单位是否默认显示;双单位管控开关。
五、物料全局启用状态基础属性
1.ENABLED_FLAG(VARCHAR2(1),NOT NULL,Y/N)
物料是否启用
- N:物料失效、停用;不能新增采购、销售、库存事务;
- 业务规范:不物理删除物料,设置
ENABLED_FLAG=N + INACTIVE_DATE归档。
2.INACTIVE_DATE(DATE)
物料失效日期;到达该日期后系统自动视为失效物料。
3.INVENTORY_ITEM_STATUS_CODE(VARCHAR2(10))
物料状态代码,关联MTL_ITEM_STATUSES示例:ACTIVE 正常、QUARANTINE 待检、OBSOLETE 呆滞报废; 事务引擎读取状态表规则,拦截冻结物料出入库。
六、标准 WHO 审计字段(所有业务表统一基础属性)
全部为强制基础字段,用于变更追溯,EBS 标准规范:
CREATION_DATE:创建时间CREATED_BY:创建人 USER_ID(关联FND_USER)LAST_UPDATE_DATE:最后更新时间LAST_UPDATED_BY:最后更新人 USER_IDLAST_UPDATE_LOGIN:最后更新会话 Login ID
注意:不要把这部分当成扩展属性,属于 EBS 物理实体标准基础元数据。
七、模块启用开关(基础业务准入属性,区分 “基础属性 / 业务属性” 边界)
很多实施文档容易混淆:这一组属于基础准入属性,决定物料能否进入对应模块业务。
1.STOCK_ENABLED_FLAGY/N
可库存管理
- Y:物料可以入库、产生现有量;
- N:虚拟物料、费用物料,不进库存账,不能做库存事务。
2.MTL_TRANSACTIONS_ENABLED_FLAGY/N
允许库存事务;关闭后禁止任何 INV 出入库、调拨事务。
3.PURCHASING_ENABLED_FLAGY/N
可下采购订单;关闭后 PO 无法录入该物料。
4.CUSTOMER_ORDER_ENABLED_FLAGY/N
可创建销售订单(OM)。
5.INTERNAL_ORDER_ENABLED_FLAGY/N
可创建内部调拨订单。
6.BOM_ENABLED_FLAGY/N
可作为 BOM 父件 / 子件;关闭后无法维护 BOM。
7.COSTING_ENABLED_FLAGY/N
纳入成本核算;费用型物料一般 = N。
八、物料类型基础分类属性
1.BOM_ITEM_TYPE(NUMBER)
物料 BOM 类型(制造业核心基础分类)
plaintext
1 = Model(模型件) 2 = Option Class(选项类) 3 = Planning(计划件) 4 = Standard(标准物料,原材料/半成品/成品) 5 = Product Family(产品族)绝大多数实物物料 = 4 Standard。
2.ITEM_TYPE(VARCHAR2)
物料大类(自定义值集,实施项目自行定义:原材料、半成品、成品、辅料、备件) 用于报表、权限、分类筛选。
九、财务基础标识属性(资产 / 费用区分)
INVENTORY_ASSET_FLAGY/N
资产库存标识(极为关键基础属性)
- Y:资产物料,入库计入存货资产科目;
- N:费用物料,采购接收直接进费用,不产生存货; 直接决定库存事务会计分录走向。
十、弹性域基础扩展字段(组织级自定义基础扩展)
描述性弹性域 DFF
plaintext
ATTRIBUTE_CATEGORY ATTRIBUTE1 ~ ATTRIBUTE20组织级自定义字段:图号、材质、规格、环保标准、版本号等;
全局弹性域 GDF(集团统一基础属性)
plaintext
GLOBAL_ATTRIBUTE1 ~ GLOBAL_ATTRIBUTE20跨组织统一属性,主组织分发时属性同步复制。
十一、基础属性 vs 扩展属性边界划分(重点,用于区分物料主数据字段归类)
✅【本文范围:基础属性】
主键、组织 ID、键弹性域编码、名称描述、主单位、启用状态、WHO 审计字段、资产 / 费用标识、BOM 物料类型、模块启用总开关、弹性域扩展基础字段。
❌【不属于基础属性,属于业务管控扩展属性】
批次控制LOT_CONTROL_CODE、序列号控制SERIAL_NUMBER_CONTROL_CODE、负库存、提前期、安全库存、计划参数、会计科目、货位控制、单位换算、版本控制。
这部分属于库存管控、计划、财务属性,不在基础属性范畴。
十二、基础属性核心业务约束(实施 & 开发红线)
- SEGMENT1(物料编码)一旦产生库存,不建议修改;修改极易造成上下游报表、接口断层。
PRIMARY_UOM_CODE存在库存事务后不可修改;底层无自动换算修复机制。ENABLED_FLAG不允许物理删除物料,使用失效归档模式;- 所有基础属性修改,生产环境禁止直接 DML 更新
MTL_SYSTEM_ITEMS_B,必须调用INV_ITEM_PUBAPI; - 多语言描述不在 B 表,报表必须关联
MTL_SYSTEM_ITEMS_TL,不要直接读取 B 表 DESCRIPTION 作为中文名称。
十三、基础属性常用查询 SQL(仅查询基础属性)
sql
SELECT MSI.INVENTORY_ITEM_ID, MSI.ORGANIZATION_ID, MSI.SEGMENT1 ITEM_CODE, MSITL.DESCRIPTION ITEM_NAME_CN, MSI.DESCRIPTION ITEM_NAME_EN, MSI.PRIMARY_UOM_CODE, MSI.ENABLED_FLAG, MSI.INACTIVE_DATE, MSI.INVENTORY_ASSET_FLAG, MSI.BOM_ITEM_TYPE, MSI.STOCK_ENABLED_FLAG, MSI.CREATION_DATE, MSI.LAST_UPDATE_DATE FROM MTL_SYSTEM_ITEMS_B MSI LEFT JOIN MTL_SYSTEM_ITEMS_TL MSITL ON MSI.INVENTORY_ITEM_ID = MSITL.INVENTORY_ITEM_ID AND MSI.ORGANIZATION_ID = MSITL.ORGANIZATION_ID AND MSITL.LANGUAGE = 'ZHS' WHERE MSI.ORGANIZATION_ID = :P_ORG_ID;