
🔥 挑战用WPS灵犀开发APS排程系统,全程古老师不写一行代码
上一篇,我们把产品资料库和代码规则字典搭起来了,150个存货、编码规则、查找引用公式,一次到位。
📌
今天这一篇,把销售订单这一块立起来。
为什么要先弄销售订单?APS排程的源在装配,装配对着客户交期。客户交期从哪来?就从销售订单来。没有销售订单,排程引擎不知道"排什么、排多少、什么时候要",一切无从谈起。
所以销售订单,就是整套APS的需求入口。
这一篇看着是"建张表",实际里面全是坑:单号前缀怎么定、主表和子表怎么拆、主表怎么自动生成、明细字段建哪些。我一个个说。

一、单号规则:前缀怎么定最省事

开建之前,先定一套单号规则。单号是每张单据的身份证,前缀起不好,后面所有表都乱。
我先让AI给了一版建议,它给的几乎全是英文缩写:SO销售订单、PO采购订单、MO生产订单……
我直接否了一半。在中文工厂里,能看懂才是第一位的。我的原则很简单:
- 中文优先
:能用的都用拼音首字。XS销售、CG采购、FH发货、DB调拨 - 撞车就让位
:入库有两张(采购入库、生产入库),都是"入库",拼音首字撞车,就保留英文的GR、MR;退货也撞车,就拆成销售TH、采购TL - 委外三单同根
:委外加工、委外发料、委外入库,这三张单是同一串业务,前缀统一用WW打头——WW、WWF、WWR,一个前缀就能把整条委外流串起来
最后定下来 22 条,录进一张「单号规则」表:
分类 | 前缀 | 单据 |
委外 | WW- | 委外加工订单 |
WWF- | 委外发料单 | |
WWR- | 委外入库单 | |
销售 | XS- | 销售订单 |
FH- | 销售出库(发货)单 | |
TH- | 销售退货单 | |
采购 | CG- | 采购订单 |
GR- | 采购入库单 | |
TL- | 采购退料/退货单 | |
生产 | XQ- | 需求计划单 |
SC- | 生产订单 | |
MR- | 生产入库单 | |
LL- | 生产领料单 | |
FG- | 返工单 | |
BF- | 报废/不良处理单 | |
品质 | IQC- | 来料检验单 |
IPQC- | 过程检验单 | |
OQC- | 出货检验单 | |
仓库 | DB- | 仓库调拨单 |
QT- | 其他出入库单 | |
PD- | 盘点单 | |
TZ- | 库存调整单 |
📌
单号格式统一成:前缀 + 日期 + 流水,比如 XS-260814-001。日期进单号,后面按交期排程、按日期检索都方便。
单号规则这东西,越想省事越要一次定对。后面每张表都引用这套前缀,改一个字都牵连全局。
二、主子表:为什么必须分开?
定完单号,开始建销售订单。
这里有个关键决策:销售订单是建一张表,还是拆主表+子表?
我直接定了——拆,必须拆。
为什么?电饭煲工厂的订单,几乎全是一单多行。客户下一单,下面挂着外壳、内胆、发热盘、配件……好几行物料。
- 主表:管订单头
,一个销售单一行。客户下单了哪些单、每个单合计数是多少,在这看。 - 子表:管每一行的物料
、数量、单价、交期、状态。一个订单挂多行,细节在这看。
📌
硬塞进一张表会怎样?客户名称、日期、交期在每个物料行重复一遍,改个客户要改好几行,统计金额还得先按单号去重。等于自己造了张不规范的表,还更乱。
主表看"单",子表看"行",两层信息根本不一样,不拆开没法用。
三、主表不用手建:用内置"统计表"一键生成

