Skip to Content
Technical Articles
Author's profile photo Andre Dantas

SAP S/4HANA Cloud: Determine Tax Code in Purchase Documents using Condition Technique

This blog post describes the steps to configure the SAP S/4HANA Cloud to meet custom (e.g. new country localization) requirements for Tax Code determination in Purchase Documents using the pricing Condition Technique. This extension scenario is implemented using Business Configuration (SSCUIs).

Business Need

Before we go into the details of the configuration itself, let’s understand the Business Need context.

Problem statement: Tax Code on Purchase Document Item is not being automatically determined or it is being wrongly determined.

Tax Code is an essential attribute of a purchase document item. It is used to retrieve tax rates and other subsequent determinations (accounting determination, tax reporting, etc.). So, to avoid any possible manual user error in this assignment, it must be automatically determined based on the context data (master data coming from the plant, material, etc. and document data).

Main Scope Items (Scenarios) reached by this configuration:

Business and Configuration Flows

See below a simplified business process and application configuration (shown in blue) flows. Thanks Mohamed Shawky for sharing this very useful document.

Simplified%20Business%20Process%20and%20Application%20Configuration%20Flows

Simplified Business Process and Application Configuration Flows

Prerequisites for Configuration

You have administrative access to SAP S/4HANA Cloud and have implementation and configuration experience on the system.

Required Authorizations

Business Role Business Role ID
Configuration Expert – Business Process Configuration SAP_BR_BPC_EXPERT
Tax Specialist SAP_BR_TAX_SPECIALIST
Purchaser SAP_BR_PURCHASER

 

Standard Delivered Content

As part of the standard content for SAP S/4HANA Cloud, SAP deliveries the pricing condition TTX1 (Non-Deductible Tax) that already has a configuration for tax code determination using the condition technique.

More details on this delivered content (as well for your own configuration) can be accessed via the SSCUIs under (Application Area) Sourcing and Procurement, (Sub Application Area) Master Data, (Item Name) Pricing. Screenshots with the relevant content can be found below in section TTX1 – Delivered Content.

Some examples of condition records for a starter pack country Bahamas (BS) are shown below in section TTX1 – Example of Delivered Condition Records. The resulting determination can be seen on Example of Determination from the Delivered Content section.

Then, to demonstrate a possible custom configuration, we quickly show an Example of Custom Configuration, followed by an Example of Custom Condition Records for it and its subsequent Example determination from the customization.

Login for configuration

Log in as a Configuration Expert in your quality (Q) system. From the Implementation Cockpit tab, open the app Manage Your Solution.

Verify whether the local country version is set on the country you wish to configure. If not, you should choose the respective country by clicking on the button Set Country Version, located in the right bottom corner of your screen. For the examples here we are going use Bahamas (BS).

Once the country is set correctly, click on the first option Configure Your Solution. Please keep in mind that a business change project must be open, in order for you to be able to record the changes.

TTX1 – Delivered Content

Once you are logged in for configuration, filter it to (Application Area) Sourcing and Procurement, (Sub Application Area) Master Data, (Item Name) Pricing. Tip: you can also just type “500126” on the search field (Configuration Item ID).

Configure%20Your%20Solution%20-%20Source%20and%20Procurement%20-%20Master%20Data%20-%20Pricing

Configure Your Solution – Source and Procurement – Master Data – Pricing

  • Go to “Step 1 – Set Pricing Condition Types – Purchasing” (ID 101094) and click on Configure button, then click on the Position button and inform TTX1 as the Condition Type. Once positioned, click on the Details button (Ctrl+Shift+F2) and you will see the following screen:

Condition%20TTX1%20-%20Details

Condition TTX1 – Details

  • Now you can go back to the Configure Your Solution and go to “Step 2 – Set Calculation Schema – Purchasing” (ID 101095) and click on Configure button, then select the Schema A7Y001. Double click on the “Control data” to open schema overview and you will see the following screen – notice the condition TTX1 on Step 850:

Procedure%20A7Y001%20-%20Overview

Procedure A7Y001 – Overview

  • Now you can go back to the Configure Your Solution and go to “Step 6 – Determine Calculation Schema for Standard Purchase Orders” (ID 102144) and click on Configure button. Notice here that for Schema Group 7Y10 for Purchasing Organizations, combined with any of the Schema Group for Suppliers, the Procedure will be set as A7Y001:

Schema%20Group%207Y10%20Procedure%20Determination

