需求:按单按库生产的CRTD状态半成品工单重复创建问题

绑定成功案例:

SELECT DEMANDLINEID,SUPPLYORDERID,DEMANDORDERID,QTYALLOCATED,ITEM FROM ABPPMGR.SUPPLYDMDPEGPLAN  WHERE  ITEM='000000102002000817CZ';--前台显示

--SO:5000156623 模拟创建了成品MO:5000156623/70_1-MFG001,成品MO号供给者为半成品MO:001201126508
SELECT DEMANDORDERID,DEMANDLINEID,DEMANDTYPE,ITEM,QTYINMOVE,SOURCEDATE,SUPPLYORDERID,SUPPLYTYPE,QTYALLOCATED
FROM ABPPMGR.supplydmdpegging WHERE (DEMANDORDERID='' AND DEMANDLINEID='70_1') OR DEMANDORDERID='5000156623/70_1-MFG001' ; --000000101002001849CZ 001201126508 000000102002000845CZ SELECT PRODUCTIONORDID,BOMID,ITEM,QTYORDERED,REQUIREDDATE,ROUTINGID,UDF_MO_FACTORY FROM ABPPMGR.PRODUCTIONORDERS WHERE PRODUCTIONORDID='5000156623/70_1-MFG001'; SELECT * FROM IN_SFCHEADER where so_id='' and so_line_id='';
SELECT * FROM ABPPMGR.MST_BOMCOMPONENTSALT where alternateitem like '000000102002000817CZ%' ;--alternateitem替代料,item为主料

 解决方法:

下面修改SAP_MO表是为了避免TECO,CLSD的工单写到IN_MO或IN_SFCHEADER表的PEGGED_MO_ID栏位中,导致supplydmdpegging表中无法将此工单与SO进行绑定

下面是修复当使用替料时导致CRTD绑定失败问题,原因是工艺路线数据问题导致

.

以下是因为工艺路线问题导致绑定不成功

成功绑定案例2(拆分计划行)

SELECT DEMANDLINEID,SUPPLYORDERID,DEMANDORDERID,QTYALLOCATED,ITEM FROM ABPPMGR.SUPPLYDMDPEGPLAN  WHERE  ITEM='000000102005000397CA';--前台显示

SELECT DEMANDORDERID,DEMANDLINEID,DEMANDTYPE,ITEM,QTYINMOVE,SOURCEDATE,SUPPLYORDERID,SUPPLYTYPE,QTYALLOCATED
FROM ABPPMGR.supplydmdpegging WHERE ITEM='000000102005000397CA' ; SELECT PRODUCTIONORDID,BOMID,ITEM,QTYORDERED,REQUIREDDATE,ROUTINGID,UDF_MO_FACTORY FROM ABPPMGR.PRODUCTIONORDERS WHERE PRODUCTIONORDID LIKE '5000154378/460%'; SELECT * FROM IN_MO where so_id='' and so_line_id='';

写入代码为

  --no ASS MO yet
