The Low Level Code (LLC) utility in GP Manufacturing calculates the lowest level at which any component is found.
For example, CBA100 is at level 2 and CAP100 is at level 3. Material Requirements Planning (MRP) uses this LLC so it knows at which level it needs to start planning (i.e. start at the “top” and work your way down).
Imagine a situation where A uses B which uses C which uses B. This is a circular Bill of Materials (BOM). Normally Dynamics GP will not allow you to create this type of arrangement. However, the LLC Utility has a bug that makes it think there are circular BOMs.
The LLC utility “Maximum Levels” setting provides a “fail safe” to address circular BOMs. If the utility runs through the A–B–C–B loop 99 times it will stop. When you look at the LLC code on Item Engineering it will show 99. An easier way to see this is to look at the Item Engineering SQL table (IVR10015).
The bug in the LLC utility is that it does not traverse straight down each BOM.
When working down 100XLG it should retrieve the specific BOM for BA100G (in this case the MFG BOM for BA100G), and then the MFG BOM for CBA100. Instead, it retrieves ALL BOMs for BA100G (i.e. the MFG BOM, ENG BOM, all CONFIG and ARCH BOMs).
This is a problem because you could legitimately have parts that can be changed into each other. In the BOM above perhaps you MAKE BA100G using CBA100, but you also sometimes DISASSEMBLE BA100G back into parts. You could use one of the Named BOM Types (i.e. ARCH or CONFIG) to store “disassembly” BOMs. Now when looking at all available BOMs you have this situation:
You use CBA100 to make BA100G, but you can take apart BA100G to “make” a CBA100.
When the LLC utility is traversing down 100XLG it sees it contains CBA100. At that point it grabs ALL BOMs and starts working down those. That creates a circular situation because it can proceed down the ARCH BOM which takes it back “up” to BA100G. It is then stuck in a circle.
WilloWare has a fix for the Manufacturing Stored Procedure in question. If you would like it, please contact our support team.