Customer demand and stock supply – like sand?
A wide desert, endless sand – in some industries there is never a shortage in supply. Customers order and happily get their orders delivered on-time in full. The ideal scenario of every business.
Most companies are living a different reality: Customer demand is hard to predict and stock supply is limited. Moreover, in consumer related business it is a known fact, that within a planning cycle not every customer will get served in full. Think of the fashion business where a season’s collection is planned: The summer collection delivered in spring must be out of stock in summer to avoid write-offs and scrapping due to overstock.
Therefore it’s a balance to allocate the scarcity to those accounts that have highest priority for your business! Imagine your flagship stores or key-accounts can’t get what they ordered because a lower priority account – fortunately or unfortunately – ordered unexpected high quantities. In those situations you want to protect your stock.
I also figured out while working with Japanese customers that many industries follow this concept of stock protection even for non-seasonal articles: E.g. ensuring that spare parts can always be served for certain channels to avoid costly outages at their key account customers!
Protect your stock – Product Allocation in advanced ATP
I’m going to show you a way to achieve this with the embedded Product Allocation of SAP S/4HANA advanced ATP (aATP). In the past I worked with SAP Apparel and Footwear (AFS) solution that uses the Allocation Run to prioritze customer demand (→Now also in every SAP S/4HANA and part of the aATP family, check Supply Assignment!). This however just looks at sales orders that came in in the same period of the allocation run. Product Allocation works different. Let’s have a look!
1. The classic SAP “First come – first served”
Let’s see that classic ATP with rush orders coming in from all sales channels. The sequence is not managed – which is a realistic scenario.
Now in the above scenario you see what can go wrong. With a supply of 100 T-Shirts for spring/summer season the retail channel ranking lowest as well as the key accounts have taken stock which could have been used for the own stores. Tough luck, let’s try again next season! Wait, how could it look with Product Allocation (PAL)?
2. Product Allocation – possible setup scenarios
In the following picture you see the same sequence but with PAL in place. We keep the same sequence of orders and quantities.
Not ideal yet? More in minus? Yes, I picked the numbers that way! But you can see how the logic works. Every channel – we will see how you define that later – holds a stock bucket and it only consumes from that bucket. That is, if PAL is run without collective allocation. You can easily imagine if we increased the channel stock for own stores and key accounts and reduce for retail, the demand can be served.
Now – at the end of the season we are with an overstock of 20 PC. Not great. So if we could establish a sequence of stock access (priorities!) we might have a better situation. Let’s look at this.
You see two examples. First, we allow Own Stores and Key Accounts to share the stock of the Retail channel. This stock will be accessed if their according stock bucket has been emptied. Second, we establish a sequence where Own Stores can access Key Account stock (and consecutively Retail stock).
And so, we achieve an optimization of the supply situation. Clearly, we should have increased the stock in Own Stores and Key Accounts – also the fact that Retail was quick in placing their orders played against us.
3. The time element
Now that we understood the sequence let’s add another component: Time. ⌚ In PAL the stock is planned per period. And we can choose Day, Week, Month, Quarter, Year. So, the stock buckets are very flexible, however, within one PAL setup (we can have multiple active) one period type must be picked. Note that the quantities planned per period are not material specific….
Wait! How does it work then? Just think of the planned quantities as patterns – so if you have green T-Shirts and blue T-Shirts you might want to assign them same stock patterns to save time in maintenance. In a different place you then assign material(s) to each pattern. Simple!
4. PAL Realization in SAP S/4HANA
Fine, you got the picture now let’s look into the elements in SAP S/4HANA to make it happen! One great thing of PAL is that except a tiny piece of customizing it’s a completely business owned and driven feature. And it’s completely Fiori based. Fast and simple.
It’s just 4 tiles to completely configure and run it. Let’s look at the objects that are required and understand their hierarchy:
Although the SAPSPOT Help is quite comprehensive I found understanding above connections is the hardest part. We look at it one by one:
- Product allocation sequence: This is the top object. Although you start with setting up the PAL allocation object first. The sequence gives you the possibility to prioritze stock access. You define the unit for the planning (e.g. PC, EA, KG, CAR…) and also forward and backward consumption. E.g. if you allow forward consumption the stock you planned in the next period can be consumed by an order which falls into the current period. You specify how many periods forward and back you allow. Of course, only within one PAL object (what I called “channel” before).
- The Sales Sequence Group is a part of the PAL sequence. You define at least one and the order of access within the sequence. In addition, you can define deviations of the forward/backward consumption per group. You can re-order the sequence at any time by up and down buttons. You can see both object in below screen.
3. Sequence Constraint: When you click on a sequence group you will move to the list of constraints. At least one must be defined. Each constraint gets a number, a description and one Allocation Object assigned. Just keep it at 1.0 for you first steps. You set the validity of that object there in a date range and you have 4 status to control the constraint: “No availability” – if the order item matches this constraint it will be rejected, “Not relevant” – the order item will not be matched against it (and it might be matched against the next step if there is one), “Restricted availability” – it will consider you planned quantities, this is your default setting and finally “Unrestricted availability” meaning you don’t carry out PAL for a matching item.
4. Product allocation object: This is what is configured first, and you can create many of them for one sequence. You can also re-use them in other sequences. Here you specify the quantity unit e.g. PC, EA etc and the period type (Day, Week, Month, Quarter, Year) in which you plan. Also, the time-zone to be considered (important if you plan on day or week), the factory calendar and which date in the order to be considered for finding the period-specific stock bucket (see screenshot).
You also set the relevance for SO or STO here. In the “Collective” field you define if you want to have an exact match to your characteristics or allow for collective allocations. More in a second. Further down in the same screen you finally have the characteristics. These are fields from the order document like sales org, sales channel but also item data like material group, promotion, or customer data like hierarchy fields or payment terms. You now pick a combination for characteristics and PAL will check if the order item matches the characteristics exactly. If so, the “stock bucket” is found and will be used in this object. If you allow collective allocations, you can also allow for “wildcard” (#) search (we will see this in the planning). If you choose “No Collective Allocation” it must match exactly. If we choose “Collective Allocation Managed Manually” we can use # but must maintain them in the planning. “Collective Allocation Managed by System” will allow # and generate all possible combinations.
5. Product allocation product assignment: Why do we always talk of product? I guess the background is that the PAL came over to SAP S/4HANA from the APO where materials are unknown. Fear not, when speaking about products we mean materials. This is very simple, just assign as many material/plant combinations as you like to one PAL Object.
6. Product allocation planning: The last activity and here you get the idea of the “#” setting! You The entries with the red box where automatically created by the system (that’s why they are grey) due to my PAL object setting. Of course I can plan individual quantities. A nice thing is also that you can up/download the planning data by Excel. No CSV conversion.Therefore, if an order item is in a sales org 1710 and distribution channel 10 and the sold-to party is located in Japan, the bucket would be 20 pieces in the first period and 25 in the second. If the customer is elsewhere but 1710/10 it could access 10 and so forth.
A bit of customizing is still needed…
Yes, there’s still a bit of customizing but it’s simple. You can find the guideline in the SAPSPOT Help. If it’s not working for you I suggest you enter the sales order, key in a material for which you believe the check should be active and then push the button “Scope of check”.
it will then give you the essential information of the check group and the check rule:
Verify in customizing that you have set this active for PAL.
Practical example with a sales order
Let’s look at an example. We create an SO as shown below. Please check the material, delivery date and the customer.
Now let’s look at what was set in the PAL, I have configured a two step sequence:
Each sequence group has only on constraint with one allocation object. Now the customer I have maintained in group 10 is not the customer of the SO, so it will skip the group 10 and try group 20. Since group 20 has a match for SOrg/DistCh it will verify the planned quantities there. In our example I did not allow collective allocation, which means if a bucket matches but is depleted, then the customer won’t get the stock. This is a good setting by the way to understand how PAL works. Let’s check group 20 and the according object’s planning data:
With 15 (pieces) planned we should be able to allocate the SO completely for 10 pieces. And this is also the case. As expected. We can also see it graphically in the planning data when clicking on the link “Show consumption”:
Nice! 10 pieces consumed and 5 open. Let’s now try to create an identical SO and we assume that only 5 pieces will be granted.
And yes, that’s what happens. If you click on the button “Product Allocation” you’ll get a comprehensive few on the access made and the stock situation.
Before we close, let’s allow forward consumption by one week, so the 15 PC of the next week can be accessed by the customer demand. We now expect full availability of 10 PCs and a deduction of the bucket in the week of 29th by 5 PC. And here’s how it looks with the second SO:
All as expected.