Schema Group 7Y10 Procedure Determination

  • Other relevant configuration is the access sequence. Go to the “Step 10 – Define Access Sequences” (ID 102889) and click on Configure button, then click on the Position button and inform TTX1 as the Access Sequence. Once positioned, select this line and double click on the Accesses to see the tables of this access sequence – you can also select any specific table and click on the Fields to explore which fields are used for the determination:
    • One very important option here is the Exclusive indicator. We recommend you to set it as true, so to stop reading next tables once you have already found your condition record.

Access%20Sequence%20TTX1%20-%20Overview

Access Sequence TTX1 – Overview

 

TTX1 – Example of Delivered Condition Records

Now you must log with Tax Specialist role.

  • Go to the app Set Tax Rates (Purchasing), inform the Condition Type TTX1, then click on the button Condition Information (Shift+F4), inform the Destination Country (in our example here, BS) and finally click on button Execute (F8). You must see a list of condition records for this country with the tables that contains any value:

Condition%20Records%20TTX1%20-%20List

Condition Records TTX1 – List

  • You can also go back and select to view the condition records by Key Combination (Shift+F5). Select, for example, Taxes: Material, Plant and Origin, then click on the button Choose, inform the Destination Country (in our example here, BS) and finally click on button Execute (F8). You must see a list of condition records for this country for this specific table – notice in the last column the Tax Code:

Condition Records TTX1 – Material, Plant and Origin

 

Example of Determination from the Delivered Content

  • Here I logged with Purchaser role to show a Purchase Order Item created for this country and the relevant organizational structure we have for the standard configuration:

Purchase Order Item – Tax and Pricing details

  • And here, for demonstration purposes only, using the backend system (via a support incident), we could see from the ME23N the Pricing Analysis, with the Access Details for the TTX1.

Purchase%20Order%20Item%20-%20Tax%20and%20Pricing%20details

Pricing Analysis in the backend system

Pricing%20Analysis%20in%20the%20backend%20system%20-%20condition%20details

Pricing Analysis in the backend system – condition record details

 


Example (dummy) of Custom Configuration

ATTENTION! This is a very unreal example, just to demonstrate a creation of a custom schema, with custom access table, with custom pricing schema. Usually, the access tables are created only if there is not a standard table available. And also, you should use Country and/or Company Code as your first fields to make sure this condition records will only apply to your specific scenario – remember that your SAP S/4HANA Cloud could be used in many other countries and company codes.

For demonstration purposes only, we are going to create a new access table with just the material group field and assign this table to a new access sequence, which in turn is going to be used in a new condition type, that is going to be used in a new pricing procedure, that finally will be configured to be determined in replacement of the standard procedure.

Once you are logged in for configuration, filter it to (Application Area) Sourcing and Procurement, (Sub Application Area) Master Data, (Item Name) Pricing. Tip: you can also just type “500126” on the search field (Configuration Item ID).

For all the SSCUIs, remember that you have access to the Configuration Help by clicking on the dropdown option of the Configure button. Read all the documentation to make sure you are following the rules and recommendations (e.g. namespaces).

  • Go to “Step 8 – Create Condition Table” (ID 102890) and click on Configure button. You can create the new table 999 (you an do by copying from some existing table or start from scratch). Then you need to adjust the Selected Fields accordingly.
    • Validity Period is a great option, allowing you to set the condition records validity as time-dependent.

New%20Access%20Table%20999

New Access Table 999

    • Once you finished the configuration, click on Generate (Shift+F4) button to “activate” your new table.

Generate%20Access%20Table%20999

Generate Access Table 999

Access%20Table%20999%20Generation%20Log

Access Table 999 Generation Log

  • On “Step 10 – Define Access Sequence” (ID 102889), click on Configure button (notice it is a cross-client table), then click on New Entries (F5) and create the new access sequence ZTX1, with its specific Accesses (in our example, only access No. 40 with Table 999), and its corresponding Fields (which are automatically copied):

Access%20Sequence%20ZTX1

Access Sequence ZTX1

  • Go to “Step 1 – Set Pricing Condition Types – Purchasing” (ID 101094) and click on Configure button, then click on the Position button and inform TTX1 as the Condition Type. Once positioned, select this condition and click on the Copy As… (F6) button and inform the new condition type ZTX1.
    • Change the Access Sequence to the one we created before (ZTX1).
    • You may optionally change the description, but do not change any other control fields, because they are very important to set this condition as a tax determination condition.

Condition%20Type%20ZTX1

