Maximo Open Forum

 View Only

BIRT report crashes with out of memory error

  • 1.  BIRT report crashes with out of memory error

    Posted 07-26-2024 05:59
      |   view attached

    Hi Experts,

    We created a BIRT report with 3 parameters,siteid,worktype and wo status to fetch all the open PRs,POs and inventory reservations against a workorder and the query executed very fast in a SQL developer client but the BIRT report is crashing with out of memory error(The screenshot is attached).

    Can you please let us know if the page break property can be a culprit here as we set it to 5k.When we kept it to default of 40 also the report is crashing.Any hints will be appreciated.

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    with cte1 as (SELECT distinct prl.refwo wonum, prl.siteid 
     FROM prline prl JOIN pr on prl.prnum = pr.prnum and prl.siteid = pr.siteid and prl.ponum is null and prl.refwo is not null  
      and pr.status not in ('CAN','CLOSE') 
      join wpmaterial wp on wp.wonum = prl.refwo and wp.siteid = prl.siteid and (wp.itemnum = prl.itemnum or wp.DESCRIPTION = prl.DESCRIPTION) 
     ), 
     cte2 as (SELECT distinct pol.refwo wonum, pol.siteid 
      FROM poline pol JOIN po on pol.ponum = po.ponum and pol.siteid = po.siteid and pol.revisionnum = po.revisionnum  
      and po.status not in ('REVISD','CAN','CLOSE','PNDREV') and pol.receiptscomplete != 1 and pol.refwo is not null 
      join wpmaterial wp on wp.wonum = pol.refwo and wp.siteid = pol.siteid and (wp.itemnum = pol.itemnum or wp.DESCRIPTION = pol.DESCRIPTION) 
     ), 
     cte3 as (SELECT distinct ir.wonum, ir.siteid 
      FROM invreserve ir 
      join wpmaterial wp on wp.wonum = ir.wonum and wp.siteid = ir.siteid and (wp.itemnum = ir.itemnum or wp.DESCRIPTION = ir.DESCRIPTION) 
     ), 
     //cte4 as (SELECT w1.wonum, w1.siteid FROM workorder w1 except SELECT wp.wonum,wp.siteid FROM wpmaterial wp  //wocan,can,close
     ), 
     unioncte as( select * from cte1 union select * from cte2 union select * from cte3
     ), 
     prz as( SELECT  pr.prnum , pr.requestedby ,pr.description pr_description, 
      pr.status ,pr.shiptoattn  , 
      prl.prlinenum ,prl.linetype ,pr.teufuncarea , 
      prl.itemnum ,prl.description PR_LINE_DESCRIPTION,prl.orderqty  , 
      prl.reqdeliverydate ,prl.refwo,prl.siteid,prl.ponum,prl.polinenum, prl.porevisionnum 
     FROM prline prl JOIN pr on  prl.prnum = pr.prnum and prl.siteid = pr.siteid and pr.status not in ('CAN','CLOSE') 
     ), 
     poz as( select po.ponum  ,po.status , po.teufuncarea ,po.shipto ,po.shiptoattn ,pol.refwo, pol.siteid, 
      po.orderdate , po.receipts ,po.vendor  ,pol.polinenum, pol.linetype , pol.itemnum , pol.description ,
      pol.orderqty , pol.receivedqty , pol.unitcost ,pol.linecost ,pol.receiptscomplete
      from poline pol join po on  pol.ponum = po.ponum and pol.siteid = po.siteid and pol.revisionnum = po.revisionnum  
      and po.status not in ('REVISD','CAN','CLOSE','PNDREV') 
     ), 
     workorders as( select workorder.siteid ,workorder.wonum  ,workorder.worktype , workorder.targcompdate ,
      workorder.wopriority , workorder.description ,workorder.status ,  
      workorder.statusdate ,workorder.storeroommtlstatus ,  
      workorder.dirissuemtlstatus ,workorder.workpackmtlstatus ,  
      workorder.availstatusdate , workorder.plusgtechtype ,workorder.targstartdate  ,  
      workorder.schedstart  ,  workorder.teutargcompdate  , workorder.reportedby, 
      workorder.schedfinish  , workorder.plusgmpoverridecod ,workorder.teudept ,  
      workorder.persongroup , workorder.istask,workorder.woclass,workorder.orgid
      from workorder where workorder.orgid='' // very high level we can put woclass-'workorder' and istask=0
     ) 
    //main query
     SELECT s.shipitemnum SHIP_ITEM_NUMBER, s.siteid, s.createddate CREATED_DATE ,
      s.createdby CREATED_BY,p1.displayname CREATED_BY_NAME,s.status SHIP_ITEM_STATUS,
      s.description SHIP_ITEM_DESCRIPTION,s.MANIFESTNUM SHIP_MANIFEST_NUMBER,
      l.DESCRIPTION MANIFEST_DESCRIPTION, l.type MANIFEST_TYPE,l.STATUS MANIFEST_STATUS,
      s.droplocation DROP_LOCATION, s.inout SHIP_ITEM_IN_OUT,
      CASE WHEN s.onhold = '1' THEN 'Y' ELSE 'N' END SHIP_ON_HOLD,
      s.shipfrom SHIP_FROM,s.shipto SHIP_TO,s.holdlocal HOLD_WHERE,s.holdlocation HOLD_LOCATION,
      s.holdreason HOLD_REASON,s.fao SHIP_ITEM_FOA,s.comments SHIP_ITEM_COMMENTS,
      prz.prnum PR_NUMBER, prz.requestedby PR_REPOERTED_BY,p2.displayname PR_REPORTED_BY_NAME,prz.pr_description PR_DESCRIPTION,
      prz.status PR_STATUS,prz.shiptoattn  PR_SHIPTO_ATTN,p4.displayname SHIP_TO_NAME,
      prz.prlinenum PR_LINE_NUMBER,prz.linetype PR_LINE_TYPE,prz.teufuncarea PR_BUSINESS_AREA,
      prz.itemnum PR_ITEM_NUMBER,prz.pr_line_description PR_LINE_DESCRITPION ,prz.orderqty PR_ORDER_QUANTITY ,
      prz.reqdeliverydate PR_REQUIREED_DELIVERY_DATE, 
      s.storeloc PR_STORE_LOC,
      workorder.siteid WORKORDER_STITEID,workorder.wonum WORKORDER_NUMBER ,workorder.worktype WORKORDER_WORKTYPE,
      workorder.wopriority WORKORDER_PRIORITY, workorder.description WORKORDER_DESCRIPTION,workorder.status WORKORDER_STATUS,
      workorder.statusdate WORKORDER_STATUS_DATE,workorder.storeroommtlstatus STOREROOM_DEMAND_STATUS,
      workorder.dirissuemtlstatus DIRECT_ISSUE_DEMAND_STATUS,workorder.workpackmtlstatus OVERALL_LOWEST_STATUS,
      workorder.availstatusdate LAST_MATERIAL_UPDATE, workorder.plusgtechtype WORKORDER_TECH_AUTHORITY,workorder.targstartdate  WORKORDER_TARG_START,
      workorder.schedstart  WORKORDER_SCHED_START,  workorder.teutargcompdate  WORKORER_TARG_COMP_DATE,
      workorder.schedfinish  WORKORDER_SCHED_COMP_DATE, workorder.plusgmpoverridecod WORKORDER_OVERRIDE_CODE,workorder.teudept WORKORDER_DEPARTMENT,
      workorder.persongroup WORKORDER_WORK_GROUP, workorder.reportedby WORKORDER_REPORTED_BY,p3.displayname rEPORTED_BY_NAME,
      poz.ponum PO_NUMBER ,poz.status PO_STATUS, poz.teufuncarea PO_FUNCTIONAL_AREA,poz.shipto PO_SHIP_TO,poz.shiptoattn PO_SHIP_TO_ATTN,
      p5.displayname PO_SHIP_TO_NAME,poz.orderdate PO_ORDER_DATE, poz.receipts PO_RECEIPT_STATUS,poz.vendor PO_VENDOR ,
      C.NAME VENDOR_NAME,
      poz.polinenum POL_LINE_NUMBER , poz.linetype POL_LINE_TYPE, poz.itemnum POL_ITEM_NUMBER, poz.description POL_DESCRIPTION,
      poz.orderqty POL_ORDERED_QUANTITY, poz.receivedqty POL_RECEIVED_QUANTITY, poz.unitcost POL_UNIT_COST,poz.linecost POL_LINE_COST,
      CASE WHEN poz.PONUM IS NOT NULL AND poz.receiptscomplete = 1 THEN 'Y' WHEN poz.PONUM IS NOT NULL THEN 'N' END POL_RECEIPTS_COMPLETE,
      DATEDIFF(DAY,getdate() , s.createddate) SHIPITEM_DAYS,
      case when prz.reqdeliverydate is not null then DATEDIFF(DAY,getdate() ,  prz.reqdeliverydate) END  PRL_DELIVERY_DAYS ,
      case when workorder.targstartdate is not null then DATEDIFF(DAY,getdate() ,  workorder.targstartdate ) END  WO_TARGSTARTDATE_DAYS,
      case when workorder.targcompdate is not null then DATEDIFF(DAY,getdate() ,  workorder.targcompdate ) END  WO_TARGCOMPDATE_DAYS,
      case when workorder.schedstart is not null then DATEDIFF(DAY,getdate() , workorder.schedstart ) END  WO_SCHED_START_DAYS,
      case when workorder.schedfinish is not null then DATEDIFF(DAY,getdate() , workorder.schedfinish) END  WO_SCHED_FINSIH_DAYS, 
      case when workorder.availstatusdate is not null then DATEDIFF(DAY,getdate() , workorder.availstatusdate) END  WO_MATERIAL_DAYS
     FROM workorders workorder  
     JOIN unioncte z on workorder.wonum = z.wonum and workorder.siteid = z.siteid 
     LEFT JOIN prz prz on workorder.wonum = prz.refwo and workorder.siteid = prz.siteid 
     LEFT JOIN poz poz on workorder.wonum = poz.refwo and workorder.siteid = poz.siteid 
     LEFT JOIN companies c on poz.vendor = c.company  
     LEFT JOIN lgstshipitems s on workorder.wonum = s.wonum and s.status not in ('cancelled','completed')
     LEFT JOIN lgstmanifests l on l.manifestnum = s.manifestnum 
     LEFT JOIN person p1 on p1.personid = s.createdby  
     LEFT JOIN person p2 on p2.personid = prz.requestedby 
     LEFT JOIN person p3 on p3.personid = workorder.reportedby 
     LEFT JOIN person p4 on p4.personid = prz.shiptoattn 
     LEFT JOIN person p5 on p5.personid = POz.shiptoattn 
     where   params[where]
     and workorder.orgid in (select locationorg from person where upper(personid)= upper('  params[userName].value  ')) 

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------


    #Administration
    #Customizations
    #EverythingMaximo

    ------------------------------
    Mahadevan Ramakrishnan
    ------------------------------


Featured Podcast
Episode 1 is live: IBM Maximo Application Suite 9.2

Watch or listen to Steven Shull and Phil Runion discuss the practical MAS 9.2 updates Maximo teams should know.

Watch the Podcast
MORE by Naviam Episode 1 cover
Watch the latest episode