The Level of BOM Planning in the SNP Heuristic and Low Level Codes

Executive Summary

  • We define a heuristic and how they work with the low-level code to direct the SNP heuristic.
  • We cover when to run the low-level code transaction and to control the processing sequence with low-level codes.

Introduction to the Low Level Code

The Low Level Code is a way of controlling the heuristic in SNP. You will learn how this interaction occurs and how and where it is configured in APO.

What are Heuristics?

Heuristics have a general meaning, which is important to understand before moving on to what they mean in SAP. We found a nice definition in Wikipedia that we wanted to list here first.

“Heuristic (pronounced /hjʊˈrɪstɨk/, from the Greek “Εὑρίσκω” for “find” or “discover”) is an adjective for experience-based techniques that help in problem solving, learning and discovery. A heuristic method is particularly used to rapidly come to a solution that is hoped to be close to the best possible answer, or ‘optimal solution’. Heuristics are “rules of thumb”, educated guesses, intuitive judgments or simply common sense. Heuristics as a noun is another name for heuristic methods.

In more precise terms, heuristics stand for strategies using readily accessible, though loosely applicable, information to control problem solving in human beings and machines.” – Wikipedia

Heuristics in APO

Heuristics are methods for matching supply and demand. Heuristics exist in both SNP and PPDS. However, in SNP, you have the option of running PPDS heuristics. In SCM, heuristics schedule infinitely, so they are unconstrained planning. This is the opposite of using the PPDS optimizer optimizes against fixed constraints.

Controlling Processing Sequence with Low-Level Codes

There are some ways to run the SNP Heuristic on planning at different levels in the BOM. I will discuss all three of the following settings and one transaction in this article.

  • Found Components
  • Temporary Low-Level Codes
  • Source Determination
  • Low-Level Code Determination

Setting 1: Found Components

One of the important settings in this area is the “Take into account found components in planning run” option on the SNP Heuristic screen, accessed from transaction /N/SAPAPO/SNP01.

SNP Network Heuristic
This setting controls the planning run’s depth on the BOM and relates to the SAP Low-Level Codes product location run sequence.

“…you can also specify that you want the system to take into account all BOM components of the selected products during planning. To do this, set the Take into account found components in planning run indicator. The system then also plans the dependent demand for the products. However, with the location heuristic, the system only plans components that have been assigned to the specified locations . The planning sequence is governed by the low-level codes of the location products, which you determine through the Determine Low-Level Code function before performing a heuristic run.” – SAP Help

Re-determination of Low-Level Codes can be performed by the following transaction /N/SAPAPO/SNPLLC.

What Are Low-Level Codes?

Low-Level Codes sound more technical than they are, and they don’t have anything to do with the technical side of APO, and they are not even really codes. In fact, a better name for them would be “location product run sequence value.”

The word “code” represents a priority value of combining factors such as product type and location. According to SAP, it is “the BOM level and supply chain location for which a location product is situated.”

SAP has the following description of low-level codes on how they work with the SNP multi-level (meaning multi-BOM level) heuristic and subcontracting.

If you do not want to plan all BOM levels using the SNP heuristic, use transaction/SAPAPO/SNPLLC first to define the low-level codes for your version. The SNPlow-level code gives the maximum number of stock transfers and the BOM level of a location product. The low-level codes for Supply Network Planning are determined via transportation lanes and manufacturing levels. For example,

  1. The finished product in the distribution center is assigned low-level code 0.
  2. In the plant following a stock transfer, it is assigned low-level code 1, and…
  3. The component of the finished product in the plant is assigned low-level code 2.

You then run Supply Network Planning in the background (with transaction /SAPAPO/SNP01),selecting the location heuristic for the locations of the supply chain planner as well as the. Take into account found components in planning run indicator. Using low-level codes you can limit the scope of the SNP run to certain transportation lanes and manufacturing levels.” – SCM230

SAP Documentation Translation Required Stat

SAP is beating around the bush a bit here so that I will translate. This means that the heuristic will analyze the supply network and arrange the locations per product in the following sequence:

  1. Finished Good at DC
  2. Finished Good at the Plant
  3. Component at the Plant

Therefore, all DC locations are processed first, then the plants to the DCs, then subcomponents to in the plants, or the purchasing portion of the supply network planning.

