Skip to Content
Personal Insights

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:

  1. 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).
  2. 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. 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.
  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 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?

16 Comments
You must be Logged on to comment or reply to a post.
    • 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.

  • 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?

    ~Florian

    • Hi Florian,

      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.

      Gunter

      • Right,

        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.

        ~Florian

  • hi Gunter,

    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!”

     

    Andriy.

  • 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.

     

    Tom

  • 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.

    • Hi Kimon,

      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.

      Kind regards,
      Gunter

  • Hello Gunter

    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 ?

    Β 

    Thanks

    Manoj

    • Hi Manoj,

      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?

      Gunter

  • Gunter,

    Do BOP functionality works for orders with Product Allocation?

    1. I dont see the product allocated orders in “Monitor BOP Run”
    2. I tried using “Release for Delivery” to see those orders so that I can adjust the quantity. I see those orders, but I see a message “This requirement is impacted by product allocation and cannot be processed” for those orders.

    Appreciate your comments on this.

    Regards,

    Sharath Bashyam

    • Hi Sharath,

      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.

      Gunter