Creating tax groups can be very useful to handle the tax calculation in Brazil for different taxes, such as ICMS, IPI, PIS, COFINS, ISS, Tax Substitution, Withholding taxes and etc.
As taxes rates, bases and other taxes matters are very dynamic in Brazil, you will for sure need to have tax groups maintained in your SAP.

First you have to create the tax groups, then go to transaction J1BTAX (or you can go to SPRO – Financial Accounting (New) – Financial Accounting Global Settings (New) – Tax on Sales/Purchases – Calculation – Settings for Tax Calculation in Brazil – Tax Rates -Define Tax Groups for Dynamic Exceptions)


Then, select the Country BR

Country BR

At J1BTAX, go to Menu: Tax Calculation – Maintain Tax Group

Maintain Tax Groups

Before you select “New entries” let me explain what those fields on J_1BTXGRUOP means:

Tax Groups

In the Red Box – TAX GROUP – You can define groups in the range from 10 to 89. The numbers between 0 and 9 as well as between 90 and 99 are reserved for SAP. These groups should not be deleted. SAP delivers the groups 1, 5 and 97 to 99.
When looking for a tax dynamic exception, SAP will start from the smallest Tax Group to the Higher and stop searching then the 1st combination is found. Take this in consideration, building your groups from the most complex (smallest groups) to the less complex (higher groups)

The table below explains the usage of the tax groups delivered by SAP:

Tax Group Usage
1 MM: ICMS base reduction carrier
SD: ICMS base reduction customer
ISS rates (material-dependent)

5 ICMS, IPI, S.T. material-dependent exceptions
MM: ISS exceptions (dependent on ship-from, ship-to, material)

97 SD: IPI tax laws (based on NCM code)

98 IPI standard taxes (based on NCM code)
SD: IPI tax laws (based on country)
ICMS standard tax rates (based on ship-from and ship-to)
S.T. standard tax rates (based on ship-from, ship-to, S.T. group)

99 Default taxes (based on country)
SD: IPI tax laws (based on tax code)

In the Orange Box – TAX GROUP FIELDS 1, 2 and 3 – You can use between none and 3 possible keys combination to build the tax exception. The fields that are available are:

ASNUM- Service Number
MATNR- Material
MATKL- Material Class, Material Group
MWSKZ- Tax Code
LIFNR- Vendor
KUNNR- Customer
BRSCH- Industry Sector
CITYC- City Code
OIHMTXGP- Tax Group (Oil)
OIHVGROUP- Customer Tax Group (Oil)
OIHCGROUP- Vendor Tax Group (Oil)
USAGE- Tax Calculation: Material Usage
LOC_PR- Location of Service Provider
LOC_SE- Location of Service Provision
LOC_SR- Location of Service Customer
BUKRS- Company Code
WERKS- Plant
MTUSE_MARC- Material Usage (Material Master Record)
MTORG- Origin of Goods
CRTN- CRT Number
INDTYP- Industry Main Type
TDT- Tax Declaration Type
COMSIZE- Company Size
DECREGPC- Declaration Regimen for PIS/COFINS
LEGALNAT- Legal Nature
EXTWG- External Material Group
PRDHA- Product Hierarchy
GPART_KK- Business Partner Number

In the Green Box – CALLING APPLICATION – The ones that are valid for using are:
SD Sales and Distribution – it means that the exception will be valid only for the SD applications, like Sales Orders or Billing Documents for Example.
MM Material Management – it means that the exception will be valid only to the MM applications, like Purchase Orders or Invoice verification.
General – it means that, no matter if it is MM or SD, the exception for this group will be applied.

In the Blue Box – TAXES CHECKBOX – Here you select what are the taxes that the tax group can be used for a tax exception.

The screen above is just one example. You have to figure out with your tax department what would be the best combination to the key fields.

To create a new group, hit “new entries”:
New Entries Tax Groups

Map tax Rate tables to Cond. Tables
Once you have created the tax groups you have to assign tax groups to the condition tables. Go back to the J1BTAX main screen and then to the menu Condition Setup – Condition Mapping – Map tax Rate tables to Cond. Tables:
Map tax Rates to Condition tables

When you maintain Brazilian tax tables, the system generates or changes condition records automatically. In this activity, you specify which condition tables are to be used for a specific tax table. In the case of dynamic exceptions, you additionally specify the condition table per tax group. The system then knows for which condition table (which must be contained in the access sequence) condition records are to be generated.

