zoukankan      html  css  js  c++  java
  • CRTD模拟MFG工单进行绑定优化

     需求:按单按库生产的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='5000156623' 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='5000156623' and so_line_id='70';
    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='5000154378' and so_line_id='460';

    写入代码为

      --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'
             , '1'
             , 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'
             , '1'
             , 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,'0') ||'_'|| 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
            ,'1' ISFEEDSLOCKED
            ,'1' ISQTYLOCKED
            ,'1' 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='0')
          ) 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;
  • 相关阅读:
    学习九-python 异常处理
    验证基于逻辑回归的隐马尔可夫模型的心音信号切分算法(literature study)
    字典的内置方法比较
    学习六
    Ubuntu 16.04 LTS 搜狗输入法安装
    集合经验模态分解(EEMD)在语音中的应用举例
    SwfUpload及imgareaselect使用方法
    Uploadify插件使用方法
    Ueditor使用方法
    PartialView 加载Js
  • 原文地址:https://www.cnblogs.com/Snowfun/p/8962344.html
Copyright © 2011-2022 走看看