主表和子表拆开了,子表(销售订单明细)一条条录物料。那主表怎么办?难道每个订单手工汇总一遍数量、金额?
不用。多维表有个内置功能,类似 Excel 的数据透视表,叫「统计表」。
操作很简单:
创建 → +新建 → 统计表 → 选数据源「销售订单明细」
然后按「销售单号」分组,把客户数量、已排数量这些字段拖进去做求和汇总,一张按单统计的主表就自动生成了。
它好在哪?
- 实时联动
:子表明细一变,主表汇总自动跟着更新,不用重跑 - 分组随便切
:现在按销售单号分组,明天想按订单类型、按产品类型看,改一下分组就出来 - 汇总方式多
:求和、计数、平均值、去重,透视表那套都有
📌
所以这张主表,不是手录的,是从子表透视出来的。这就是为什么我前面说"主表看单、子表看行"——子表是数据源,主表是它的统计视图。
主表和子表,一张存细节,一张出汇总,用内置统计表把两者连起来,实时又省事。
四、销售订单明细:字段一次定对

主表出来了,最费心思的是子表的字段(销售订单明细)。
我一开始给的是"标准四字段 + 客户数量 + 下单日期 + 交货日期",看着够用了。但一展开,漏了一堆:
- 挂靠
:销售单号、行号。这是明细的身份证,必须挂。 - 交期要拆
:客户要求交期、计划交期、承诺交期,三个分开。客户要求的是锚点,计划交期是APS排出来的,混成一个,排程一变就把客户原始要求覆盖了。 - 排程决策
:优先级、已排数量、未排缺口、齐套状态。APS排谁、排多少、差多少,全看这几个。 - 状态
:行状态(待排程/已排程/部分发货/已完成/已取消)。
还有几个公式字段自动算:
=客户数量*单价 → 金额
=客户数量-已排数量 → 未排缺口明细字段搭完,顺手把所有数字字段统一设成整数(格式0)。数量、单价、金额,谁也不能带小数,看着清爽。
这里有个小坑:数字字段用API能直接改格式,但公式字段(金额、未排缺口)的数字格式API改不了,得在界面上手动点一下"整数"。不影响用,就是记住这个边界。

五、虚拟数据:订单类型也有讲究
表搭好了,灌数据。150行,分3次,每次50行,下单日期覆盖8月1日到14日。
这里我想考考系统的订单类型维度。新建一个「订单类型」单选项,三个值:常规订单、样板订单、试产订单。
数据分布也有讲究,不能乱填:
- 样板订单
:数量少,单数<5,每单只要1/3/5/10个 - 试产订单
:固定小批量,单数是10的倍数且<50,每单固定30/50/100个 - 常规订单
:正常批量,剩下都是
而且存货代码不能太少——150行得覆盖80个不同代码,圆煲、方煲、迷你、商用四种类型都要有,容量从1.2L到6L八档。不然主表透视出来,产品维度就那几种,看不出东西。
最后分布:样板3单、试产20单、常规42单,合计65个销售单、150行明细,80个不同代码。下单日期8/1到8/14,一天不落。
为什么这么分?因为后面排程时,样板单、试产单不能占常规产能,订单类型是排程的一个重要权重。数据不这么造,后面引擎没法测。
最后说一句
📌
这是APS系列的第二篇。今天把销售订单这一层立起来了:单号规则、主子表、用统计表一键生成主表、明细字段、订单类型、虚拟数据。
销售订单是整套APS的需求入口。入口的字段、单号、结构定了,后面的排程引擎才有据可依。
术语解释
主表 / 子表:一张订单拆成两层——主表记订单头(每个单一行、汇总数),子表记订单行(每行物料、数量)。一个主表对应多个子表行。
统计表:多维表内置的透视功能,类似Excel数据透视表。选一个数据源,按某个字段分组,把其他字段求和/计数,自动生成汇总表,且实时联动源数据。
单选项:多维表的一种字段类型,一列只能选一个预设值,适合做分类标签。
XLOOKUP:查找函数,给一个值,在一列里找到相同的,返回另一列对应的值。
未排缺口:客户数量减掉已排数量,还差多少没排,驱动欠料计算的核心数字。
APS:高级计划排程系统,管"什么时候在哪台机器上做什么产品"的智能排程工具。
古老师(古哥计划)|中小制造数字化专家|**金山 KVP(金山办公最有价值专家)**|金山多维表格应用场景专家|金山 WPS 社区优秀创作者
深耕中小制造业数字化落地,擅长用 WPS 多维表格 + AI 低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。
夜雨聆风