芯片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. New Concept English Two 9 22

    The video can be found on the website. $课文20 独坐孤舟 190. Fishing is my favourite sport. 钓鱼是我特别喜爱的一项运动. ...

  2. LNMP架构下的nginx、mysql、php的源码安装

    一.LNMP的介绍 LNMP就是Linux+Nginx+Mysql+Php这种网站服务架构.Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统,常见版本有:centos.ubun ...

  3. adb命令安装apk

    1.将需要安装的apk放在platform-tools下 2.将手机和电脑连接,在cmd中输入 adb devices查看 3.使用adb命令安装apk,在cmd中输入:adb install apk ...

  4. DataReader使用

    一.DataReader含义 DataReader相比于DataSet,DataReader是一个抽象类,所以不能用DataReader DR = new DataReader(),来构造函数创建对象 ...

  5. L3-009 长城 (30 分)

    正如我们所知,中国古代长城的建造是为了抵御外敌入侵.在长城上,建造了许多烽火台.每个烽火台都监视着一个特定的地区范围.一旦某个地区有外敌入侵,值守在对应烽火台上的士兵就会将敌情通报给周围的烽火台,并迅 ...

  6. 复利计算5.0(改成Java版本)与 单元测试

    //由于C语言版本不方便单元测试,所以改成了java版本,部分代码如下:import java.util.Scanner; public class FuLi{ public static void ...

  7. FastAdmin 的 captcha 是如何来的?

    FastAdmin 的 captcha 是如何来的? 如何打开 FastAdmin 的验证吗? 文件位置 C:\www\fastadmin\application\config.php 改 login ...

  8. php在循环内外实例化类占用内存比较

    关于php类的实例化和内存的关系,可以这么说:只要有一个new 关键字就是创建一个对象,创建一个对象就是在内存中分配了一个空间. 代码1: 在循环外实例化类:class ABC{ public $nu ...

  9. xargs命令学习

    1.xargs复制文件 目录下文件结构为: . ├── demo1 │ ├── test.lua │ ├── test.php │ └── test.txt └── demo2 执行命令: find ...

  10. jsp中9个隐含对象

    在JSP中一共有9个隐含对象,这个9个对象我可以在JSP中直接使用.因为在service方法已经对这个九个隐含对象进行声明及赋值,所以可以在JSP中直接使用. - pageContext 类型:Pag ...