INSERT ALL
WHEN SOCOUNT =1 THEN
INTO abppmgr.SUPPLYDMDPEGGING
( ENTERPRISE
, ENGINE_ID
, DEMANDLINEID
, DEMANDORDERID
, DEMANDTYPE
, ITEM
, QTYALLOCATED
, SITEID
, LOCATIONID
, SUPPLYORDERID
, SUPPLYTYPE
, ISDEMANDLOCKED
, SYS_CREATED_BY
)
values( ENTERPRISE
, ENGINE_ID
, SO_LINE_ID
, SO_ID
, 'SO'
, PRODUCT_ITEM
, QTYORDERED
, SITEID
, NULL
, PRODUCTIONORDID
, 'MFG'
, ''
, SYS_CREATED_BY
)
when SOCOUNT=1 then INTO abppmgr.PRODUCTIONORDERS
( ENTERPRISE
, ENGINE_ID
, BOMID
, ITEM
, PLANNEDSTARTDATE
, PRODUCTIONORDID
, QTYORDERED
, REQUIREDDATE
, ROUTINGID
, SITEID
, SYS_CREATED_BY
,ISFEEDSLOCKED
,ISQTYLOCKED
,ISROUTINGLOCKED
)
values(ENTERPRISE
, ENGINE_ID
, BOMID
, PRODUCT_ITEM
, PLANNEDSTARTDATE
, PRODUCTIONORDID
, QTYORDERED
, REQUIREDDATE
, ROUTINGID
, SITEID
, SYS_CREATED_BY
,ISFEEDSLOCKED
,ISQTYLOCKED
,ISROUTINGLOCKED)
when SOCOUNT is not null then
INTO abppmgr.SUPPLYDMDPEGGING
( ENTERPRISE
, ENGINE_ID
, DEMANDLINEID
, DEMANDORDERID
, DEMANDTYPE
, ITEM
, QTYALLOCATED
, SITEID
, SUPPLYORDERID
, SUPPLYTYPE
, ISDEMANDLOCKED
, SYS_CREATED_BY
)
values( ENTERPRISE
, ENGINE_ID
, NULL
, PRODUCTIONORDID
, 'MFG'
, SEMI_ITEM
, SEMI_QTY
, SITEID
, SEMI_MO
, 'MFG'
, ''
, SYS_CREATED_BY
)
SELECT ENTERPRISE
, ENGINE_ID
, BOMID
, SO_ID
, SO_LINE_ID
, SEMI_ITEM
, PRODUCT_ITEM
, PLANNEDSTARTDATE
, PRODUCTIONORDID
, QTYORDERED
, SEMI_QTY
, SEMI_MO
, REQUIREDDATE
, ROUTINGID
, SITEID
, SYS_CREATED_BY
,ISFEEDSLOCKED
,ISQTYLOCKED
,ISROUTINGLOCKED
, SOCOUNT from (
SELECT V_ENTERPRISE ENTERPRISE
, V_ENGINEID ENGINE_ID
, SO.SO_ID
, SO.SO_LINE_ID
, DECODE(TRIM(BR.BOM_ID),NULL,NULL,''|| LTRIM(SO.ITEM_ID,'') ||'_'|| TRIM(BR.BOM_ID)) BOMID
, SO.ITEM_ID PRODUCT_ITEM
, SYSDATE PLANNEDSTARTDATE
, SO.SO_ID||'/'||SO. SO_LINE_ID||'-'||'MFG001' PRODUCTIONORDID
, SO.ORDERED_QTY QTYORDERED
, MO.QUANTITY SEMI_QTY
, MO.MO_ID SEMI_MO
, NVL(SO.UDF_PROMD,SO.UDF_CRSD) REQUIREDDATE
, BR.ROUTING_ID ROUTINGID
, V_SITEID SITEID
, MO.ITEM_ID SEMI_ITEM
, V_PRONAME||'_'||V_STEP SYS_CREATED_BY
,'' ISFEEDSLOCKED
,'' ISQTYLOCKED
,'' ISROUTINGLOCKED,
ROW_NUMBER() OVER(PARTITION BY MO.PEGGED_SO_ID,MO.PEGGED_SO_LINE_ID ORDER BY SO.SO_LINE_ID desc) SOCOUNT,
ROW_NUMBER() OVER(PARTITION BY MO.PEGGED_SO_ID,MO.PEGGED_SO_LINE_ID,MO.MO_ID ORDER BY SO.SO_LINE_ID desc) RN
FROM IN_SEMI_MO_LOCKED MO,IN_SALES_ORDER SO,IN_ITEMBOMROUTING BR WHERE
MO.PEGGED_SO_ID=SO.SO_ID AND MO.PEGGED_SO_LINE_ID=SUBSTR(SO.SO_LINE_ID,1,INSTR(SO.SO_LINE_ID,'_')-1)
AND BR.PRODUCED_ITEM_ID=SO.ITEM_ID and MO.PEGGED_MO_ID is null
AND BR.siteid=SO.siteid
AND EXISTS(SELECT NULL FROM IN_BOM_HEADER BH WHERE BH.BOM_ID=BR.BOM_ID AND BH.MO_BOM_MARK='')
) WHERE RN=1 AND EXISTS (SELECT NULL FROM ABPPMGR.MST_ITEMMASTER AM WHERE PRODUCT_ITEM = AM.ITEM) AND EXISTS (SELECT NULL FROM ABPPMGR.MST_ITEMMASTER AM WHERE SEMI_ITEM = AM.ITEM)
AND NOT EXISTS (SELECT NULL FROM abppmgr.SUPPLYDMDPEGGING SUP WHERE SO_ID = SUP.DEMANDORDERID AND SO_LINE_ID = SUP.DEMANDLINEID)
;
COMMIT;

