2. 采购数据基础:采购订单数据结构、供应商主数据、物料主数据
采购支出看板与越权采购异常检测的根基在于底层数据的质量与结构。若数据基础不牢,任何高级分析都将成为空中楼阁。本章将深入剖析构成采购数据核心的三大支柱:采购订单(PO)、供应商主数据与物料主数据,并阐明它们之间的关联关系。
2.1 采购订单(PO)数据结构
采购订单是企业向供应商发出的具有法律效力的采购要约。在数据层面,PO 是一个多层级、多表关联的复杂结构,通常分为抬头与行项目两个核心层级。
关键概念: 抬头层记录全局信息(供应商、采购组织、总金额),行项目层记录具体物料、数量、单价与交货计划。越权采购检测通常聚焦于行项目层的“物料-价格-数量”异常组合。
2.1.1 PO 抬头(Header)关键字段
| 字段名称 | 数据类型 | 说明 | 越权检测价值 |
|---|---|---|---|
| 采购订单编号 | VARCHAR(20) | 全局唯一标识 | 关联审计日志的入口 |
| 采购组织 | VARCHAR(10) | 负责采购的法人实体 | 跨组织下单是典型越权行为 |
| 供应商编号 | VARCHAR(15) | 关联供应商主数据 | 识别黑名单或高风险供应商 |
| 采购组 | VARCHAR(10) | 负责采购员所属组 | 检测跨组代下单 |
| 采购员 | VARCHAR(20) | 实际创建人 | 与用户权限表交叉验证 |
| 凭证日期 | DATE | 订单创建日期 | 检测非工作时间/节假日下单 |
| 货币码 | VARCHAR(5) | 如 CNY、USD | 汇率操纵检测 |
| 总净额 | DECIMAL(18,2) | 所有行项目净额之和 | 超预算阈值预警 |
2.1.2 PO 行项目(Item)关键字段
| 字段名称 | 数据类型 | 说明 | 越权检测价值 |
|---|---|---|---|
| 行项目号 | INT | 行唯一标识(如 00010) | 检测行项目被篡改 |
| 物料编号 | VARCHAR(20) | 关联物料主数据 | 检测非授权物料采购 |
| 采购数量 | DECIMAL(15,3) | 订单数量 | 超量采购预警 |
| 订单单位 | VARCHAR(5) | 如 PC、KG | 单位操纵检测 |
| 净价 | DECIMAL(15,4) | 不含税单价 | 价格偏离度分析 |
| 交货日期 | DATE | 承诺交货日期 | 紧急采购异常检测 |
| 工厂/库存地点 | VARCHAR(10) | 收货工厂 | 跨工厂收货越权 |
| 科目分配类别 | VARCHAR(5) | 如 K(成本中心) | 费用归属异常 |
数据建模提示: 在构建看板数据模型时,建议将 PO 抬头与行项目分别建模,通过 PO 编号建立 1:N 关系。行项目表应包含抬头的关键维度(如采购组织、采购员),以避免频繁跨表关联查询。
2.2 供应商主数据
供应商主数据是采购业务的“交易对手”档案。其质量直接影响采购风险识别能力。一个完整的供应商主数据通常包含通用数据、公司代码数据与采购组织数据三个视图。
2.2.1 供应商主数据核心字段
| 分类 | 字段名称 | 说明 | 越权检测价值 |
|---|---|---|---|
| 通用数据 | 供应商编号 | 全局唯一标识 | 主键 |
| 名称/地址 | 法定名称与注册地址 | 识别关联方交易 | |
| 税号 | 统一社会信用代码 | 校验供应商合法性 | |
| 公司代码数据 | 统驭科目 | 应付账款科目 | 检测科目操纵 |
| 付款条件 | 如 30 天净额 | 异常付款周期预警 | |
| 自动付款标志 | 是否允许自动付款 | 检测绕过审批的付款 | |
| 采购组织数据 | 采购订单货币 | 默认交易货币 | 检测货币不一致 |
| 最小订单值 | 低于此值不下单 | 检测拆分订单规避审批 | |
| 合作伙伴功能 | 如 BP(收票方) | 检测三方交易异常 |
常见数据陷阱: 许多企业仅维护供应商的通用数据,而忽略了公司代码与采购组织视图的差异化维护。这会导致跨公司下单时,付款条件与统驭科目继承错误,进而产生越权付款风险。
2.3 物料主数据
物料主数据定义了企业采购、生产、库存管理的“对象”。在采购场景中,重点关注采购视图与会计视图。
2.3.1 物料主数据采购相关字段
| 视图 | 字段名称 | 说明 | 越权检测价值 |
|---|---|---|---|
| 采购视图 | 物料组 | 物料分类(如 MRO、原材料) | 检测跨组采购 |
| 采购组 | 负责采购的默认组 | 检测采购组与物料不匹配 | |
| 订单单位 | 采购时的计量单位 | 检测单位转换异常 | |
| 源清单 | 允许采购的供应商列表 | 检测非源清单供应商下单 | |
| 会计视图 | 标准价格 | 物料的标准成本 | 价格偏离度基准 |
| 评估类 | 物料在财务上的分类 | 检测费用化与资本化混淆 | |
| 价格控制 | S(标准价)/V(移动平均价) | 检测价格控制方式被篡改 |
2.4 三大数据结构的关联关系
采购订单、供应商主数据与物料主数据并非孤立存在,而是通过外键形成紧密的星型或雪花型数据模型。理解其关联是构建异常检测规则的前提。
2.5 数据质量对越权检测的影响
低质量的主数据会直接导致异常检测规则失效。以下是常见的数据质量问题及其对越权检测的影响:
- 供应商主数据重复: 同一供应商存在多个编号,导致黑名单供应商通过不同编号继续交易,越权检测无法关联。
- 物料组维护错误: 将 IT 设备误归入办公用品组,导致针对高价值物料的审批规则被绕过。
- 源清单缺失: 物料未维护源清单,系统无法校验供应商是否被授权供应此物料,越权采购无法被系统拦截。
- 采购组与物料不匹配: 物料主数据中采购组字段为空,系统默认允许任何采购组下单,失去组织级控制。
最佳实践: 在构建采购支出看板之前,建议先执行一次主数据健康度审计。重点关注供应商重复率、物料组完整率、源清单覆盖率三个指标。通常要求源清单覆盖率 > 95% 才能有效支撑越权采购检测。
2.6 数据模型设计建议
基于上述分析,推荐采用星型模型设计采购数据仓库。以采购订单行项目表作为事实表,供应商、物料、采购组织、工厂等作为维度表。以下是一个简化的 DDL 示例:
-- 事实表:采购订单行项目
CREATE TABLE fact_po_item (
po_number VARCHAR(20) NOT NULL,
item_number INT NOT NULL,
supplier_key INT NOT NULL, -- 关联 dim_supplier
material_key INT NOT NULL, -- 关联 dim_material
plant_key INT NOT NULL, -- 关联 dim_plant
purchaser VARCHAR(20),
quantity DECIMAL(15,3),
net_price DECIMAL(15,4),
delivery_date DATE,
created_at TIMESTAMP,
PRIMARY KEY (po_number, item_number)
);
-- 维度表:供应商
CREATE TABLE dim_supplier (
supplier_key INT PRIMARY KEY,
supplier_id VARCHAR(15) UNIQUE,
supplier_name VARCHAR(100),
tax_id VARCHAR(20),
payment_terms VARCHAR(10),
is_blacklisted BOOLEAN DEFAULT FALSE
);
-- 维度表:物料
CREATE TABLE dim_material (
material_key INT PRIMARY KEY,
material_id VARCHAR(20) UNIQUE,
material_group VARCHAR(10),
standard_price DECIMAL(15,4),
source_list_flag BOOLEAN DEFAULT FALSE
);
性能优化建议: 对于超大规模数据(如年交易量超过 1000 万行),建议在事实表上按采购组织或日期进行分区,并在 supplier_key、material_key 上建立位图索引,以加速越权检测的关联查询。