Find out how to make your Available-to-Promise (ATP) processes in R/3 work even better by controlling how you use safety stock. Then see how you can further tweak ATP checks with the product allocation tool.
Key Concept
The Available-to-Promise (ATP) quantity is the stock available to fulfill customer orders. A critical component in logistics planning, ATP links planning and procurement processes with the order delivery dates. Companies use ATP logic to accurately promise shipments and better control inventory planning and logistics operations.
Unpredictable and extraneous factors cause supply issues, such as order backlogs. In today’s competitive
environment, you must anticipate these issues to avoid significant business operation delays. One way to achieve this is
through Available-to-Promise (ATP) checks — but did you know you can enhance this tool for even better performance?
Two processes can fine-tune your ATP checks. The first involves selective use of safety stock, which is the stock
you always should keep on hand as a buffer for variances in demand or supply. This enables you, for example, to fulfill
unexpectedly high demand or cover orders when you have production delays. Using ATP, your company could use safety stock
only for certain preferred customers or special customer groups.
The second process uses the product allocation tool. R/3 provides this tool to help organizations address and
control supply problems early by providing visibility into how the system allocates products. You can configure product
allocation so that the system triggers it after the normal ATP check to validate against the open product allocation
quantity available. The system then checks the allocation for a specified period of time, for example, each week.
A simple user exit technique can control the availability of safety stock. ATP functionality in R/3 allows you to
build allocation rules to divide stock based on customer allocations. You can implement safety stock and product
allocation either independently or together, depending on your business needs.
Although the changes and settings mentioned in this article are specific to R/3, you also can apply them in SAP
Advanced Planning and Optimization (APO). For more information about safety stock and product allocation in APO, refer to
the SCM Expert articles listed in the sidebar, “Product Allocation and Safety Stock in APO.”
Process 1: Selectively Use Safety Stock Based on the Customer
Consider a scenario in which a company wants to selectively use safety stock only for high-priority customers. You
cannot include or exclude safety stock based on the customer group or customer number with the standard ATP check feature
in R/3. User exits and customized tables enable this feature.
To do this, you must configure the checking groups that define what the ATP check looks for in the system. First,
replicate existing checking groups for which you want to selectively use safety stock with new checking groups via
Customizing transaction OVZ2 (Figure 1). Then create new checking groups that include
safety stock as part of the ATP check.

Figure 1
Define new checking groups
For example, in Figure 1, I replicated the existing checking group 02, then created a new
availability check group ZZ as a copy of 02. Based on the material master data setting,
the system assigns the default availability check group to 02.
Change the defaulted availability checking group 02 to ZZ by building the
logic in the sales order user exit MV45AFZZ, Business Add-In (BAdI) MOVE_FIELD_TO_VBAP,
to include safety stock in the ATP check. By using a customized table, the system changes the availability checking group
from 02 to ZZ. This in turn triggers the scope of the check for checking rule
A (sales order), thereby including safety stock for the priority customers. Typical columns in the customized
table are sales organization, distribution channel, division, customer group, old availability check, and new availability
check.
Finally, create new availability checks for the new checking group via transaction OVZ9.
To enable the feature, you need to replicate the existing availability checks to create new ones with the Include
safety stock indicator checked (Figure 2).

Figure 2
Include safety stock in the availability check
Process 2: Modify Availability with Product Allocation
Product allocation, available in all releases of R/3 above 3.1, allows companies to control unpredictable
demand situations by assigning allocation quantities based on a predetermined set of criteria. Product allocation further
controls how the system fulfills customer orders. When you maintain the product allocation procedure in the basic view of
the material master, product allocation determines whether the system passes or fails the ATP check for an order.
For example, you could use this process in business scenarios when you want to allocate specific quantities
by geographical location to ensure that all areas receive an appropriate number of items in high demand. Say you have 225
widgets and you want to allocate 100 widgets for your New York customers and 125 widgets for your Boston customers. If you
set the New York product allocation to 100 widgets and you receive a New York order for 110 widgets, the order fails the
ATP check, even though you technically have enough widgets in stock.
Use product allocation through the planning hierarchy settings in customization for ATP checks during sales
order entry. The system automatically checks the product allocation values while performing the ATP check. First, the
system checks the sales order quantity for availability through the normal ATP check. If a confirmed quantity is
available, the system checks if the product is under a product allocation plan. If it is, the system checks the confirmed
quantity against the product allocation values before confirming the sales order.
Now you enhance the product allocation feature by following these steps to change the customization
settings. First, create a product allocation procedure. In transaction OV1Z, create a test product
allocation procedure named SCMPROD. This is the value that you set in the material master basic view to
activate product allocation (Figure 3).

