PR回写 所有物料规划PR时对净需求+最小采购批量+安全库存+舍入值的先后考虑逻辑
所有物料规划PR时对净需求+最小采购批量+安全库存+舍入值的先后考虑逻辑20171207-1228.docx
PR回写案例一:
SELECT SAFE_QTY,A.* FROM SAP_MARC A where MATNR='' and WERKS=''; --SAFE_QTY:安全库存
SELECT MIN_LOT_SIZE,LOTSIZE_INCREMENT,A.* FROM IN_SUPPLIER_ITEM A where item_id='' ; -- MIN_LOT_SIZE最小采购批量 LOTSIZE_INCREMENT舍入值
SELECT PR_CONSOLIDATE_DAYS,A.* FROM IN_ITEM_SITE A where item_id='' and SITE_ID=''; --合并下PR的时间区间 WB7 TB1 EX0 W2_14 T3_3
SELECT * FROM OUT_PR_jiankong WHERE ITEM='000000104004000454' ; --PR 净需求
SELECT * FROM OUT_PR WHERE ITEM='' ; ---加上PR回写逻辑后
SELECT * FROM TP_TEMP_PR WHERE ITEM='' ; ---最终回写去SAP的数据 select out_pr.PO_RELEASE_DATE,out_pr.supplier_id,out_pr.site_id,sap_eord.ekorg,out_pr.proc_group_id,out_pr.item,out_pr.qty,out_pr.qtyuom,substr(loc_id,-4) as LGORT
,'SAPRFC' as ERNAM,out_pr.due_datetime,out_pr.so_id,out_pr.so_lineid,out_pr.sobsl
from V_OUT_PR out_pr --其实是select * from tp_temp_pr
join sap_eord on out_pr.item = sap_eord.matnr and out_pr.supplier_id = sap_eord.lifnr and out_pr.site_id = sap_eord.werks
where out_pr.item in ('');


按照如下进行优化,优化后效果如下:








