In this post, we talk about one live scenario in SAP. These scenarios are discussed as part of SAP Training Classes. You can use these as examples.
Scenario : Determine Payment Terms dynamically at the Item Level, based on Material Group.
Explanation : In one of the projects, I have encountered a situation where the payment terms should be determined based on the material group. Here is more detailed explanation.
Let’s say that this company sells multiple products ( Wireless Controllers, Access Points, cables and other Accessories ) and any customer can buy multiple products mentioned above using the same sales order. However, they different varied value and represent different cash flow situations. For example, Wireless Controllers typically cost 200,000 USD + , whereas accessories cost 50 $. So, it is not wise to ask the Customer to pay all of them with the same payment terms.
Solution : This problem can be broken down like this. As usual, there are multiple solutions possible for the same scenario and we only talk about one solution to this problem.
Step 1 : Since the problem statement says that we have to have multiple payment terms based on product group, first we need to internally classify the materials into multiple product groups. We can use any kind of categorization used in the material master like SAP Material Groups, SAP Product Hierarchy etc. For this example, let’s stick with material groups which is much simpler to configure.
Step 2 : Now that we have categorized the materials, we now need a way to identify the material as belonging to a particular group at the line item level in the sales order and dynamically change the payment terms. For this there are 2 ways.
- Write code in one of the SAP User Exits that is triggered at the line item level , looks at the material group and based on that look at a mapping table ( say a Z table ) and dynamically change the payment terms ( VBKD-ZTERM ) at the line item level based on the material group ( VBAP-MATKL ). Look at How to identify the technical field names in SAP to understand how I have identified the technical names associated with payment terms and material groups.
- The other easier way is to use SAP Pricing‘s SAP Condition Record. As part of our SAP SD Training, we have learnt that Condition Record has payment terms associated with it. So, we can use this functionality to affect payment terms at the line item level.
Since, condition records is a much more friendly way of doing this ( compared to User Exits ) let’s concentrate on this approach. Here is how to Create SAP Condition Records. A much lesser known fact is that SAP Payment Terms can be made to be part of each condition record. And payment terms associated with a particular line item’s pricing will automatically be made part of the corresponding line item in the sales order. Here is an example.
Let’s create a condition record for M-01 with a price of 250 EUR for the sales organization 1000 and distribution channel 10 using SAP Pricing Condition Type PR00. Along with the price, you can also specify the payment terms as shown below.
As you can see, we have specified a payment terms of 0001. Now, let’s create an SAP Sales Order and see the effect of this on the payment terms in the sales order.
Now that you know how to effect pricing at the line item level using condition record, you can let the pricing team know that they need to create pricing condition records with material group as one of the parameters in the SAP Condition table and set the payment terms accordingly.
Question 1 : What if the pricing for that material is NOT based on material group but we still want to effect payment terms based on material group ?
Question 2 : What is the problem involves the Customer also ? Meaning, the Payment Terms by material group at the line item level ONLY applies to a specific customer master or by a group of Customers ? ( SAP Customer Group )