库存在各生产订单间分配

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.KfbQty<T10.NeedQty THEN T10.KfbQty
WHEN T10.KfbQty=0 AND T10.KfbQty<T10.NeedQty THEN ISNULL(T11.KfbQty,0)
ELSE 0.00 END [QtyFP],
T10.KfbQty
FROM #T2 T10 LEFT JOIN #T2 T11 ON T10.ChildCode =T11.ChildCode AND T11.Lineid =T10.Lineid-1
)T21 ON T20.Lineid= T21.Lineid AND T20.ChildCode =T21.ChildCode

SELECT 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

原文地址:http://blog.51cto.com/johnny/2092500

时间: 2024-07-29 15:15:48

库存在各生产订单间分配的相关文章

产品生产成本核算中,生产订单差异计算逻辑及生产订单成本公式

生产订单差异计算 订单差异有两类,即:控制差异和结算差异.结算差异指当订单完工时订单中实际成本减已转入库存的完工产品成本(入库的标准成本)的差异,此差异月末结算到库存,记入财务总帐.控制差异指当订单完工时订单中实际成本减目标成本的差异,此差异只是成本分析的工具,属于管理会计的范畴,同财务会计无关.控制差异按分析的种类主要划分为:价格差异.数量差异.资源利用差异等. 举例如下: 生产订单成本公式:

智邦国际ERP如何提高生产订单管理效率

  在生产制造业企业中,生产订单管理难是常见问题,它包含在生产管理流程中,如生产订单管理不当,会造成企业生产流程混乱.员工盲目生产,效率低.品质差.生产成本高等现象.要想解决生产订单管理问题不妨尝试一下用信息化手段来进行管理,下面以智邦国际ERP系统为例,详细了解一下如何在信息化时代加强公司生产订单流程管理,实现产品生产过程安全.高效.低耗.按期交货的. 第一步:生产订单添加 打开着智邦国际ERP系统-生产模块-生产订单-生产订单添加,填写订单主题后选择生产计划单,产品清单会自动关联,由此便可生

物料BOM和生产订单BOM的区别

物料BOM和生产订单BOM的区别[@[email protected]] 一般企业生产部在SAP创建生产订单的时候,就会产生一个生产订单BOM,这里的生产订单BOM是读取的物料BOM. 由于其它原因,需要修改成品的某几个零部件,在创建订单的时候,就可以修改订单BOM,物料BOM不会受任何的影响. 其实在生产订单的BOM读取完物料BOM之后就与物料BOM没有任何的关系了,下达订单之后,物料BOM订单BOM已经没有任何联系了,所以生产过程当中的物料消耗都与订单BOM有关系了.

PP生产订单的BADI增强 WORKORDER_UPDATE

METHOD if_ex_workorder_update~before_update. *---------------------->增强1 开始* "当生产订单类型为PP01时,如果该生产订单有参考相关的销售订单,* "那么在此生产订单存盘时,就需要判断该生产订单是否已经维护了相关的长文本数据,如果没有长文本数据,就需要查看* "所对应的销售订单行项目上是否有长文本数据,如果有则将销售订单行项目的长文本带到该生产订单长文本中.* "反之,如果此生产订单已

abap 获取生产订单标准工时和实际报工工时的报表

*&---------------------------------------------------------------------* *& REPORT  ZMM_PO_QUERY *& *& REPORTNAME   :生产订单查询系统 *&---------------------------------------------------------------------* *& CREATED BY   : LIUXINYUAN *&a

创建生产订单函数BAPI_PRODORD_CREATE

创建生产订单,创建订单长文本,订单下达 LOOP AT gt_zstybcp INTO gw_zstybcp WHERE sel = 'X' AND aufnr = ''."ADD BY 20150716 LY FOR 批量创建 CLEAR:gs_return,gw_return,gt_order_return[],gt_bapi_order_key[],gs_bapi_order_key. gs_bapi_pp_order_create-material = gw_zstybcp-matnr.

SAP中Product Orders(生产订单)相关函数BAPI

项目中,生产订单的状态是了解生产过程的主要依据,也是自开发报表中常用到的,下面是生产订单状态的几个函数以及生产订单技术关闭.生产订单报工的几个函数,希望对用到的兄弟有所帮助. [相关表] JEST-对象的系统状态(I****)和用户状态(E****) JSTO-状态对象信息 TJ02T-系统状态文本 -用户状态文本 [锁对象]:生产订单锁对象  ESORDER 函数:  ENQUEUE_ESORDER,  DEQUEUE_ESORDER [函数1]:检查多个对象的状态并过滤 CALL FUNCT

OVF3为订单原因分配成本中心时报错“成本中心未定义”,消息号:VT806

问题:OVF3为订单原因分配成本中心时报错"成本中心未定义",消息号:VT806.KS03检查成本中心数据是已经建立的. 原因:OVF3往右边拉动,还有一个需要填入的字段"有效起始日",此字段值必须在成本中心定义的有效期范围内,若超出范围,则会报上面的错误. 解决方案:看完原因分析就知道啦,哈 原文地址:https://www.cnblogs.com/bobbymei/p/9415135.html

为什么S/4HANA的生产订单创建后会自动release

在S/4HANA系统里我们观察到通过函数CO_61_ORDER_EDIT创建的生产订单会自动释放Release: 通过第86行的IF语句的条件检测不难找到原因. 变量PROFILE_TMP的类型为TCO43: 这个scheduling profile的配置在路径Production->Shop Floor Control->Master Data->Define Production Scheduling Profile里: 如下图所示:Automatic Actions标签页里的On