This default design makes sense and essentially processes the outlier locations, having the outlier locations requirements processed, which then causes the creation of STRs to be created until they are submitted upon the plants, which causes the creation of purchase requisitions suppliers and production requisitions for the plants.

Directing the SNP Heuristic

Low-Level Codes are a heuristic map to follow as it works through the sequence of product location combinations for processing. The question might be why a sequence is necessary to be set. These are two questions in one. The first is why a sequence is necessary for heuristics to run, and the second is why SAP has chosen to expose the determination of the sequence to the configurator.

  1. A sequence is necessary because heuristics work (as with MRP, DRP, and CTM) processes the overall supply network sequentially. Imagine a list of product location combinations in Excel. This list is fed to the heuristic, and it processes one at a time until it gets to the end of the list. Heuristics treat every location in the supply network as an “island” and only pass adjusted requirements to the supplying locations. If the sequence is not correct, then the inconsistent output will result.
  2. All supply planning applications have some of the sequences which their heuristic goes through for processing. However, SAP SNP is one of the few that I have seen where this complexity is exposed to the configurator. Typically, the sequence is encapsulated by the software. However, SAP has apparently decided to leave the sequence re-determination to the implementing company. This no doubt saves runtime during the SNP Heuristic run that does not require Low-Level Code re-determination and exposes the company to inconsistent planning runs if the company’s complexity is not properly managed.
  3. Adjustments to the default low-level codes are to remove some locations from the SNP heuristic run, something which can also be done when running the heuristic in the background, and this can be seen from the screenshot below:

When to Run the Low-Level Code Transaction

This is important if the SNP Heuristic is only run for part of the supply chain model. Therefore, if a company were to use CTM for some locations and the SNP Heuristic for others, running the Low-Level Code transaction would be necessary.

Running the Low-Level Code transaction is also important if PPMs (and inference PDSs) or transportation master data changes.

Why The Low-Level Codes Should be Re-determined in These Circumstances

The SNP Heuristic first plans the product with the highest low-level code of (a finished product at a customer location, for instance), then the product with the second-highest low-level code of 1 (a finished product at a distribution center), and so on. This ensures that demand can also be fulfilled correctly when a partial model is selected.

Setting 2: Temporary Low-Level Codes

In addition to a particular transaction for Low-Level Codes that I discussed above, there is an SNP Heuristic run transaction /N/SAPAPO/SNPLLC.

The first option does nothing to the pre-existing Low-Level Codes. The second option calculates the codes in a process chain. The third option calculates Low-Level Codes for the selected location and product combinations in the SNP Heuristic. (it is unclear if this works the same way when the Network (for the entire supply network) option, rather than the Location option, is selected.

Setting 3: Source Determination

The Source Determination setting is on the SNP Heuristic run screen. There are three options for this setting, which are listed on the screen shown below.

Setting this to Header Level is used for aggregated planning, where the capacity check is performed at the header resource level of a resource hierarchy. Then disaggregation is carried out in the second step. For most companies, All Levels will be the appropriate setting.

Conclusion

There are three settings on the SNP Heuristic run screen (which can be saved as part of a variant) that control the depth of the BOM planning and Low-Level Codes’ re-determination (or translated into English, the location product heuristic run sequence). This is in addition to the Low-Level Code re-determination transaction. If only the SNP Heuristic is used, then the predicted correct setting for these different configuration areas is the following:

  1. Take into account found components in the planning run (Activated)
  2. Determine Low-Level Codes for SNP Relevant Objects (Not Run)
  3. Temporary Low-Level Codes (Do not use temporary low-level codes)
  4. Source Determination (All Levels)

In a combination of CTM or the cost optimizer and the SNP Heuristic is used, these settings would change, and the correct settings would then be the following (the changed values are in red).

  1. Take into account found components in the planning run (Activated)
  2. Determine Low-Level Codes for SNP Relevant Objects (Run)
  3. Temporary Low-Level Codes (Calculate for current selection before planning)
  4. Source Determination (All Levels)

References

https://help.sap.com/saphelp_scm41/helpdata/en/5b/4789bbf49e1340b7723acbf5d6a08a/content.htm

SCM230