E9.2 Ignore Inventory In MRP

Jeff George

Jeff George

Well Known Member
We have a PF (Planning Forecast) set up with weekly quantities. These are quantities that we want to manufacture each week, regardless of what current inventory levels are. MRP is not creating work order messages for some of these items because of existing on-hand inventory. Is there a way to tell MRP to ignore on-hand quantities and just make to forecast?
 
You could give those Item Branch Location records a Location Status of non-blank, so that MRP wouldn't see them as available.
 
You could give those Item Branch Location records a Location Status of non-blank, so that MRP wouldn't see them as available.
I don't know that this would work as these are the primary locations of this inventory and setting a standard status code on those would cause all sorts of implications. I'm thinking that there has to be a way to use MPS to tell the system 'always make these', but I'm just not sure what it is, as this is the first time I've been in an environment where the goal is to manufacture whether there is already inventory or not, kind of a 'build for future cyclical demand,' if you will.
 
Maybe, you could manually create these work orders and freeze them. Or you could create a mfg branch plant, where the PF is setup, transfer FGs to the regular branch. If there are a lot of FG items, maybe a customized version R3482 to exclude the on hand, the change is very simple.
 
Maybe, you could manually create these work orders and freeze them. Or you could create a mfg branch plant, where the PF is setup, transfer FGs to the regular branch. If there are a lot of FG items, maybe a customized version R3482 to exclude the on hand, the change is very simple.
Out of those options, the one that I consider to be the most viable is a customized R3482 to exclude looking at on-hand inventory. I actually created a copy of the UBe to see if I could figure out where it was checking the on-hand, but I couldn't find the Event Rule section.
 
After report tree view is enabled, pls look at section "Select Item Balance", "DO Section" event, function "Cache, Process MRP Item Quantities" around line 45.
 
After report tree view is enabled, pls look at section "Select Item Balance", "DO Section" event, function "Cache, Process MRP Item Quantities" around line 45.
Thanks for that pointer. I'll try this out on a prototype copy and see how it works.
 
I created a test UBE and commented out that single line. The job ran successfully, but there was no difference between the results and the standard R3482, i.e. the on-hand inventory was still considered in determine when to create work orders. Is there something else I need to do beyond bypassing that line?

EDIT: Actually, that line only gets processed based on this line:

00039 If RV Error Code [gv] [ERRC] is equal to "1"

Since I don't have an error it's bypassing that whole section of clearing caches. There must be code somewhere, though, that makes it look at inventory.
 
Last edited:
One more thought on the lot status codes - you could have a UBE you run that sets them all to a non-blank value, run R3482, and then run a UBE to set them all back to a blank value. The UBE could be the same, just with a processing option to control what to set the lot status code to. No mod to R3482 needed that way. The only downside is that if you have users active in the system while MRP is running, they'd encounter the non-blank lot status codes, too.
 
One more thought on the lot status codes - you could have a UBE you run that sets them all to a non-blank value, run R3482, and then run a UBE to set them all back to a blank value. The UBE could be the same, just with a processing option to control what to set the lot status code to. No mod to R3482 needed that way. The only downside is that if you have users active in the system while MRP is running, they'd encounter the non-blank lot status codes, too.
That's an interesting idea. I'm going to keep that one on the list, though I'm still interested in learning how the MPS/MRP jobs review on-hand inventory. It must be controlled by some Event Rule somewhere. I'm also curious as to how other companies would do this. I would think that E1 has consideration that some companies might just be building inventory. I'd hate to have to go down the route of manually creating work orders for every item because MRP won't ignore our existing inventory.
 
I created a test UBE and commented out that single line. The job ran successfully, but there was no difference between the results and the standard R3482, i.e. the on-hand inventory was still considered in determine when to create work orders. Is there something else I need to do beyond bypassing that line?

EDIT: Actually, that line only gets processed based on this line:

00039 If RV Error Code [gv] [ERRC] is equal to "1"

Since I don't have an error it's bypassing that whole section of clearing caches. There must be code somewhere, though, that makes it look at inventory.
Sorry, previous notes was incorrect. Same place around line 368, try if commenting the following would work. This is the only place to load on hand qty. If it does not work, you could duplicate the c bsfn to exclude the on-hand and hook up to it. The change is simple as well. If you needs some flexibility, a UDC could be used what branch (and item) to exclude on hand.

00368 MRPWriteOnHandLotQtyToCacheA(B3400370.MRPWriteOnHandLotQtyToCacheA)

