TIPTOP MPS(amsp500)运行流程
主要数据库表mpt_file:
档案代号:mpt_file
档案名称:MPS 供需明细档
create table mpt_file
(
mpt_v varchar2(2), /*模拟版本 */
mpt01 varchar2(20), /*料号 */
mpt02 varchar2(10), /*No Use */
mpt03 date, /*供需日期 */
/*供需日期(依时距) */
mpt04 date, /*供需日期 */
/*供需日期(实际) */
mpt05 varchar2(2), /*供需类别 */
/* 39 : 预测量 */
/* 40 : 安全库存量 */
/* 41 : 独立需求 */
/* 42 : 受订量 */
/* 43 : 计划备料量 (MPS 计划下阶料展出) */
/* 44 : 工单备料量 (实际工单下阶料展出) */
/* 45 : PLM 备料量 (PLM 工单下阶料展出) */
/* 46 : 受订量(相依需求) */
/* 51 : 库存量 */
/* 52 : 在验量 */
/* 53 : 替代料库存量 */
/* 61 : 请购量 */
/* 62 : 在采量 */
/* 63 : 在外量 */
/* 64 : 在制量 */
/* 65 : 计划产 */
mpt06 varchar2(16), /*来源单号 */
mpt061 number(5), /*来源项次 */
mpt06_fz varchar2(1), /*冻结交期否 */
/*(Frozen)冻结交期否(Y/N)(For PR/PO/WO) */
mpt07 varchar2(20), /*来源料号 */
/*来源料号 (上阶半/成品需求追索料号) */
mpt08 number(15,3) /*数量 */
);
档案代号:mps_file
档案名称:MPS 供需汇总档
create table mps_file
(
mps_v varchar2(2), /*模拟版本 */
mps00 number(10), /*序号 */
/*序号 (于 MPS 完毕, 自动赋与) */
mps01 varchar2(40), /*料号 */
mps02 varchar2(10), /*No Use */
mps03 date, /*供需日期 */
/*供需日期 (依时距推算) */
mps039 number(15,3), /*需求:预测量 */
/*需求:预测量 (’39’) */
mps041 number(15,3), /*需求:受订量 */
/*需求:受订量 (安全库存/独立需求/受订) */
/* (’40’ ’41’ ’42’ */
mps043 number(15,3), /*需求:计画备料量 */
/*需求:计划备料量(MPS 计划下阶料展出’43’ */
/* +PLM 工单下阶料展出’45’)*/
mps044 number(15,3), /*需求:工单备料量 */
/*需求:工单备料量(实际工单下阶料展出’44’)*/
mps046 number(15,3), /*需求:受订量 */
/*需求:受订量(相依需求) */
mps051 number(15,3), /*供给:库存量 */
mps052 number(15,3), /*供给:在验量 */
mps053 number(15,3), /*供给:库存量 */
/*供给:库存量 (替代料) */
mps061 number(15,3), /*供给:请购量 */
mps062 number(15,3), /*供给:在采量 */
/*供给:在采量 (采购单未发出) */
mps063 number(15,3), /*供给:在外量 */
/*供给:在外量 (采购单已发出) */
mps064 number(15,3), /*供给:在制量 */
/*供给:在制量 (确认工单预计完工) */
mps065 number(15,3), /*供给:计画产 */
/*供给:计划产 (MPS 计划预计生产) */
mps06_fz number(15,3), /*已冻结交期的供给量(PR/PO/WO) */
/* 已冻结交期者不可重排交期 */
/* 故可重排交期的供给量=61+62+63+64+65-fz*/
mps071 number(15,3), /*建议交期重排导至供给减少数量 */
mps072 number(15,3), /*建议交期重排导至供给增加数量 */
mps08 number(15,3), /*预计结存 */
mps09 number(15,3), /*建议采购(PLP)建议工单(PLM)数量 */
/*建议采购(PLP)/建议工单(PLM)数量 */
/*主生产排程量 */
mps10 varchar2(1), /*是否已转正式MPS计划 */
/*是否已转正式MPS计划(Y/N) */
mps11 date, /*行动日期 */
/* P: 请购日期 (需求日-采购前置日数) */
/* M: OPEN日期 (需求日-制造前置日数) */
mps12 number(12,3) /*No Use */
);
1.先将当前版本的现有资料删除,再插入正要执行的版本
2.将此版本的mps_file供需汇总档资料删除,等待插入数据
3.将此版本的mpt_file供需明细档资料删除,等待插入数据
4.将此版本的mpl_fileMPS执行LOG档资料删除,等待插入数据
5.将此版本的mpk_file时距日档资料删除,等待插入数据
6.将此版本的mpm_file时距日与实际对照档资料删除,等待插入数据
7.按输入条件产生时距档并记录LOG(mpk_file),
事实上很多步骤都会有记录LOG的步骤,以下忽略
8.找出条件所需要的料号,放在part_tmp表里面等待使用
9.如果需求纳入方式为预测,则取最近的预测资料(axmi171),取总预测需求
如果需求纳入方式为订单,则跳过这步 –插入mpt_file供需明细档
[mpt05=’39’ mpt06=预测单号,mpt061项次,mpt07料号,mpt08预测数量]
–按料号汇总数据后插入mps_file mps039
10.取安全库存量(ima27),需求纳入为预测时有效
–插入mpt_file供需明细档
–按料号汇总数据后插入mps_file mps40
11.取独立需求量数据 (amri506)–插入mpt_file供需明细档
–按料号汇总数据后插入mps_file
12.取订单量数据 (订单axmt410未审核的单?)–插入mpt_file供需明细档
–按料号汇总数据后插入mps_file
13.取总计划资料(mps计划下阶料amri500),则欲保留MPS计划
–插入mpt_file供需明细档
–汇总数据后插入mps_file
–按料号汇总数据后插入mps_file
14.取工单资料(实际工单单身料)有两种情况
[1]如果工单已经备料:取备料档的数据。汇总数据计算方法:取工单(时距内
不为试产工单,未结案,已经备料,有效,应发量>已发量+委外代买量)
工单备料量=应发-已发-代买+下阶料报废-超领
[2]如果工单未备料则直接取BOM资料
–插入mpt_file供需明细档
–按料号汇总数据后插入mps_file
15.取库存量img10
–插入mpt_file供需明细档
–按料号汇总数据后插入mps_file
16.取在验量(rva_file,rvb_file,收货单未验收数量)
–插入mpt_file供需明细档
–按料号汇总数据后插入mps_file
17.请购量(apmt420)[非委外,有效,未结案,pml38=’Y’,订购量-已转采购数量]
–插入mpt_file供需明细档
–按料号汇总数据后插入mps_file
18.在制量,这个是取工单生产成品料(即工单生产数量-完工数量那一部份)
–插入mpt_file供需明细档
–按料号汇总数据后插入mps_file
19.提出计划(考虑替代料):[1]找出需要替代料的元件,减去已经被工单替代了的数 量,然后统计MPS对应料号的总供应减去总需求,不足的就用替代料。
再合计原料需求+替代需求更新mps_file mps053,插入pmt_file mpt05=’53’
—在这里应该看出,amsq500,amsq510的数据大致都出来了
至于mps_file的
mps06_fz 检查是否有冻结, /*已冻结交期的供给量(PR/PO/WO) */
/* 已冻结交期者不可重排交期 */
/* 故可重排交期的供给量=61+62+63+64+65-fz*/
mps071 number(15,3), /*建议交期重排导至供给减少数量 */
mps072 number(15,3), /*建议交期重排导至供给增加数量 */
mps08 number(15,3), /*预计结存 */
mps09 number(15,3), /*建议采购(PLP)建议工单(PLM)数量 */
/*建议采购(PLP)/建议工单(PLM)数量 */
/*主生产排程量 */
09要考虑采购/制造倍量,最小采购/制造量
mps10 varchar2(1), /*是否已转正式MPS计划 */
/*是否已转正式MPS计划(Y/N) */
mps11 date, /*行动日期 */
/* P: 请购日期 (需求日-采购前置日数) */
/* M: OPEN日期 (需求日-制造前置日数) */
mps12 number(12,3) /*No Use */
其它主要代码如下:
LET bal=bal+sss[i].mps051+sss[i].mps052+sss[i].mps053
+sss[i].mps061+sss[i].mps062+sss[i].mps063
+sss[i].mps064+sss[i].mps065
-sss[i].mps043-sss[i].mps044
-sss[i].mps071+sss[i].mps072
#需求納入(1.訂單 2.預測 3.取最大)
CASE WHEN incl_so = ‘1’ LET bal = bal – sss[i].mps041
WHEN incl_so = ‘2’ LET bal = bal – sss[i].mps039
IF bal < 0 THEN FOR j = i+1 TO 100# 請/採購交期, 工單完工日調整
IF sss[j].mps03 > sss[i].mps03+l_ima72 THEN EXIT FOR END IF
LET qty2=sss[j].mps061+sss[j].mps062+sss[j].mps063+sss[j].mps064
-sss[j].mps06_fz
-sss[j].mps071+sss[j].mps072
IF qty2 <= 0 THEN CONTINUE FOR END IF
IF qty2 >= bal*-1
THEN LET sss[j].mps071=sss[j].mps071+bal*-1
LET sss[i].mps072=sss[i].mps072+bal*-1
LET bal=0
EXIT FOR
ELSE LET sss[j].mps071=sss[j].mps071+qty2
LET sss[i].mps072=sss[i].mps072+qty2
LET bal=bal+qty2
END IF
END FOR
END IF
LET sss[i].mps08=bal
IF sss[i].mps08 < 0 THEN 小于零即不够,建立采购数量
LET sss[i].mps09=sss[i].mps08*-1