芯片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. jQuery的无new创建方法

    一般我们去写一个框架,会采用什么样的设计呢?比如设计一个jQuery框架,一般我们会创建一个函数对象 function jQuery(params){ //构造函数 }jQuery.prototype ...

  2. 谈一谈手机WebApp的fixed属性(手机上的固定栏)【转】

    1.iphone/android原生app常见结构 似乎,所有的手机应用,都遵循这样的布局:固定的顶部+固定的底部+可滚动在中间区域.这种“雷同”的模式让人恶心,却不得不承认这是一种很规矩却又很实用的 ...

  3. [爬虫] 学Scrapy,顺便把它的官方教程给爬下来

    想学爬虫主要是因为算法和数据是密切相关的,有数据之后可以玩更多有意思的事情,数据量大可以挖掘挖掘到更多的信息. 之前只会通过python中的request库来下载网页内容,再用BeautifulSou ...

  4. HDU1502 Regular Words DP+大数

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

  5. 《DSP using MATLAB》Problem 2.5

    2.代码: %% ------------------------------------------------------------------------ %% Output Info abo ...

  6. 《DSP using MATLAB》Problem 2.4

    生成并用stem函数画出这几个序列. 1.代码: %% ------------------------------------------------------------------------ ...

  7. socket编程---TCP

    服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接.在这时如果有个客户端初始化一个Socket,然后连接服务器(connec ...

  8. PHP代码实现 1

    $PHP-SRC/run-test.php 因为如果在同一个进程中执行, 测试就会停止,后面的测试也将无法执行,php中有很多将脚本隔离的方法比如: system(),exec()等函数,这样可以使用 ...

  9. 2019第十届蓝桥杯C/C++

    这是我第一次参加蓝桥杯比赛,比完后,有点低于预期,自己的发挥低于预期,赛事水准也低于预期. 教室里面很多同学的电脑出现问题,举办学校也没有完善的应急方案,有一部分同学11点钟才可以做题. 附题目pdf ...

  10. Spring MVC @ResponseBody和@RequestBody使用

    @ResponseBody用法: 作用:该注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConvert ...