CRM and CX Blogs by SAP
Stay up-to-date on the latest developments and product news about intelligent customer experience and CRM technologies through blog posts from SAP experts.
Showing results for 
Search instead for 
Did you mean: 
Hello Everyone,

Very often i get questions from partners in different forums related to issues with article synchronization in SAP Customer Checkout from SAP BusinessOne because of different tax codes handling in their SAP BusinessOne localization. So I am writing here a blog post providing you exactly how does this work and some trouble shooting.

First verify the below mentioned things to be sure that you are facing article synchronization issue with regards to tax codes and not something else
1) Synchronization in general is working. For example customer synchronization is working.
2) You have maintained the right PriceLists in SAP Customer Checkout. We do not synchronize all articles from SAP BusinessOne to SAP Customer Checkout but only those articles which are added to the Pricelist. More about this in the blog(coming soon)
Example: If in SAP Customer Checkout you have maintained Pricelist ID as "100" and there is no Pricelist in SAP BusinessOne with the ID "100", then nothing will be  synchronized.
3)The tax codes returned from SAP BusinessOne during article synchronization is maintained in SAP Customer Checkout.
Example: If SAP BusinessOne returns tax code A11, and there is no A11 tax code maintained in SAP Customer Checkout, then this article will not be synchronized in SAP Customer Checkout.

If these general issues are not the cause of article synchronization problems, then probably you are facing the issue because of different tax code handling in your SAP BusinessOne localization than expected from SAP Customer Checkout. More specially for your localization the tax codes for an article are not maintained in article master data.
Lets first see how does it work in general and then we talk about potential solutions when tax codes are not assigned to article master.

When SAP Customer Checkout performs article sync from SAP BusinessOne, it expects that for each article, there will be a tax code returned from SAP BusinessOne. Something like example below. You can check this in SAP BusinessOne Integration Framework(B1if) monitoring during article synchronization.

Article 1
Article 2

Now from where do we read this A1, A0 in SAP BusinessOne. In initial versions of SAP Customer Checkout B1if services for integration, we used to read the database column VatGourpSa from table OITM. This field is also shown in the SAP BusinessOne user interface for Article data, where the end user can maintain A1, A0 etc.
Later based on the feedback from many partners specially from South American countries we enhanced this logic.
For the below mentioned countries we read the field TaxCodeAR from table OITM and return is as SalesTaxCode. If the country is not from the below list then we read the field VatGourpSa and return is as SalesTaxCode. This enhancement was made in SAP Customer Checkout B1if services version Version 3.7.85 onwards. So if it is not working as explained above then kindly check your SAP Customer Checkout B1if services and update if necessary from the SAP Note 2163033

Country list for which the field TaxCodeAR is used
AG Antigua/Barbuda
AI Anguilla
AR Argentina
BB Barbados
BO Bolivia
BR Brazil
BZ Belize
CA Canada
CL Chile
CO Colombia
CR Costa Rica
DO Dominican Republic
EC Ecuador
GT Guatemala
GY Guyana
HN Honduras
HT Haiti
JM Jamaica
KY Cayman Islands
LC St. Lucia
MX Mexico
NI Nicaragua
PA Panama
PE Peru
PR Puerto Rico
PY Paraguay
SV El Salvador
TT Trinidad, Tobago
UY Uruguay
VE Venezuela
VI American Virg.Islnd


When in your SAP BusinessOne localization, tax codes are not assigned to article master data, then article synchronization will not work out of the box. If your customer use-case is simple enough that one article has a tax code and tax codes do not change based on delivery address or this is not a valid scenario for your customer then there are various ways to solve the tax codes sync issue for an article. I have explained some of them below.
1) Change the SAP delivered B1if services
2) Maintain the tax codes in the database field VatGourpSa or TaxCodeAR
3) Use the SAP Customer Checkout B1if services extension concept
4) Develop SAP Customer Checkout plugins to handle it.

1) Change the SAP delivered B1if services
This approach is not recommended. It is not recommended and allowed to change SAP delivered code.
First of all in general it is not possible to change SAP delivered SAP Customer Checkout B1if services because they are read only. However there might still exists ways to achieve it.
You must keep in mind the next update of B1if or SAP Customer Checkout B1if services will overwrite your changes.

2) Maintain the tax codes in the database field VatGourpSa or TaxCodeAR
Once you enter the tax codes in these database fields, your article synchronization will work.
But you need to think about next B1 updates or if this is a feasible approach for your customer.
When new articles are created or articles are updated, these database fields might be affected.
On a personal level i do not recommend this approach for the above mentioned reasons.

3) Use the SAP Customer Checkout B1if services extension concept
SAP Customer Checkout B1if services has an extension concept. Using this extension concept you can change the payload this is send back to SAP Customer Checkout. Hence you can change the payload
from [default Payload when VatGourpSa or TaxCodeAR is empty]
Article 1
to [new Payload using extension concept]

So for example you can create a UDF for articles in SAP BusinessOne, and in that UDF your customers can maintain the taxcode for articles and using the extension concept you can send the data in the UDF back in tag <SalesTaxCode> instead of an empty tag.
Our extension concept is explained in a very detailed way and these documentation are available in SAP PartnerEdge. Screenshot below. We also have examples where exactly these reading of UDF and setting it as SalesTaxCode are done. I hope they help you to build your own use-cases.
You ofcourse need basic B1if skills to use these extension points and develop your own scenario.
Extension Point to use: sap.POS.FetchMaterialList_Output

For this option, you will also find the SAP community question and answer very useful.
gunther.sandtner2 from our Support has explained this with very nice screenshots.
Also simple case of just 2 taxcodes and multiple tax codes are explained in a easy way.
Credits to Gunther Sandtner for this.

4) Develop SAP Customer Checkout plugins to handle it.
You can also develop SAP Customer Checkout PlugIns to handle the incoming call from SAP BusinessOne and react accordingly. You need experience with SAP Customer Checkout PlugIn development. Also if you have 500 PoS then you need to maintain this PlugIn in 500 PoS, you need to keep your PlugIn up-to-date. Anyways maybe your use-case is quite specific and hence maybe this solution might still fit your needs.

So in this blog you have learnt about article synchronization between SAP Customer Checkout and SAP BusinessOne. I hope you can this information useful.

Feel free to share your comments and give feedback about the blog.

About me: 
My name is Bikash Bansal. I work for SAP SE, Germany. My current role is of Product Owner for SAP Customer Checkout.
You can find more blogs from me about SAP Customer Checkout here  and you can watch SAP Customer Checkout product videos here

About gunther.sandtner2. He works for SAP, Ireland. He is a long time member of SAP Customer Checkout product support team.