|
|
发表于 2012/10/30 08:11:40
|
显示全部楼层
cw1632000 发表于 2012/10/29 16:37 
如果你要这样做,相当于模拟了MRP的运算了。很难,我做了一个简单的,将所 4和5状态的订单,全部提出来,汇 ...
cw1632000老师,谢谢分享你的方法!我利用的是SDAL中的界面依照前面的日期进行排序,通过递减来反应订单的欠料情况:
第一步:先生成SDAL表:
SELECT dbo_SFRM_DEMANDS.REQD_DATE, dbo_SFRM_DEMANDS.ITEM, IIf(IsNull([LN_NO]),[seqn],[LN_NO]) AS LN_NO1, dbo_SFRM_DEMANDS.P_NEED_DT, dbo_SFRM_DEMANDS.ORDER_NO1 AS [P & M_Order], dbo_SFRM_DEMANDS.ITEM_DESC, dbo_SFRM_DEMANDS.ORDER_NO3, dbo_SFRM_DEMANDS.ORDER_NO1, dbo_SFRM_DEMANDS.ORDER_NO2, IIf(IsNull([ORDER_NO2])=True,[ORDER_NO1],[ORDER_NO2]) AS CO_No, dbo_SFRM_DEMANDS.LN_STA, IIf([ORDER_QTY]=0 Or IsNull([ORDER_QTY])=True,[PARENT_QTY],[ORDER_QTY]) AS DM, dbo_SFRM_DEMANDS.P_SCHED_DT, dbo_SFRM_DEMANDS.P_START_DT, dbo_SFRM_DEMANDS.LN_TYPE, dbo_SFRM_DEMANDS.COMP_STA, dbo_ITEM_ITEMLIST.OHND_QTY, dbo_SFRM_DEMANDS.COM_TYP, dbo_SFRM_DEMANDS.FRM_FLAG, dbo_SFRM_DEMANDS.DMND_TYP, dbo_ITEM_ITEMLIST.MB, dbo_ITEM_ITEMLIST.BUYR, dbo_ITEM_ITEMLIST.ITEM_CLAS7 AS VenderID, dbo_FS_Item.SafetyStockQuantity AS SafetyStock, dbo_ITEM_ITEMLIST.ON_ORD_QTY, dbo_SFRM_DEMANDS.PARENT1, dbo_SFRM_DEMANDS.PAR_DESC1, dbo_ITEM_ITEMLIST.ITEM_CLAS7, dbo_SFRM_DEMANDS.ISSUED_QTY, dbo_SFRM_DEMANDS.PARENT_QTY, dbo_SFRM_DEMANDS.SEQN
FROM (dbo_SFRM_DEMANDS LEFT JOIN dbo_ITEM_ITEMLIST ON dbo_SFRM_DEMANDS.ITEM = dbo_ITEM_ITEMLIST.ITEM) LEFT JOIN dbo_FS_Item ON dbo_SFRM_DEMANDS.ITEM = dbo_FS_Item.ItemNumber
GROUP BY dbo_SFRM_DEMANDS.REQD_DATE, dbo_SFRM_DEMANDS.ITEM, IIf(IsNull([LN_NO]),[seqn],[LN_NO]), dbo_SFRM_DEMANDS.P_NEED_DT, dbo_SFRM_DEMANDS.ORDER_NO1, dbo_SFRM_DEMANDS.ITEM_DESC, dbo_SFRM_DEMANDS.ORDER_NO3, dbo_SFRM_DEMANDS.ORDER_NO1, dbo_SFRM_DEMANDS.ORDER_NO2, IIf(IsNull([ORDER_NO2])=True,[ORDER_NO1],[ORDER_NO2]), dbo_SFRM_DEMANDS.LN_STA, IIf([ORDER_QTY]=0 Or IsNull([ORDER_QTY])=True,[PARENT_QTY],[ORDER_QTY]), dbo_SFRM_DEMANDS.P_SCHED_DT, dbo_SFRM_DEMANDS.P_START_DT, dbo_SFRM_DEMANDS.LN_TYPE, dbo_SFRM_DEMANDS.COMP_STA, dbo_ITEM_ITEMLIST.OHND_QTY, dbo_SFRM_DEMANDS.COM_TYP, dbo_SFRM_DEMANDS.FRM_FLAG, dbo_SFRM_DEMANDS.DMND_TYP, dbo_ITEM_ITEMLIST.MB, dbo_ITEM_ITEMLIST.BUYR, dbo_ITEM_ITEMLIST.ITEM_CLAS7, dbo_FS_Item.SafetyStockQuantity, dbo_ITEM_ITEMLIST.ON_ORD_QTY, dbo_SFRM_DEMANDS.PARENT1, dbo_SFRM_DEMANDS.PAR_DESC1, dbo_ITEM_ITEMLIST.ITEM_CLAS7, dbo_SFRM_DEMANDS.ISSUED_QTY, dbo_SFRM_DEMANDS.PARENT_QTY, dbo_SFRM_DEMANDS.SEQN, dbo_SFRM_DEMANDS.ITEM, dbo_SFRM_DEMANDS.ORDER_QTY
HAVING (((IIf([ORDER_QTY]=0 Or IsNull([ORDER_QTY])=True,[PARENT_QTY],[ORDER_QTY]))>0) AND ((dbo_SFRM_DEMANDS.COMP_STA)="4") AND ((dbo_SFRM_DEMANDS.COM_TYP)<>"X") AND ((dbo_SFRM_DEMANDS.ISSUED_QTY)=0) AND ((dbo_SFRM_DEMANDS.ORDER_QTY)>0))
ORDER BY dbo_SFRM_DEMANDS.REQD_DATE, dbo_SFRM_DEMANDS.ITEM, IIf(IsNull([LN_NO]),[seqn],[LN_NO]), dbo_SFRM_DEMANDS.P_NEED_DT, dbo_SFRM_DEMANDS.ITEM;
第二步:生成CO订单表:CO LINE COMP_STA
第三步:依据日期进行递减生成需求排序(排队,就像排队买票一样)
SELECT tblSDAL.REQD_DATE, tblSDAL.ITEM, Format(CStr([tblCODetail]![LN_NO]),"000") AS LN, tblCODetail.CO_NUMBER, tblSDAL.DM, tblSDAL.OHND_QTY, tblSDAL.COM_TYP, [tblSDAL].[OHND_QTY]-(select sum(b.DM) from tblSDAL as b where b.ITEM=tblSDAL.ITEM and b.id<=tblSDAL.id) AS ATP, tblSDAL.ITEM_DESC, [ITEM] & ";" & [atp] AS SHORTAGE, tblSDAL.COMP_STA
FROM tblCODetail INNER JOIN tblSDAL ON (tblCODetail.CO_NUMBER = tblSDAL.CO_No) AND (tblCODetail.LN_NO = tblSDAL.LN_NO)
WHERE (((tblCODetail.CO_NUMBER) Not Like "P*") AND ((tblSDAL.COM_TYP)<>"y") AND (([tblSDAL].[OHND_QTY]-(select sum(b.DM) from tblSDAL as b where b.ITEM=tblSDAL.ITEM and b.id<=tblSDAL.id))<0))
ORDER BY tblSDAL.REQD_DATE, tblSDAL.ITEM, Format(CStr([tblCODetail]![LN_NO]),"000");
|
|