CRTD模拟MFG工单进行绑定优化的更多相关文章

  1. Vue(10)表单输入绑定v-model

    v-model v-model指定可以实现表单值与属性的双向绑定.即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值 绑定的属性和事件 v-model在内部为不同的输入元 ...

  2. .Net模拟提交表单

    2016-09-0210:49:20 以中邮速递API为服务接口,由于提交方式为表单提交,我要获取返回值来处理其他业务,所以一开始尝试采用Js后台获取返回值,但是涉及到跨域请求限制问题,那边服务端接口 ...

  3. (OSP)外包工单关工单失败

    会计同事反映,在关几个外包(OSP)工单时,系统报错.错误讯息如下.检查错误讯息,发现Number of jobs failed in Delivered Quantity : 2.检查工单数据,均无 ...

  4. failed jobs because of past close date,关工单报错

    今天会计反映关不了工单.我们公司关工单的程序是自己开发的,可以整批关.报如下错误.我试着用Standad程序关,可以.看来应该是我们开发的程序有问题.后来发现,是抛到WIP_DJ_CLOSE_TEMP ...

  5. MD4C/CO46/MD04一个很棒的工单缺料分析

    大家好~~~ 之前在MD04物料分析的时候,看到有订单预留,双击有个订单报告可以显示一个订单物料是否缺料清单 这个单独的工单分析可以在T-code:MD4C,CO46查看,如果只是单独的使用,那么这两 ...

  6. LINUX单网卡绑定多个IP

    在linux下,我们有时候需要给单网卡设置不同的IP地址,这样就涉及到单网卡绑定多个IP地址的情况.使用本方法可以方便的为单网卡绑定多个IP地址.笔者使用的环境是centos5.6,应该在fedora ...

  7. 模拟JQUERY的延迟方法绑定

    模拟JQUERY的延迟方法绑定, 对于延迟方法绑定,各种语言都有不同的描述 什么回调啊,函数指针啊,委托啊,事件啊等,其实也就是那么大回事,不过用好这些特性,对于扩展和架构是非常有好处的, 好处自然就 ...

  8. 通过HttpURLConnection模拟post表单提交

    通过HttpURLConnection模拟post表单提交 package junit; import java.io.InputStream; import java.net.HttpURLConn ...

  9. nodejs 模拟form表单上传文件

    使用nodejs来模拟form表单进行文件上传,可以同时上传多个文件. 以前项目里有这个方法,最近在客户那里出问题了,同事说,这个方法从来就没管用过,SO,用了一天时间把这个方法给搞出来了(觉得花费的 ...

随机推荐

  1. [Android]Android布局优化之 merge

    转载请标明:转载于http://www.cnblogs.com/Liuyt-61/p/6602915.html -------------------------------------------- ...

  2. 使用Maven创建(eclipse)Java项目

    1. 构建项目目录: 命令行方式: mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} \ ...

  3. 对比各节点host 与 标准节点host差异脚本

    把各节点host拷贝到一台节点 这可以采用读主机名配置的方式 我这里偷懒了 echo 'starting' ssh hadoop01 "cp /etc/hosts ~/hadoop01-ho ...

  4. STM32F105开发板

  5. django 无法生成表

    1.删除该APP下migration下的文件,只留init文件即可 2.删除表django_migration的关于该app的所有记录 3.makemigrations,migrate

  6. oracle数据库启动流程及登录认证方式详解

    转自:https://www.2cto.com/database/201803/726644.html ■  oracle启动流程-windows下 1) lsnrctl start  (启动监听) ...

  7. 26个Jquery使用小技巧(转)

    下面列出了一些Jquery使用技巧.比如有禁止右键点击.隐藏搜索文本框文字.在新窗口中打开链接.检测浏览器.预加载图片.页面样式切换.所有列等 高.动态控制页面字体大小.获得鼠标指针的X值Y值.验证元 ...

  8. Oracle部署安装

    1.用户有数据库服务器则不需要安装Oracle服务器端,若没有需要安装 https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html ...

  9. https 学习总结

    最近看了点https 做下总结  面的博客如果没有错误的话,理解起来绝对是醍醐灌顶!让人信服,如果我的理解有问题,请及时指正! 参考博客:    http://www.ruanyifeng.com/b ...

  10. Oracle 学习总结 - 物理结构

    参考了很多文章,学习自网络 数据库 = 实例(数据库启动时初始的进程和内存结构,进程会作用到对应的内存区域-数据写入器到写入内存缓冲区,日志写入器到日志缓冲区等) + 数据库(物理文件-控制文件,数据 ...