芯片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. openGL之着色器程序的使用

    #define GLEW_STATIC #include <GL\glew.h> #include <GLFW\glfw3.h> #include<iostream> ...

  2. I.MX6 U-boot lvds display hacking

    /*********************************************************************************** * I.MX6 U-boot ...

  3. POI2014题解

    POI2014题解 [BZOJ3521][Poi2014]Salad Bar 把p当作\(1\),把j当作\(-1\),然后做一遍前缀和. 一个合法区间\([l,r]\)要满足条件就需要满足所有前缀和 ...

  4. ASP.NET MVC3默认提供了11种ActionResult的实现

      在System.Web.Mvc命名空间 ActionResult ContentResult EmptyResult FileResult HttpStatusCodeResult HttpNot ...

  5. ringojs 使用rp 包管理web 应用依赖

    rp 是一个类似npm 的包管理工具,我们可以使用package.json 定义依赖 然后执行rp install 即可,类似ringo-admin 的功能 其中packages 类似node 的no ...

  6. C#在64位操作系统上连接Oracle的问题和解决方案

    C#使用System.Data.OracleClient连接Oracle数据库.之前在WinXP上正常运行的程序移植到Windows 2008 x64上之后就连不上数据库了.错误信息如下: 尝试加载O ...

  7. Hive之 hive与hadoop的联系

    Hive与Hadoop调用图 解析: 1.提交sql 交给驱动2.驱动编译:解析相关的字段表信息3.去metastore查询相关的信息 返回字段表信息4.编译返回信息 发给驱动5.驱动发送一个执行计划 ...

  8. Application共享数据

    1.Application与Session的区别 Application对象:实现程序级别的数据共享. Session对象:实现会话级别的数据共享. 当需要整个程序级别的共享信息时,可以使用Appli ...

  9. c# 爬虫(一) HELLO WORLD

    最近在摸索爬虫相关的东西,写点随笔,以便忘记. 目的与用途 现实的项目中,我们需要太多的第三方接口了.而往往这些第三方接口由于条件限制,一时拿不到. 譬如: 1. 淘宝网今天有什么特价商品. 2. 百 ...

  10. fatal error: mysql.h: No such file or directory

    在ubuntu系统下安装mysql之后,和数据库连接的时候,出现如下错误:fatal error: mysql.h: No such file or directory 是因为缺少链接库,执行如下命名 ...