查询代码
1、首先写入OUT_PR中净需求数据
----包材物料组展望期设置14天 FP_PR2SAP 246行代码
SELECT MAX (PR.ORDERID),
PR.ITEM,
SUBSTR (PR.RECOMMENDEDSUPID, 6),
TRUNC (PR.PORELEASEDATE),
SUM (PR.QTYPLANNED),
IT.PROC_GROUP_ID,
IT.PROC_GROUP_DESCR,
IT.SITE_ID,
SI.LOCATION_ID,
SI.QTY_UOM,
PR.PLANNEDDELDATE
FROM ABPPMGR.PROCUREMENTPLAN PR,
IN_ITEM_SITE IT,
IN_SUPPLIER_ITEM SI
WHERE PR.ITEM = IT.ITEM_ID
AND IT.SITE_ID = SUBSTR (PR.RECOMMENDEDSUPID, 1, 4)
AND SI.ITEM_ID = IT.ITEM_ID
AND SI.SUPPLIER_ID = PR.RECOMMENDEDSUPID
AND SI.UDF_ITEM_TYPE_ID = ''
AND (TRUNC (PR.PORELEASEDATE) <= sysdate + DECODE (6, 7, -1, 0)+14)
AND PR.ORDERID LIKE '%PROC%'
AND ( EXISTS
(SELECT NULL
FROM IN_ITEM II
WHERE IT.ITEM_ID = II.ITEM_ID
AND II.FAMILY_ID IN
('',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
''
))
OR SUBSTR (PR.ITEM, 1, 9) IN ('', ''))
AND ( IT.UDF_IS_JIT = ''
OR EXISTS
(SELECT NULL
FROM TEMP_SDPP SDP
WHERE PR.ITEM = SDP.ITEM
AND ( SDP.supplytype = 'PROC'
OR SDP.supplytype IS NULL)))
--ADD BY HUANGYANGXIONG ON 20160516 增加供应商最小采购批量的限制
AND SUBSTR(PR.RECOMMENDEDSUPID,INSTR(PR.RECOMMENDEDSUPID,'_')+5) NOT IN
( SELECT DISTINCT SUPPLIER_ID FROM SAP_SUPPLIER_MINQTY )
AND PR.ITEM IN ('','','')
GROUP BY PR.ITEM,
SUBSTR (PR.RECOMMENDEDSUPID, 6),
TRUNC (PR.PORELEASEDATE),
IT.PROC_GROUP_ID,
IT.PROC_GROUP_DESCR,
IT.SITE_ID,
SI.LOCATION_ID,
SI.QTY_UOM,
PR.PLANNEDDELDATE;
2、根据最新逻辑更新OUT_PR中的数量
SELECT MIN (
PR.DUE_DATETIME)
OVER (
PARTITION BY PR.ITEM,
PR.SUPPLIER_ID,
PR.SITE_ID,
TRUNC (
(PR.DUE_DATETIME - SYSDATE)
/ DECODE (IT.PR_CONSOLIDATE_DAYS,
0, 1,
IT.PR_CONSOLIDATE_DAYS)))
DUE_DATETIME,
SUM (
PR.QTY)
OVER (
PARTITION BY PR.ITEM,
PR.SUPPLIER_ID,
PR.SITE_ID,
TRUNC (
(PR.DUE_DATETIME - SYSDATE)
/ DECODE (IT.PR_CONSOLIDATE_DAYS,
0, 1,
IT.PR_CONSOLIDATE_DAYS)))
* FP_GET_CONVRATE (tm.item_id,
TM.UDF_MEINS,
--SI.QTY_UOM)
TM.UDF_MEINS)
QTY,
PR.PR_ID,
MIN (
PR.PR_ID)
OVER (
PARTITION BY PR.ITEM,
PR.SUPPLIER_ID,
PR.SITE_ID,
TRUNC (
(PR.DUE_DATETIME - SYSDATE)
/ DECODE (IT.PR_CONSOLIDATE_DAYS,
0, 1,
IT.PR_CONSOLIDATE_DAYS)))
COMBINE_PR,
SI.MIN_LOT_SIZE,
SI.MAX_LOT_SIZE,
DECODE (SI.LOTSIZE_INCREMENT,
0, 1,
SI.LOTSIZE_INCREMENT)
LOTSIZE_INCREMENT,
SI.QTY_UOM QTY_UOM,
PR.ROWID RID,
ROWNUM RN
,MARC.SAFE_QTY ----add by landor on 20180511 PR回写逻辑需要安全库存
FROM OUT_PR PR,
IN_ITEM_SITE IT,
IN_SUPPLIER_ITEM SI,
in_item tm
,SAP_MARC MARC --add by landor on 20180511 PR回写逻辑需要安全库存
WHERE PR.ITEM = tm.ITEM_ID
AND PR.ITEM = IT.ITEM_ID
AND PR.SITE_ID = IT.SITE_ID
AND SI.ITEM_ID = PR.ITEM
AND PR.ITEM = MARC.MATNR AND PR.SITE_ID=MARC.WERKS --add by landor on 20180511 PR回写逻辑需要安全库存
AND SUBSTR (PR.ITEM, 1, 9) NOT IN('','')--ADD BY ZHANGGUIPENG ON 20170408 外购成品不参与数量合并101,401
AND SI.SUPPLIER_ID =
PR.SITE_ID || '_' || PR.SUPPLIER_ID
AND PR.ITEM IN ('','','')
PR回写案例二:
000000701119700498 周批量,最小批量30,舍入值10,安全库存15;
SELECT SAFE_QTY,A.* FROM SAP_MARC A where MATNR='' and WERKS=''; --SAFE_QTY:安全库存
SELECT MIN_LOT_SIZE,LOTSIZE_INCREMENT,A.* FROM IN_SUPPLIER_ITEM A where item_id='' ; -- MIN_LOT_SIZE最小采购批量 LOTSIZE_INCREMENT舍入值
SELECT PR_CONSOLIDATE_DAYS,A.* FROM IN_ITEM_SITE A where item_id='' and SITE_ID=''; --合并下PR的时间区间 WB7 TB1 EX0 W2_14 T3_3
SELECT * FROM TP_TEMP_PR WHERE ITEM='' ; select out_pr.PO_RELEASE_DATE,out_pr.supplier_id,out_pr.site_id,sap_eord.ekorg,out_pr.proc_group_id,out_pr.item,out_pr.qty,out_pr.qtyuom,substr(loc_id,-4) as LGORT
,'SAPRFC' as ERNAM,out_pr.due_datetime,out_pr.so_id,out_pr.so_lineid,out_pr.sobsl
from V_OUT_PR out_pr --其实是select * from tp_temp_pr
join sap_eord on out_pr.item = sap_eord.matnr and out_pr.supplier_id = sap_eord.lifnr and out_pr.site_id = sap_eord.werks
where out_pr.item in ('')