Please let me know what works for you.
 
Last edited:
Sorry, previous notes was incorrect. Same place around line 368, try if commenting the following would work. This is the only place to load on hand qty. If it does not work, you could duplicate the c bsfn to exclude the on-hand and hook up to it. The change is simple as well. If you needs some flexibility, a UDC could be used what branch (and item) to exclude on hand.

00368 MRPWriteOnHandLotQtyToCacheA(B3400370.MRPWriteOnHandLotQtyToCacheA)

Please let me know what works for you.
Thanks. I'll try that one. I appreciate you giving these tips.

EDIT: Actually, I see that this is the same line I tried earlier when I was experimenting on anything that looked relevant. When I turn that line into a comment I get the following error on the report output:

EventRule : Business Function MRPCalculatePlanAndScheduleOrder at line 594 for Event 13 in Section Select Item Balance has caused a memory violation.

Unfortunately, I don't do C debugging, so I can't step through the BSFN to see what it doesn't like.
 
Last edited:
Thanks. I'll try that one. I appreciate you giving these tips.

EDIT: Actually, I see that this is the same line I tried earlier when I was experimenting on anything that looked relevant. When I turn that line into a comment I get the following error on the report output:

EventRule : Business Function MRPCalculatePlanAndScheduleOrder at line 594 for Event 13 in Section Select Item Balance has caused a memory violation.

Unfortunately, I don't do C debugging, so I can't step through the BSFN to see what it doesn't like.
That's what I am afraid, commenting may not work because the way B3400370 loads quantity (through pointer operation to gain efficiencies. ) If it is not possible to find someone with C BSFN, maybe you could consider Don's idea of location status. You could use table IO ER code to update the lot status of all locations for the item/branch to non-blanket value at the begin of Do section and restore them at the end, the ER code is simple as well. The performance of table IO should be not so significant.

Good luck and please let me know if you have questions.
 
Thanks for your input, guys.

On a slightly tangential note, what would the standard process be if you just wanted to manufacture without regard to inventory levels? In previous places I've been we just didn't use MRP for things like this. The planner would simply create work orders based on the requirements. Is there not a smoother way to do that in E1?
 
You're welcome.

I am trying to justify the process here. Maybe, The excessive inventory will be taken into account during next SIOP event. The business wants to have a fixed production schedule, and need MRP to generate the work orders and plan the dependent demand. A program to generate work orders from forecast would probably serve the purpose.
 
You're probably correct about the inventory. If they discover they are building to more than their anticipated usage then they will possibly back off from the plan. I really don't think standard MRP is the choice for them on this.
 
We have a PF (Planning Forecast) set up with weekly quantities. These are quantities that we want to manufacture each week, regardless of what current inventory levels are. MRP is not creating work order messages for some of these items because of existing on-hand inventory. Is there a way to tell MRP to ignore on-hand quantities and just make to forecast?
Hi Jeff, if you load these Forecasts into the F3411 as WO messages and then answer them to create the WO's, you can bypass the MRP process to ignore onhand etc.... You can then run MRP to explode the Raw Material requirements based on these Work Orders using Generation Type 5.....

Generation type 5 = MRP with frozen MPS. This generation type freezes the master schedule after it has been stabilized. Before running this generation type, you should make all of the necessary adjustments to master scheduled items and release orders to cover the demand. This generation type freezes the entire planning horizon similar to the way the freeze fence freezes a part of the horizon. The results of running this generation type are:

  • No new orders will be planned.
  • No messages for existing orders will be created.
  • The adjusted ending available quantity is allowed to go negative.
  • Demand is only exploded down to components from existing work orders.
    No -PWO demand from parent items exists, only -FWO demand.
 
Thanks for the suggestions, Craig. I'm just wondering what you really gain by doing that. If you're just going to populate the 3411 to process messages instead of a forecast, I would submit that you might as well just cut 50 work orders for the year based on your schedule and be done with it. Keep it simple: no MRP messages to deal with since it's not going to give you what you want anyway.
 
Create a batch suspension status for all inventory and configure in the status group, using P41081, group x Document Type x Batch Status, and configure that group in each program you will use, exception for R3482/R3483. It's easier and cheaper than customizing something... We had the same problem as you and we solved using this.
 
Just a simple idea and I'm not that tech savvy - could you create a process like in SQL to set safety stock to be equal to your on hand inventory prior to your MRP run for those items? That would essentially make your starting inventory zero and would "ignore" on hand inventory?
 
Back
Top