SAP S/4HANA advanced ATP Product Allocation – One way to prioritize customer demand
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. But you get the idea?
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 SAP 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.
- 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. There is also an allocation rate which is explained here for increased flexibility. 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.
- 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.
- 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.
- 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 SAP 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.
Summary of using SAP S/4HANA adanced ATP Product Allocation
PAL is a very simple to use yet powerful framework that works for working with stock contingents, (complex) order priorities and manages stock efficiently for all companies that need more than just “first-come first served” logic. It can be used for only a few materials that are critical in supply while keeping the rest managed by classic ATP.
One more thing that makes it great is the fact that it can be set up within a few hours and is then completely owned and operated by the sales office using 5 cool SAP S/4HANA Fiori apps.
I hope this article got you excited to try it out – what are your thoughts? Any questions, further insights?
I've read that this feature is not included in the S4 HANA Enterprise license. Do we need aditional licensing for it?
It can be setup in a few hours... sure, if you paid for it. This is should be explicit in the blog, because consultants will check a box and then the company receives a million dollar bill from SAP because of it.
Thank you Joao for adding this information. Definitely recommended to try out new things in the sandbox environment. ? Activating and transporting changes in the switch framework from DEV to PRD should undergo an internal approval process. Good point made!?
Unfortunately not all companies have such internal processes, and SAP is very aggresive in terms of going after these mistakes.
Everything outside the normal license should be clearly identified as such, since the installed license doesn't limit what you can activate (and it clearly should).
I've seen SAP go after a customer for allegedly activating MDG, and in the end it was a bug in the audit report. The arrogance of SAP was astounding throughout the entire process.
In the end of the day, being outside the S4 Enterprise License, I don't see too many customers pay for this. SAP baseline is expensive enough already.
Just to add an additional twist on this, in 1809 aATP and PAL come pre-activated, meaning you don't have to turn them on within the switch framework, and everything seems to work (more or less). Unless you are a lawyer, it's only when you move to production that you find out that there is an additional license fee. It's not a huge fee but kind of a cheap move on SAP's part to not make this more clear and to nickel and dime the customers like this.
Sounds like a really cool addition. As Developer it is not much my focus, but always a good addition to have a look into the next soup-bowl.
What I recognized, is that there is a write-list in between. Maybe you can answer the question. IS this a newly released screen.. if so, why?
do you mean the second-last screenshot in orange/yellow color? That's nostalgic, right?? It's the SAPGUI for HTML which mirrors all non-Fiori/UI5 transactions into the launchpad framework. In that case the trx VA01.
so nothing newly developed:-)
That's great, because I discuss a lot about doing modern ABAP-programming today. Thank you for the answer and hope to see it in action during Teched.
thanks for the nice article! explains a lot!
Just one comment on the below... It might be a bit misleading to consider the planned quantities as patterns. As learned by testing, if multiple articles assigned to the same planned quantities (via sequence/object), they consume the planned quantity together. So, a planned quantity, let's say, 100 will be consumed by 2 different articles like (for instance 60+40). It's all fine and even good, but just different to a pattern 😉
"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!"
Hi Gunter, thank you for sharing the great blog. I was wondering if you have developed a process to best handle sales orders that are placed prior to the material being included in a Product Allocation.
Thank you for your time and willingness to share.
apologies for the late reply - unfortunately I didn't come across this topic yet!
We are running S4 1610. We are trying to run back order processing. No aatp activated. We are trying get BOP to look at line item dates instead of sales order date. But it always goes by sales order date even if you choose the line item date selection. Are you able to tell me if this is not a feature in s4 for standard atp? Or does it require full aatp setup with product allocation? We checked the code and apparently it only looks at sales order date for sales order where for STOs it looks at both.
the BOP is a feature of the aATP. There is a customizing point "Configure business scenario for updating backorders" in the Availability Check area. This - however - is for production planning related purpose.
Thanks for the great blog. Could you throw some light if we have reports or tables that we can refer to check the remaning allocation for a material /customer or any specific combination. The business request is to be able to generate a report ( may be a standard one is available ?) or some tables which we can refer to to find the allocation values which are available at a certain point in time ?
apologies for the late repy. If the above reports don't cover the requirements (particularly the confirmation calculation) you can first try to the query browser and if there's nothing suitable build a CDS view to cover the business requirement? Ideally in the existing S/4HANA query framework. ?
If you believe you need tables you can identify them by a SQL trace at the time you run standard reporting. Hope that helps?
Do BOP functionality works for orders with Product Allocation?
Appreciate your comments on this.
I can't answer your question as I don't know your scenario - however please check:
2343524 - Restriction Note for advanced Available-to-Promise (aATP) in SAP S/4HANA 1610 (BOP comment)
Maybe this gives you a hint if your scenario is covered.
Thank you. I will check.
Great article, thank you Gunter! This adds the context that is missing from the SAP help.
Thank you for the great article. I would appreciate your feedback on the following:
Would appreciate your valuable inputs
Could we call Vehicle Constraint Allocation during Product Allocation at Sales Order?
I mean use Advanced ATP fucntionality, which will look into the Inventory availability as well as the Truck/Vehicle availability
I have another question related to this topic indirectly: if I have my products always available in Plant A and Plant B, but trucks in plant A and Plant B are not always available, could I actually take ATP on the means of Transport (Trucks) instead of on products?
If yes, how? Could I split Sales Order Item (at the Sales Order Save) to two lines based on the availability of the Truck in plants A and B instead of based on the availability of the product itself?
And if yes, how?
We are on S4HANA 2020 if this helps (the latest and greatest SP)
one person posted a blog, but we need wider understanding
P.S. One person posted this Blog https://blogs.sap.com/2020/01/14/new-product-allocation-pal-features-in-advanced-atp-aatp-of-s-4hana-1909-release/
are there corresponding t-codes for these five S/4 Apps for production allocation customizing?
Hi Sajjad Ahmad - just try transaction ATP_IMG. It should then show you all relevant settings of the IMG.
Thanks for your response.
We are using S/4 HANA 1709, Release 002. ATP_IMG does not exist.
Below is a screenshot of the IMG. system.
If you don't see it still, it means aATP is not activated in your system and must be activated in transaction SFW5 (switch framework) as shown here:
Attention: Please check for license implications if you work outside of a sandbox environment. Likely this gives you the transaction I mentioned above.
I appreciate your help.
Under Production Allocation (PAL), I can see following two options. I did activate Product Allocation.
Is there any t-code for below Fiori Apps i.e. Configure product allocation, Manage Product Allocation Planning Data etc.
Sajjad Ahmad I have a little "trick" I use when I don't know the role for a Fiori app: Enter the Fiori apps library and search for the app: "Configure Product Allocation"
Now, in the tab "IMPLEMENTATION INFORMATION" search the section "Configuration". In there is a paragraph called "Business Role(s)". Now you see that the role "SAP_BR_ORDER_FULFILLMNT_MNGR" must be assigned to your user.
Hope this helps!
Thanks a lot.
I am new to Production Allocation.
If I allocate 1000 units to material + Plant + Ship-to of month of July and 500 units for August. I have current stock 1000 units for this material in this specific plant. It does not block 1000 units.
During new sales order creation for this material + plant + but different ship-to, it confirms the sales order qty.
Production allocation Qty is maintained for July & August for following characteristics
Available stock is 1000 on July 21.
Now creates the sales order for material F123, plant 1001, ship-to 9999, it confirms the sales order as stock is available (it ignores the product allocation which has for 1000 units for ship-to 1111).
is it possible product allocation reserve (block) the qty of material for ship-to 1111?
Sajjad Ahmad - yes you can. Please follow the blog in detail and the point you asked is about the "sequence groups". You have to make sure your customer 1111 is part of a determination that 9999 can't access.
It is part of sequence. Product allocation is working fine. Sales order does not confirm the Qty if product allocation is consumed completely for customer 1111 (or partially confirmed depends on availability of Production allocation units in period bucket). I can see product availability is correctly determined from availability screen of sales order.
Here is problem, we have inventory in hand and production allocation for customer 1111 is not consumed completely for current period. Meanwhile we received order from customer 9999, sales order is confirmed for customer 9999 as inventory is available. Production allocation does not block the inventory for customer 1111.
I am trying to understand, does production allocation blocked the inventory for customer (as I am using characteristics plant + Sales org + DC + Division + Ship-to)?
It's great to hear you made such a fast progress. I suggest to try https://answers.sap.com/ to ask your question?
This blog and your responses to my questions were very helpful.
I have another question.
I delete the order, it looks working fine with allocation. But I encountered issue during testing that I deleted the order. It should have update the allocation planning data on backend i.e. release the consumed Qty back to allocation bucket (not sure how to check the available qty in bucket). Now, I tried to create new sales order, Cum. ATP Qty exists but order does not confirm. It looks Allocation monthly bucket has been consumed and does not allow it to get confirm as I increased the Allocation Qty and Order item Qty got confirmed during order creation (VA01).
I found inconsistency in table PAQTYASSGMT.
It seems to me that Allocation consumed qty is not update after deletion of sales order.
Is there any t-code to refresh the Allocation planning data?
Is there any t-code to see available allocation Qty within a Product Allocation planning data?
Thanks a lot for this great, detailed article!
I wonder how Product Allocation in Fiori during sales order processing screen should look like. When try to check and get explanation why less than requested quantity is confirmed (the functionality which will be relevant for the end user) I get this screen and I am not sure if this is normal?
Good day Marija,
thank you for the kind feedback! As you have seen the blog is a bit dated, so I would recommend - if you can - to raise this question in either answers.sap.com or to open a SAP support message. It could be also a bug.
Thank you and kind regards,