上面两图错误将涂绿色部分PO Release Time进行合并回写给SAP,正确应该按照TIME NEEDED中分三批进行回写去SAP(当然要看最新Arrival时间确定最终回写的时间)。
例如第一笔净需求12.7,安全库存15,最小批量30,舍入值10,应该回写30,而不是45(当天2018.5.8应该只回写一笔30去SAP)

SELECT PR.RECOMMENDEDSUPID,PR.ITEM,TRUNC (PR.PORELEASEDATE),TRUNC(PR.PLANNEDDELDATE), PR.QTYPLANNED
,IT.PR_CONSOLIDATE_DAYS--合并下PR的时间区间即SAP_MARC。DISLS
,IT.PROC_GROUP_ID,IT.PROC_GROUP_DESCR,IT.SITE_ID
,SI.LOCATION_ID,SI.QTY_UOM,IT.UDF_IS_JIT,SUBSTR(PR.RECOMMENDEDSUPID,INSTR(PR.RECOMMENDEDSUPID,'_')+5)
FROM ABPPMGR.PROCUREMENTPLAN PR,
IN_ITEM_SITE IT,
IN_SUPPLIER_ITEM SI
WHERE PR.ITEM = IT.ITEM_ID
AND IT.SITE_ID = SUBSTR (PR.RECOMMENDEDSUPID, 1, 4)
AND SI.ITEM_ID = IT.ITEM_ID
AND SI.SUPPLIER_ID = PR.RECOMMENDEDSUPID
AND SI.UDF_ITEM_TYPE_ID = ''
--AND (TRUNC (PR.PORELEASEDATE) <= V_CurrentDate + DECODE (V_DAY, 7, -1, 0)+V_PDAYS)
AND (TRUNC (PORELEASEDATE) <= sysdate + DECODE (6, 7, -1, 0)+14)
AND PR.ORDERID LIKE '%PROC%' AND SUBSTR(PR.RECOMMENDEDSUPID,INSTR(PR.RECOMMENDEDSUPID,'_')+5) NOT IN
( SELECT DISTINCT SUPPLIER_ID FROM SAP_SUPPLIER_MINQTY )
AND PR.item in ('' ) ;

供给:


PR回写的案例三:
000000104005000047 周批量WB,最小批量1000,舍入值100,安全库存12000
SELECT SAFE_QTY,A.* FROM SAP_MARC A where MATNR='' and WERKS=''; --SAFE_QTY:安全库存
SELECT MIN_LOT_SIZE,LOTSIZE_INCREMENT,A.* FROM IN_SUPPLIER_ITEM A where item_id='' ; -- MIN_LOT_SIZE最小采购批量 LOTSIZE_INCREMENT舍入值
SELECT PR_CONSOLIDATE_DAYS,A.* FROM IN_ITEM_SITE A where item_id='' and SITE_ID=''; --合并下PR的时间区间 WB7 TB1 EX0 W2_14 T3_3
SELECT * FROM TP_TEMP_PR WHERE ITEM='' AND SUPPLIER_ID=''; select out_pr.PO_RELEASE_DATE,out_pr.supplier_id,out_pr.site_id,sap_eord.ekorg,out_pr.proc_group_id,out_pr.item,out_pr.qty,out_pr.qtyuom,substr(loc_id,-4) as LGORT
,'SAPRFC' as ERNAM,out_pr.due_datetime,out_pr.so_id,out_pr.so_lineid,out_pr.sobsl
from V_OUT_PR out_pr --其实是select * from tp_temp_pr
join sap_eord on out_pr.item = sap_eord.matnr and out_pr.supplier_id = sap_eord.lifnr and out_pr.site_id = sap_eord.werks
where out_pr.item in ('')



