Product Allocation in advanced Available-to-Promise
In a world in which demand often succeeds supply, allocations can help to ensure that a single customer or a customer group cannot consume the entire available quantity. Not only available quantity can be considered and treated as a limited resource that should be allocated – constraints in production or transport capacity can also be considered when confirming orders, a scenario the world faced in 2021 when production lines and plants were closed and when transport capacity in certain countries was a bottleneck.
To calculate reliable order confirmations in such an environment, Product Allocation (PAL) in advanced Available-to-Promise (aATP) in SAP S/4HANA can be used. This helps to improve customer service levels by considering, from the outset, the current supply and demand situation and constraints when executing availability checks and generating confirmations.
To achieve this, allocations can be applied twice during an ATP check: the first check with PAL applies sales constraints on the actual request to limit it to a defined maximum quantity. Capacity constraints are applied during a second check with PAL after the product availability check (PAC).
In aATP in SAP S/4HANA, the following apps are available and can be used to set up Product Allocation:
- Configure Product Allocation
- Manage Product Allocation Planning Data
- Manage Product Allocation Sequences
- Assign Product to Product Allocation
- Product Allocation Overview
e-bike use case
Anybody who wanted to buy an e-bike in recent years experienced a situation where demand exceeded supply significantly, resulting in long delivery times. Although frustrating for the consumer, the situation provides a wonderful use case for product allocation and we will leverage it to explain the product allocation concept.
In our example, we cover sales allocation by applying constraints according to sales organization and sales district as well as customer-specific allocations per sales organization. We want to allocate quantity to customers that can be used for confirming customer-specific orders but if this is not sufficient, customers can also use allocation from a general pool which is defined per district, a concept referred to as “OR logic”.
Furthermore, our example considers transport constraints as the trailer used to deliver e-bikes is also a limited resource. In addition, the battery pack in our example play a crucial role as battery packs are also limited resources. Only when both trailer and battery can be confirmed from an allocation perspective (known as “logical AND”) can the e-bike be confirmed during an ATP check.
Product Allocation Object
A product allocation object is defined using the Configure Product Allocation app and comprises important aspects like the quantity unit in which allocation quantities are planned, the period type which defines the period size of planning or the purpose which defines for which business document type the allocation is to be considered. Last but not least, characteristics representing header or item data of a business document can be chosen. Those characteristics enable the system to identify the characteristic value combination which is used to check availability for a business document against product allocation.
In the following example we can see that the allocation planning is done based on the size of a month and for two characteristics, Sales Organization and Sales District.
Our second allocation object, EBIKE_SALES_SPECIFIC_CUST, uses a different set of characteristics, Sales Organization and Sold-to Party. One element both allocation object have in common is their Date/Time aspect as both have a planning period of a month and the ATP checks against planning based on the requested delivery date.
As we have now covered the sales aspect, we can take a closer look at capacity. Here, as mentioned, we have two constraining aspects: one is the trailer to deliver the e-bike, the other is the battery pack. For the trailer, the allocation object is defined so that the goods issue date is used as the check date time type because we need the trailer to have capacity at the goods issue date. For the battery, on the other hand, it is important that we have an allocation on the material availability date because this is the point in time when picking starts and we need to have batteries on the shelf. Trailer and battery both use period type Day.
Product Allocation Sequence
Now it is time that the different product allocation objects we have defined are brought together – this function is fulfilled by the product allocation sequence.
We can see that our e-bike allocation sequence consists of two sequence groups for sales in a specific order. This order ensures that first, we try to consume the requested quantity from the specific allocation per customer but if the allocation quantity is insufficient there, then the second allocation will be used during the ATP check instead. Hence, important customers have two pools, while the other customers can use the quantity from the general pool.
The capacity sequence section contains a single sequence group which represents transport capacity. This group comprises two allocation objects, as can be seen after clicking on the respective line – one for the trailer, one for the battery. During the ATP check all constraints within a sequence group are considered (AND logic).
This sequence group is configured for forward consumption of two check periods, this translates to two days. There is probably a trade-off between allowing a big order item consuming too much transport capacity and satisfying the customer. In this example, we assume that a customer ordering a high number of e-bikes would accept a delivery stretched over more than three days. But for us as a company, this allows the transport capacity to be shared among concurrent requests.
So far, we have done the setup within a few steps but we have not yet allocated quantity to each period. To do so, we use the Manage Product Allocation Planning Data app where we can create planning data for each product allocation object.
You can see in the first screenshot that various characteristic values, including monthly allocations, have been specified for the customer-specific allocations. For example, the Inlandskunde DE1 in the Dom. Sales Org. DE has an allocation of 10 pieces for September and 10 pieces for October:
The next screenshot shows the trailer capacity where the country of the ship-to party is the characteristic value that is used to find the right allocation. You may wonder why there is a gap between September 9 and September 12 although the planning is for period type Day? This is because during the definition of the product allocation object, the working calendar for Germany has been set and only working days are therefore available for planning maintenance.
One step is missing before the allocation is considered during an ATP check: the missing step is the product assignment.
The Assign Product to Product Allocation app is used to assign a product location combination to product allocation. The app allows you to assign one or multiple products location combinations to a product allocation sequence which makes particular sense as they share the same resources as we have modeled in transport capacities. If the location is not used like in the example here, the assignment is valid for all locations where the product is maintained. You can use validities to add a certain product for a specific timeframe only:
Once everything is set up, we can review the confirmation calculated by the ATP check. The sales order item has been entered and the other relevant characteristics of the sales order have been filled. The Review Availability Check Result screen is displayed once the check has been triggered, a partial confirmation is shown:
You can use the Intermediate Results screen to navigate to the sales allocation details and we can see that the allocation for specific customers is used as the request is limited to 40 pieces. The explanation displays all needed information to understand why this allocation object has been used and which planned month is consumed. The Order of Check column details the sequence in which quantity was consumed, with Pivot being the first (or starting) period to consume:
Navigating further into the explanation of the capacity allocation helps us understand that two product allocation objects were checked thanks to AND logic being applied resulting in the minimum quantity of both product allocation objects can be used for confirmation.
Like in the sales allocation explanation, you can dig deeper to see exactly how the allocated quantity was consumed during the check. The following screenshot shows consumption happened as of the goods issue date on September 15: seven pieces were consumed on September 15 and an additional six were consumed on September 16. We see that additional eleven pieces on September 15 respectively additional four pieces on September 16 would have been possible if only this trailer constraints would apply. But here, the AND logic stepped in described earlier. Both product allocation objects which are part of the sequence group are considered and hence we experience a restriction to seven pieces:
When the sales order is saved, the PAL quantity assignments are persisted so that subsequent ATP checks can consider the consumed quantities. Product Allocation offers two main possibilities to make this consumption transparent. In the Manage Product Allocation Planning Data app, you can find the consumption data by selecting the relevant characteristics value combination and clicking the Show Consumption pushbutton:
The Product Allocation Overview app offers more sophisticated monitoring of product allocation objects as you can identify underloaded and overloaded periods but also drill down into the consumption data for product allocation objects:
You can integrate Integrated Business Planning (IBP) and aATP for product allocation. You may want to take a look at Eric Simonson’s blog Allocation planning in today’s constrained world where he describes how IBP and aATP help you manage allocations.
Questions? Ask here.