The assignment of tax tables to condition tables is done with reference to a tax group for: dynamic exceptions for IPI, ICMS and Sub.Trib.; always for ISS, PIS, COFINS and withholding taxes.
Tax rate tables Tax Condition tables

* SAP does not deliver standard Customizing of dynamic tax exceptions. If you create new tax groups, you must specify a new entry for each group you use. In SAP’s standard concept, the condition table is the same for all tax groups. However, in case you need to follow a different concept of Customizing access sequences you can specify different condition tables per tax group. We recommend staying with the standard concept of one tax group per table.

** You can find these entries in the overview page of the Tax Manager’s Workplace (transaction J1BTAX). There you define tax rates for several kinds of taxes.

Let’s take a practical example on how to fill the J_1BVIEWMAP table:
I created the tax groups and I did select 9 of these groups to be relevant for COFINS Values Dynamic Exceptions:
Tax Groups CheckBox

Then, I created 9 entries to map the Tax Rate tables to the Condition tables, each one representing one tax group. You will notice that, the tables that has no tax group assigned, they will have one entry each table and they never change.

Every time when a new tax group is created and if the COFINS checkbox is selected, a new entry has to be created as below:

This idea is valid for all the following tables:

That means, if you have the check box activated to the taxex above, you will have to create one entry to each tax group in this table assigning the table name to the tax group and the correct condition table (349, 346, 382 and so on).

Migrate Tax Groups in Access Sequences
Now it is time to Migrate the Tax groups that you created into the access sequences.
Using the method of Tax Calculating via condition based (CBT), every time a new tax group is created, it must be added in a certain access sequence, automatically by the system through the transaction J1BTAX. The same should occur whenever changes are performed in the tax groups, or even it is deleted.

Go back to J1BTAX main screen and reach the menu: Condition Setup – Migration – Tax Groups in Access Sequences

On the program selection screen, you enter the tax group that you want to include in the update. You can simulate the results of the program by setting the Simulate Only indicator. This is extremely important, since the program makes cross-client changes to your data.

Additionally, you need to specify what type of conversion is to take place:
a. Update access sequences – if you want to update existing steps in the access sequences
b. Insert into the access sequences – if you want to include new steps in the access sequences after creating a new tax group
c. Delete from access sequences – if you want to delete existing steps from the access sequences

If you are creating all groups at once, it is easier select the range from 10 to 89 and you may want simulate first, just to make sure that there are no errors.
Tax Group Into Access Sequence

If it is all green, that means can run without the “simulate” check box active and the tax groups will be added to the access sequences:

You can use the report J_1B_EXT_ACC_SEQ to automatically update access sequences after you have created or changed tax groups for dynamic exceptions. You need to be authorized for cross-client Customizing if you want to modify the access sequences. It is important that you ensure that tax groups are not customized differently in different clients because with each conversion to access sequences, the previous Customizing settings will be overwritten.

The should looks something like this:
Migration Access Sequence results

The result of the run above, is that all access sequences will be updated automatically, check for example below where the different tax groups were added to one specific access sequence:
Acess Sequence MM

Migrate Tax Tables to Conditions
Now you have to migrate the tax tables to conditions to create the condition records. Go back to J1BTAX main screen and reach the menu Condition Setup – Migration – Tax Tables to Conditions. This is the execution of the program J_1B_MIGRATE_TAX_RATES.
Migrate Tax Tables to Conditions

First you have to select the application:
– TX (Material Management)
– V (Sales and Distribution)

Then you will have to select the the Convertion Options:
– Overwrite existing condition records
– Ask in case of existing condition records
– Never overwrite existing condition records

And then finally select the tables, one by one to run the migration.
Note that, the tax groups that you selected as MM will be the only ones that you will be able to run to the application TX and the tax groups that you selected as SD, you will have to run to the application V. the ones that are general, or the tables that has no Tax Group, you will run for both (some exceptions apply).
Table Migration Select Table

The result will be something closer to the screenshot below:
Result of Taxes Migration

In the next post, I will explain how to create taxes exceptions with the taxes groups that you create…

Copyright Notice: © Leandro da Pia Nascimento and SAPBR.COM (SAP BRAZIL) WordPress Blog, 2013 to 2015. Unauthorized use and/or duplication of this material without express and written permission from this blog’s author and/or owner is strictly prohibited. Excerpts and links may be used, provided that full and clear credit is given to Leandro da Pia Nascimento and SAPBR.COM with appropriate and specific direction to the original content.