Figure 3
Set the values for the product allocation procedure
Next, create an allocation object, which the system uses to store allocation information in the planning
hierarchy (Figure 4). You define this through transaction OV2Z. The planning hierarchy
defines the combination of the parameters from the Sales Information System (SIS) info structure that the system uses in
product allocation.

Figure 4
Create an allocation object
After you create the allocation object, create an allocation hierarchy by assigning the allocation
procedure with the SIS. This helps the system determine the product allocation object, which in turn determines the
planning hierarchy.
In transaction OV3Z, add the standard SIS for product allocation, S140, in the Inf … (info structure) column (Figure 5). In
the Mask column, enter the masking character, a formatting character for each SIS that you use for
default entries, to separate the other allocations in the SIS. The masking character is important when you define the
allocation plan, which occurs later in the process.

Figure 5
Develop an allocation hierarchy
Next, set the consumption periods (Period) for which you want to set the allocation
numbers (Figure 6). The consumption periods signify the periodicity the system uses to manage the
allocation numbers. You associate these with the SIS through transaction MC7F. You set the number of
periods before the product allocation date in the backward consumption column (Bwd cons.) and the number
of periods after the product allocation date in the forward consumption field (Fwd cons.). In my example,
I set the period to M (monthly), although you can set this for any time period depending on your business
requirements.

Figure 6
Determine consumption periods
The final configuration step is to set the control for the product allocation in R/3 via transaction
OV4Z (Figure 7). Here you link the product allocation object with a validity date and a
conversion factor. In process scenarios where you use product allocation for a component in the sales bill of material
(BOM) of the sales order material, the conversion factor changes the sales order units into BOM units for determining the
product allocation.

Figure 7
Assign product allocation controls
For example, if a material MAT requires three units of component MAT1, then you set the conversion factor
to 3. The system then checks the product allocation for sales order
quantity multiplied by three for that component.
To activate product allocation, make sure that you first check the allocation check box for the relevant
requirement type, and then select the check box for the schedule line category. You select the requirement type setting in
transaction OVZ0 and the schedule line category settings using transaction VOV6.
After you complete the configuration steps, you create the planning hierarchy. Go to transaction
MC61 in R/3 or follow menu path SAP Menu>Logistics>Logistics controlling>Flexible
planning>Master data>Planning hierarchy (Figure 8).

Figure 8
Create planning hierarchy
The Proportion column indicates what percentage of the planning level the allocation
object determines. Say the planning is done at a product group level (e.g., printers) with inkjet and laser printers as
the products. The proportional factor then represents what percentage of the product group (printers) each of the products
(inkjet or laser printers) indicates. The system defaults the value to 0. In this case, my example
product SCMPROD makes up the entire product group, so I assigned it to a proportion of
100.
Next, define the planning type, which is a customized view of the info structure. Go to transaction
MC8A to associate the info structure with the planning type. As shown in Figure 9, you define a
new planning type ZZZZ and associate it with info structure S140. The standard R/3
planning type for S140 is COMMIT. This setting is part of standard configuration in R/3.

Figure 9
Create planning type
Once you define the planning type, create the actual allocation plan through transaction
MC94. Follow menu path Logistics Information Systems>Planning>Tools>Maintain planning
types. Enter the planning type you defined in transaction MC8A. Press Enter and the system
displays the screen shown in Figure 10.

Figure 10
Create an allocation plan
When you click on the Active version button, you can maintain the values for the product
allocation plan through the planning table as shown in Figure 11. For example, if you create a sales
order for a quantity of 10, the system first checks for ATP quantity. If you have set product allocation for this
material, the system checks against this quantity in the planning table.

Figure 11
Maintain allocation values in periodic buckets
In Figure 11, the screen shows that 100 pieces of the item are available, so the system
confirms the order. If the order quantity were 110, the system would fail the ATP check.
Product Allocation and Safety Stock in APO
Recent SCM Expert articles address product allocation and safety stock in APO. While the principles for these tools are the same as for R/3, the technical setup differs. For example, in SAP APO, you also can use the product allocation feature in conjunction with stock transport orders. To read more about APO functionality, consult the following SCM hub in SAPexperts:
Ganesh Sundaramoorthy
Ganesh Sundaramoorthy is a logistics consultant with more than seven years of consulting experience. He holds a bachelor’s degree in chemical engineering and a master’s degree in business administration. He has worked in high-tech manufacturing, the watch industry, and retail.
You may contact the author at ganesh_s01@infosys.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.