芯片172没有扣减损耗,
取数:SAP_STPO的AUSCH
 
IN_BOM_DETAILS:耗损比例COMPONENT_YIELD_UOM
 
存储过程FP_MO2SAP:supplydmdpegplan到out_mo_item里面扣减耗損邏輯
 
 
下午回写后比对
select O.PRODUCTIONORDID,O.ITEM,O.qtyper ,S.qtyallocated
from out_mo_item O join ABPPMGR.supplydmdpegplan S on O.PRODUCTIONORDID=S.DEMANDORDERID and O.ITEM=S.ITEM

--回写前 图1
select demandorderid,ITEM,qtyallocated from ABPPMGR.SUPPLYDMDPEGPLAN where demandorderid like '%5000118200/660_1%' and item like '%103007000714%';
--回写到SAP 图2
select * from out_mo_item where productionordid like '%5000118200/660_1%' and item like '%103007000714%';

一、.执行FP_MO2SAP存储过程到1617行,结果如图,芯片还是以销售订单号169规划,另外一款还是以ABPPMGR数据表一样204个

二、继续

执行如下存储过程,结果就马上变成172和169

--add by *** on 20161117  处理报SHORT的异常工单组件
SAP_MO2SAP_HandleShortMo(EXITCODE);

细分存储过程SAP_MO2SAP_HandleShortMo:

1.执行如下,芯片169马上变成208.08:

--找到报SHORT的订单的原始订单需求数量,并更新工单组件的数量,以便乘以最小分配比例
MERGE INTO OUT_MO_ITEM OMI
USING
(--SELECT AD.PROBLEMPRODORDERID MO_ID,
select * from(
SELECT distinct AD.PROBLEMPRODORDERID MO_ID, --alter by ** on 20170104去除重复值
ST.COMBINE_MO,
AD.PROBLEMITEM ITEM_ID,
--ALTER BY ** ON 20161122 新增考虑BOM的单位用量,然后直接取IN_BOM_DETAILS的损耗比例
AD.QTYORDERED*IBD.USAGE_QTY*(1+NVL(IBD.COMPONENT_YIELD_UOM,0)) AS QTYORDERED,
AD.ITEMSHORTNESS,
AD.QTYORDERED*IBD.USAGE_QTY*(1+NVL(IBD.COMPONENT_YIELD_UOM,0)) - AD.ITEMSHORTNESS PEG_QTY,
ROW_NUMBER ()
OVER (
PARTITION BY AD.PROBLEMPRODORDERID
ORDER BY AD.PROBLEMPRODORDERID)rn
FROM ABPPMGR.DEMANDPROBDETAILS AD JOIN STG.TEMP_MO_SPLIT ST ON AD.PROBLEMPRODORDERID = ST.MO_ID
JOIN ABPPMGR.MANUFACTURINGPLN AM ON AD.PROBLEMPRODORDERID = AM.PRODUCTIONORDERID
LEFT JOIN STG.IN_BOM_DETAILS IBD ON TRIM(SUBSTR(AM.BOMID,INSTR(AM.BOMID,'_')+1)) = TRIM(IBD.BOM_ID) AND AD.PROBLEMITEM = IBD.ITEM_ID
WHERE AD.PROBLEMTYPE = 'SHORT'
AND ST.COMBINE_MO IN (SELECT OMI.PRODUCTIONORDID FROM STG.OUT_MO_ITEM OMI)
--ADD BY ** ON 20170509 DELETE THE DOUBLE DATA TEMPORARILY
AND AD.PROBLEMITEM <>'')where rn=1) AD
ON (OMI.PRODUCTIONORDID = AD.COMBINE_MO AND OMI.ITEM = AD.ITEM_ID)
WHEN MATCHED THEN
UPDATE SET OMI.QTYPER = AD.QTYORDERED;

2.执行如下,芯片马上为208.08变回172,而其它组件却由204变成169进行回写SAP,后者是正确的,前者有误

 

select * from TEMP_MO_ITEM where    ROOTID like '%5000118200/660_1%'  --ORDER BY QTYALLOCATED DESC
and ITEM in ('','000000104004000069')
 

INSERT INTO TEMP_MO_ITEM (ROOTID,
PARENT_ID,
ITEM,
BOM_ID,
QTYALLOCATED,
LOCATION_ID,
SITE_ID)
SELECT TMP.MO_ID ROOTID,
TMP.ITEM PARENT_ID,
SD.ITEM,
MP.BOMID BOM_ID,
SUM (SD.QTYALLOCATED) QTYALLOCATED,
MIN (
DECODE (SD.LOCATIONID, '{unspecified}', NULL, SD.LOCATIONID))
LOCATION_ID,
TMP.LOC_ID
FROM TEMP_SDPP SD, TEMP_MO TMP, ABPPMGR.MANUFACTURINGPLN MP
WHERE TMP.MO_ID = SD.ROOTID
AND MP.PRODUCTIONORDERID = SD.DEMANDORDERID
GROUP BY TMP.MO_ID,
SD.ITEM,
TMP.ITEM,
MP.BOMID,
TMP.LOC_ID;
select * from TEMP_SDPP where --item in  ('000000103007000714','000000102002000742')and
DEMANDORDERID like '%5000118200/660_1%' order by qtyallocated desc

 