PR回写 所有物料规划PR时对净需求+最小采购批量+安全库存+舍入值的先后考虑逻辑的更多相关文章
- 103041000997维护的是周批,按周合并后再考虑最小采购批量、舍入值、然后回写到SAP系统
描述:103041000997维护的是周批量,但最终没有按周批量来回写数据. 业务逻辑如下: 1.净需求考虑数量按周汇总(也有按日.按3天,具体 要根据物料主数据维护来判断) 2.第1点的结果再加上安 ...
- 部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930;
描述:部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930: 原因:所有物料规划PR时对舍入值的先后考虑逻辑影响到回写出来的temp ...
- 部分2020年交期的PR回写到SAP中
描述:此问题一直存在,只是用户没有发现,最近提出,部分2020年交期的PR回写到SAP中 优化: SELECT MAX (PR.ORDERID), PR.ITEM, SUBSTR (PR.RECOMM ...
- 将2020年交期的PR回写出来了
OUT_pr表中的交期为2020年和2019年,不应该 回写的PR却回写出来了 优化如下:
- SO\PR回写的数据如下
insert into OUT_ORDER_RES ---JAVA FOR PR ) as LGORT ,'SAPRFC' as ERNAM,out_pr.due_datetime,out_pr.so ...
- 外购半成品回写PR时将同一供应商同一编码的PR合并数量回写
'); --PR 净需求 '); ---加上PR回写逻辑后 '); ---加上PR回写逻辑后 ') order by item; ---最终回写去SAP的数据 ) as LGORT ,'SAPRFC' ...
- SO\PR\MO\排产回写的数据如下
QTYOPEN(WMENG).EDATU(promised_mat_availdate).... insert into OUT_ORDER_RES ' ; --PR 净需求 ' ; ---加上PR回 ...
- linux下数据同步、回写机制分析
一.前言在linux2.6.32之前,linux下数据同步是基于pdflush线程机制来实现的,在linux2.6.32以上的版本,内核彻底删掉了pdflush机制,改为了基于per-bdi线程来实现 ...
- 修复回写PR时到料日期重复扣减检验周期的问题:
问题描述: 修复回写PR时到料日期重复扣减检验周期的问题:系统回写的外购半成品PR交货日期未按采购周期回写,从8-10日开始均于10天交期回写,例以下9-5日今天回写的PR,采购周期12天,结果回写到 ...
随机推荐
- tornado-版本迁移工具alembic
pip install pymysql pip install sqlalchemy pip install alembic 1.connect db_config.py #coding=utf-8 ...
- 8.2.1.2-MySQL如何优化 WHERE 语句
这一章节讨论能够在WHERE处理语句中使用的优化. 样例使用SELECT 语句, 但是同样适用于DELETE,UPDATE语句中的WHERE语句. 注意 因为MYSQL优化器在不断的发展,MySQL执 ...
- C++构造函数和析构函数执行顺序
四种情况:1. 创建一个类指针时,调用其构造函数:删除当前指针时,自动调用其析构函数.2. 创建子类对象指针时,首先调用其父类的构造函数,然后调用子类的构造函数:删除当前指针时先调用子类的析构函数,然 ...
- twisted之Deferred类的分析
@_oldStyle class Deferred: called = False#类变量,在实例中引用时会自动在实例中生成 paused = False _debugInfo = None _sup ...
- centos7.5单机yum安装kubernetes
1.系统配置 centos7.5 docker 1.13.1 centos7下安装docker 2.关闭防火墙,selinux,swapoff systemctl disable firewalld ...
- java位运算(操作)的使用
位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法 ...
- Phabricator代码审核Audit用户指南
作者: shaneZhang 分类: 互联网技术 发布时间: 2015-07-04 13:37 概览 Phabricator支持两种代码审查工作流:“review”(提交前审查)和 “audit”(提 ...
- 机器学习进阶-图像形态学操作-膨胀操作 1.cv2.dilate(进行膨胀操作)
1.cv2.dilate(src, kernel, iteration) 参数说明: src表示输入的图片, kernel表示方框的大小, iteration表示迭代的次数 膨胀操作原理:存在一个ke ...
- 使用ubuntu远程连接windows, Connect to a Windows PC from Ubuntu via Remote Desktop Connection
from: https://www.digitalcitizen.life/connecting-windows-remote-desktop-ubuntu NOTE: This tutorial w ...
- sass实战演练01 - 外部文件引用和变量
SASS是什么? 目前前端开发中css已经是公认的”前端程序员必须掌握”的知识,最早的css编写都是手工一条条写出来的,工作量大.不利于维护. 而sass的存在使得css开发可以像写代码一样最终生成一 ...