庫存在各生產訂單間分配

2021-09-05 04:00:57 字數 3009 閱讀 2486

if object_id('tempdb..#t1','u') is not null drop table #t1

if object_id('tempdb..#t1','u') is not null drop table #t2

if object_id('tempdb..#temp','u') is not null drop table #temp

declare @guid varchar(100)

set @guid = newid()

exec [u_p_stock2need_table] @guid

select * into #temp from u_t_stock2need where [guid] = @guid

select t0.docentry,

row_number()over(partition by t1.itemcode order by t0.duedate) lineid,

t0.status,t0.postdate,t0.duedate,t0.pickrmrk ,t0.itemcode fanther,t0.plannedqty ftplanqty,t0.cmpltqty,t0.u_qtyend,

t1.linenum,t1.itemcode childcode,t1.plannedqty chdplanqty,t1.issuedqty,t1.plannedqty-t1.issuedqty orderqty,

isnull(u0.可用庫存,0) validqty,

0 as qtyfp,

isnull(u0.可用庫存,0) as surplqty,

u0.[溢缺.庫存],

u0.[採購/生產在途] ,

case when u0.[溢缺.庫存]>0 then 0

when u0.[溢缺.庫存]<0 and (u0.[溢缺.庫存]+u0.[採購/生產在途])>0 then 0

when u0.[溢缺.庫存]<0 and (u0.[溢缺.庫存]+u0.[採購/生產在途])<0 then (u0.[溢缺.庫存]+u0.[採購/生產在途])

end 待生產量

into #t1

from owor t0

join wor1 t1 on t0.docentry =t1.docentry

join oitm r0 on t0.itemcode =r0.itemcode

join oitm r1 on t1.itemcode =r1.itemcode

left join #temp u0 on t1.itemcode =u0.物料編號

where r0.qrygroup49='y' and t0.status in ('r','p') and (t1.plannedqty-t1.issuedqty)>0

order by t0.itemcode,t0.duedate

--逐行累計數量(含本行)

select t0.docentry,

t0.lineid,

t0.childcode,

max(t0.orderqty) orderqty,

max(t0.surplqty) surplqty,

sum(t1.orderqty) needqty,

case when max(t0.surplqty)-sum(t1.orderqty)>=0 then max(t0.surplqty)-sum(t1.orderqty)

else 0 end kfbqty

into #t2

from #t1 t0

left join #t1 t1 on t0.childcode = t1.childcode and t0.[lineid] >= t1.lineid

group by t0.docentry,t0.lineid,t0.childcode

update #t1 set qtyfp = cast(t21.qtyfp as decimal(19,6)),surplqty=t21.kfbqty

from #t1 t20

left join (

--區間劃分確定是否足夠分配 累計量比總量大 隨便分; 總量在上行累計量和本行累計量之間 總量-上行累計量 分一點;總量小於上行累計量,沒的分。

select t10.docentry,

t10.lineid,

t10.childcode,

case when t10.kfbqty >0 then t10.orderqty

when t10.kfbqty >0 and t10.kfbqtyselect u0.docentry 生產訂單號

,u0.lineid 行號

,case when u0.status='r' then '已審核' else '已計畫' end 狀態

,u0.postdate 訂單日期

,u0.duedate 完工日期

,u0.pickrmrk 業務訂單號

,u0.fanther 產品編號

,u0.ftplanqty 訂單量

,u0.cmpltqty 完工量

,u0.u_qtyend 最終完工

,u0.linenum 子件行號

,u0.childcode 子件料號

,u0.chdplanqty 計畫發料

,u0.issuedqty 實際已發

,u0.orderqty 待發料量

,u0.validqty 可用庫存

,u0.qtyfp 分配量

,u0.surplqty 剩餘分配量

,u0.[溢缺.庫存] 總庫存

,u0.[採購/生產在途] 總在途

,u0.待生產量 待補工單量

,u1.itemname 子件名稱

from #t1 u0

left join oitm u1 on u0.childcode =u1.itemcode

order by u0.duedate

drop table #temp

drop table #t1

drop table #t2

生產訂單狀態

訂單 dlv 交貨已完成 teco 技術完成 的狀態一直困擾著大家 現就這兩個狀態的作用作一下說明。在 co中這兩個狀態用於結果分析,即確認工單的餘額是進入在製品還是進入差異,有這兩個狀態中的乙個時,工單餘額即會進入差異,否則進入在製品。在進行co 在製品計算 kkao 時,系統會取當前有效日期的 ...

生產訂單狀態相關

1 獲取生產訂單的物件標識 select single objnr into l objnr from aufk where aufnr 訂單號 2 獲取系統狀態 data begin of i status occurs 0.include type jstat.data endof i stat...

SAP生產訂單預留

閒來無事,研究一下生產訂單預留。首先是預留的建立 1.預留建立的時機 預留憑證是在生產訂單儲存的時候建立的,預留編號和生產訂單一一對應。但是在讀取bom的時候就已經建立了臨時檔案,並占用了編號!這個號碼是提前分配,所以預留可能會不連號!和預留的編號分配不同,生產訂單的編號是在儲存的時候才會分配,所以...