SELECT DEMANDORDERID,
DEMANDLINEID,
DEMANDTYPE,
SD.ITEM,
QTYALLOCATED,
LOCATIONID,
SUPPLYLINEID,
SUPPLYORDERID,
SUPPLYTYPE,
QTYUOM,
CASE
WHEN SUPPLYTYPE IN ('OH', 'PO', 'PROC')
THEN
0
ELSE
(SELECT COUNT (*)
FROM DUAL
WHERE EXISTS
(SELECT NULL
FROM IN_BOM_DETAILS DT
WHERE DT.ITEM_ID = SD.ITEM
AND DT.IS_PHANTOM = ''))
END
IS_PHANTOM
FROM ABPPMGR.SUPPLYDMDPEGPLAN SD
WHERE SD.DEMANDORDERID = '5000118200/660_1-MFG000'

 
 
 
 
 
 
 

FP扣损耗逻辑代码的更多相关文章

  1. JSBinding+Bridge.Net:框架代码与逻辑代码的关系

    在JSB+Bridge工程中你可以同时维护Cs版本和Js版本的游戏. 框架代码:简称framework,表示那些不进行热更的代码.注意,这包括你自己写的代码,也包括引用的Dll,比如UnityEngi ...

  2. 事务并发处理: DB+ORM+逻辑代码

    在学习了马士兵有关事务并发处理的视频后, 感觉对事务并发处理的概念,问题以及解决方式有了一定的了解,赶紧记录下来以备后用. 1. 事务:一系列操作要么都完成,要么一个都不完成 2. 事务并发:多个事务 ...

  3. JSBinding+Bridge:逻辑代码中操作二进制数据

    以这2个函数为例 class File { public static byte[] ReadAllBytes(string path); public static void WriteAllByt ...

  4. k.tt 研究下生成的逻辑代码:从壹开始前后端分离 [.netCore 填坑 ] 三十二║ 四种方法快速实现项目的半自动化搭建

    更新 1.更新小伙伴 @大龄Giser 提出好点子:试试VS的插件扩展:VSIX.ItemProject等,将T4模板给制作插件,这里先记下,有懂的小伙伴可以自己先试试,我会在以后更新. 2.感谢小伙 ...

  5. FluentData-新型轻量级ORM 利用T4模板 批量生成多文件 实体和业务逻辑 代码

    FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.Model 利用T4模板,[MultipleOutputHelper.ttinclude]批量生成多文件 ...

  6. 使用CodeBenchmark对逻辑代码进行并发测试

    一直对性能测试比较感兴趣,所以也写了不少的测试工具有WebApiBenchmark和TcpBenchmark等;但这些工具测试都是有针对性和配置的方式来进行功能有限所以很难适用更多的场景,所以单独开发 ...

  7. TDOA 之 基站逻辑代码实现

    在前一篇博文里描述了基站的逻辑部分,这里贴出来具体代码实现.https://www.cnblogs.com/tuzhuke/p/11689881.html 1 Sync 信息部分 case 'S': ...

  8. redis分布式锁扣减库存弊端: 吞吐量低, 解决方法:使用 分段锁 分布式分段锁并发扣减库存--代码实现

    package tech.codestory.zookeeper.aalvcai.ConcurrentHashMapLock; import lombok.AllArgsConstructor; im ...

  9. 使用Xilinx UART-LITE IP实现串口--逻辑代码实现

    `timescale 1ns / 1ps /////////////////////////////////////////////////////////////////////////////// ...

随机推荐

  1. 201621123006 《Java程序设计》第8周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: 由源代码可 ...

  2. SpringMvc中的Interceptor拦截器的学习

    拦截器是SpringMvc框架中常用的一个东东,它跟Filter相似,但是也有区别,以前也没用过,今天看到就顺便学习了一下. SpirngMvc中的Interceptor主要是通过HandlerInt ...

  3. Leetcode 1024. Video Stitching

    class Solution: def helper(self,l,r,clips)->int: maxL,maxR=0,0 iL,iR=-1,-1 for i,c in enumerate(c ...

  4. I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking

    #!/bin/sh # 参考文章: # . MFGTool Emmc mksdcard.sh MFGTool Emmc mksdcard.sh comment # http://jordonwu.gi ...

  5. HDU1502 Regular Words DP+大数

    要是c语言可以和java一样写大数就好了,或者我会写重载就好了,最后还是只能暴力一把. 开始写的记忆化搜索,然而n=10就超过LL了 #include<cstdio> #include&l ...

  6. 转 HTTP.SYS 详解

    http.sys 是一个位于Win2003和WinXP SP2中的操作系统核心组件, 能够让任何应用程序通过它提供的接口,以http协议进行信息通讯. 温馨提示:如果用户不慎删除了该驱动文件,不用担心 ...

  7. 获取bing带swim的网址列表

    需求背景: 应老婆要求,搜集带有swim关键字的网站.实现过程: 使用requests模块通过bing接口搜索swim关键,将返回内容按需求进行处理,得到网站列表. 注:代码比较拙,老司机就不要弄废时 ...

  8. 如何查看 ThinkPHP5.1 的升级说明

    如何查看 ThinkPHP5.1 的升级说明 ThinkPHP 官方对于升级历史都有说明,这个官方做的非常不错. 在官方的手册中就有. 比如从 ThinkPHP 5.1.26 升级到 ThinkPHP ...

  9. ivy antlib shemalocation

    <?xml version="1.0" encoding="UTF-8"?> <project name="yourproject& ...

  10. Makefile之自动变量篇

    自动变量假设您编写一个编译‘.c’文件生成‘.o’文件的规则:您怎样编写命令‘CC’,使它能够操作正确的文件名?您当然不能将文件名直接写进命令中,因为每次使用隐含规则操作的文件名都不一样. 您应该使用 ...