Condition Type ZTX1

  • Now, go to “Step 2 – Set Calculation Schema – Purchasing” (ID 101095) and click on Configure button, then select the Schema A7Y001 and click on the Copy As… (F6) button and inform the new Calculation Schema Z7Y001.
    • Change the condition type on step 850 to our ZTX1 condition created before.

Calculation%20Schema%20Z7Y001%20-%20Overview

Calculation Schema Z7Y001 – Overview – Notice the ZTX1 replaces TTX1

  • Finally, on the configuration side, go to “Step 6 – Determine Calculation Schema for Standard Purchase Orders” (ID 102144) and click on Configure button. We then replace the standard A7Y001 by our new created Z7Y001:

Determination%20of%20Calculation%20Schema%20-%20Changing%20to%20the%20New%20Schema

Determination of Calculation Schema – Changing to the New Schema

 

Example of Custom Condition Records

Now you must log with Tax Specialist role.

For this example, we will use Material Group L001 (Trading Materials), which is the product we will use in the test. Also, we will set the Tax Code as V2, just to differentiate from the previous determination (V1) that was done using the standard configuration.

  • Go to the app Set Tax Rates (Purchasing), inform the Condition Type ZTX1, then click on button Execute (F8).
    • You can then create new Entries, as for example for our L001 Matl Group.
    • Remember that the Valid On date is very important, if you for example wants this determination to be valid only after a given date (example from 1 January 2021 on).
    • Notice that the Tax Code column is the most important one for this condition type.

Create%20Condition%20Record%20for%20L001

Create Condition Record for L001

Example determination from the customization

  • Here I logged with Purchaser role and created a new Purchase Order Item for this country and the relevant organizational structure for our custom configuration:
    • As we could see below, the tax code V2 was determined.
    • Notice that since V2 is not actually maintained in the system, there is no “value” being calculate (but that is just another configuration):

Purchase%20Order%20Item%20-%20Tax%20and%20Pricing%20details

Purchase Order Item – Tax and Pricing details

 

  • Again, for demonstration purposes only, accesing the backend system (via a support incident), we could see from the ME23N the Pricing Analysis, with the Access Details for the ZTX1.

Pricing%20Analysis%20for%20the%20ZTX1

Pricing Analysis (in the backend system) for the new ZTX1


Conclusion

As we have seen above, TTX1 is the standard condition type that is used in S/4HANA Cloud to determine the purchase tax code.

Customers can configure their own determination using the condition technique accordingly to their needs.

By defining and configuring your tax code determination following the suggested steps above, you can customize and then test the tax code determination in your purchase documents. Please always ensure testing your configuration in the quality system, before releasing the business configuration project from the quality system to the productive system.

Check other related configuration

References

(Some) Final remarks

  • First thing you need to do is to plan ahead (based on your current and if possible your future needs \_o_/) what will be your access tables and in which sequence you should perform their reading (from the more specific tables to the more generic ones). Together with that, of course, you need to define the tax indicators for the Master Data (e.g. Tax Indicator for the Material).
  • Some of the other configuration options can also be used here (e.g. Schema Group for Suppliers – to, for example, determine specific Pricing Procedures for a given scenario). Just remember to configure the whole chain of determination that would depend on your new created value(s).
  • If you are not already familiarized with condition technique, make sure you test your configuration results more broadly to avoid unexpected results.

Thank you for reading this blog post. Please send your feedback or collaboration below.

Assigned tags

      16 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Bruno Terlizzi de Renzo
      Bruno Terlizzi de Renzo

      So cool Andre Dantas! It is amazing to see how flexible S/4HANA Cloud can be.

      Very nice article, super detailed and well written!

      Author's profile photo Felipe Gutieri
      Felipe Gutieri

      Excellent information Andre Dantas ! Thanks for sharing such a valuable information !

      Author's profile photo Morne Smart
      Morne Smart

      In the context of S/4Hana CE 2008, Is it possible to add fields to the Sourcing & Procurement Pricing field catalogue? Equivalent to Sales SSCUI 103118 (Change Field Catalog).

      Author's profile photo Andre Dantas
      Andre Dantas
      Blog Post Author

      Hello Morne,

      For Sourcing and Procurement Pricing unfortunately there is no such configuration for the field catalog as it is in the Sales. If I am not wrong it was also not available in the On Premise IMG.

      Sales usually requires more flexibility due to the internal pricing strategies - in Purchase you take the pricing as it is. Of course, that reflects in the creation of other condition types / tables for tax, etc.

      Have you found some specific field needed in the Procurement? Describe a little bit what could be your scenario.

      Best regards!

       

      Author's profile photo Christoph Lehner
      Christoph Lehner

      a side-remark to the Sales Pricing Field Catalog with SSCUI 103118:

      In cloud, *only* extension fields can be added, no SAP fields.

      This restriction (*) will hold true, when purchasing will once go for the extension field scenario, i.e. an extension field in a purchasing document shall become pricing-relevant.

      The reason for the restriction is, that the field transport from the document to pricing needs to be guaranteed. We at SAP development simply wanted to avoid addition cloud logic for the cloud use-case. By the way, the field transport for extension fields is done in a generic way.

      In contrast to cloud, in oP, SAP standard fields can be added by the customer him/herself, which is modification-free, as the underlying DB-table is a (client-independent) G-table. Customer inserts in G-tables are not overwritten by SAP => no modification. For oP, the mentioned field transport has to be done with a BAdI implementation in oP (if no yet done by SAP e.g. via move-corresponding).

       


      And yes, I agree to Morne, that the purchasing pricing field catalog is rather small compared to the (probably many more) possible SAP fields.

      The only possibility is to approach the corresponding product owners or solution managers to get more SAP fields into the field catalog for the upcoming releases. Development can add the fields and check the field transport.

       

      Christoph Lehner, Pricing Development

       

       

      Author's profile photo Andre Dantas
      Andre Dantas
      Blog Post Author

      Thank you very much for your great remark Christoph!

      Very well explained! Almost a blog post itself 😉

       

      Author's profile photo Morne Smart
      Morne Smart

      Hi Andre, I designed an "essential feature" solution in S4HC CE since 3rd party solution vendors and and SAP's add on could not be implemented in the project timeline. I wanted to mirror the sales solution in procurement, but this was not possible since I could not add extension fields to the procurement pricing field catalog. Consequently, I had to re-purpose a SAP standard field in procurement. This is not ideal for at least 2 reasons. First, the field is earmarked for integration with ARIBA in a future project. Secondly the field is in the general data of the product master. The solution requires at least a plant level field. If you need more details PM me. Else, I have voted for  Improvement Request Details - Customer Influence (sap.com)  which has been acknowledged.

      Author's profile photo Christoph Lehner
      Christoph Lehner

      side-remark:

      The introduction of the ZTX1 condition is possible, but would  - strictly speaken - not have been needed.

      Any SAP condition type can point to a custom access sequence, which is regular SSC UI fine-tuning.

       

      Author's profile photo Andre Dantas
      Andre Dantas
      Blog Post Author

      That is true! Anyway, just trying to keep things organized!

      Author's profile photo Irene Gordon
      Irene Gordon

      Great blog ! - for TTX1, is there a way to see what is behind the routine '93' associated with this as it doesn't appear in S/4H On prem.

      many thanks, Irene

      Author's profile photo Andre Dantas
      Andre Dantas
      Blog Post Author

      Hi Irene, in On Prem you can access it via the transaction VOFM.

      Go to Requirements, then Pricing, then choose the formula 93 and click on the icon Source Text (or F5).

      It will open the Include for the LV61A093.

      You can also use for Copying Requirements, Data Transfer, Requirements, Formulas etc.

      Best regards

       

      Author's profile photo Irene Gordon
      Irene Gordon

      Thanks for the reply Andre. Sadly 93 doesn't exist in On Prem, hence my question... I wondered what routine was delivered as Standard in cloud but not available in the On Prem version. regards, Irene

      Author's profile photo Andre Dantas
      Andre Dantas
      Blog Post Author

      Hi Irene, what is your OP version? Eventually this is a new formula introduced recently, so it could be that an older version still does not have it.

      Author's profile photo Andre Dantas
      Andre Dantas
      Blog Post Author

      Hi there,

      Just found an older blog post from Arun Yesodharan / Arun Yesodharan / Arun Yesodharan (profile and linked profiles).

      It is from the OP SAP ERP world, but goes with the same approach. Good to know that some old and good practices are still evolving.

      Automatic Tax Code Determination in PO

      Regards to all!

      Author's profile photo Mohamed SHAWKY
      Mohamed SHAWKY

      Thanks Andre it is very useful blog

      Author's profile photo Andre Dantas
      Andre Dantas
      Blog Post Author

      Hi Mohamed,

      Thank you very much for creating the business and configuration flows. I added the image with them to the blog, so users can have a handy cheat sheet 😉

      Best regards,

      André