CCH® SureTax® Integration for SAP Technical Integration Guide
Updated: August 22, 2022
Chapter 1 - CCH SureTax for SAP
Overview of SureTax for SAP Integration
This document is intended for developers and system integrators who are implementing CCH SureTax ("SureTax") with SAP versions 4.6X, 4.7X, ECC5.0 and ECC6.0. The SureTax web services allow SAP users to communicate with the SureTax application to perform tax related processing (e.g. finding CCH Tax Jurisdiction Codes "Geoblocks" for an address, calculating sales and use taxes, recording tax liabilities in SureTax, etc.).
SAP developed a standard tax interface framework to support the integration of third party tax systems such as SureTax. Communication between the SAP system and third party tax systems is established using SAP Remote Function Calls ("RFC") and SAP Transactional Remote Function Calls ("tRFC"). SureTax provides a web service interface which allows ERP systems such as SAP to connect and consume the services provided by the advanced tax calculation engine of SureTax. To facilitate connection between SAP's RFC interface and SureTax's web service interface, CCH has developed the SureTax Adapter for SAP which is a completely certified integration with SAP. In addition to providing a technology bridge between the SAP RFC interface and the SureTax web service interface, the SureTax Adapter serves a vital translation function which matches the SAP data to the correct data elements in the SureTax web service messages.
SureTax supports real time sales tax calculations and provides highly accurate jurisdictional boundary information for multiple business entities and/or divisions from multiple ERP system modules, including the SAP SD, MM, and FI modules. The procedures by which the SAP system exchanges data between these SAP modules and the SureTax system are described in detail in this document. The SAP - SureTax interface will support advanced customer billing and procure-to-pay activities initiated by the SAP system.
Sales and Distribution ("SD") Module - Customer billing activities that include sales orders, quotes, service contracts, and customer billing transactions that are processed within the SD module of SAP.
Materials Management ("MM") Module - Procure-to-pay ("P2P") business processes related to supply chain are also supported by the SAP system as each line item of a purchase order ("PO") or A/P invoice can be processed by the SureTax as a part of the MM module of SAP.
Finance Accounting ("FI") Module - The system integration also supports the recording of tax liabilities in the SAP general ledger. It also supports the taxation requirements related to A/P invoices not matched to a PO.
The CCH SureTax Adapter must be installed at where SureTax is stored for the SAP RFC tax interface to work with SureTax.
The system integration features provided by SAP include the Standard Tax Interface with the ability to connect to standard external tax calculation systems. By leveraging these SAP system integration capabilities, SAP users can pass the required data to SureTax for determining highly accurate tax jurisdiction boundaries, calculate taxes, as well as receive the calculated results back in the SAP system for real time consumption where needed. The standard SAP tax interface is designed to extract data from the various modules of the ERP system (e.g. vendor master tables, material master tables, purchase orders and invoice documents, etc.) and pass this data to SureTax. Typical transactions which utilize the Standard Tax Interface to communicate with SureTax include master data address maintenance to retrieve the appropriate geoblock and order and invoice processing in the FI, MM, and SD modules to
retrieve the proper tax rates and tax amounts for each line in a transaction. The tax interface process also updates the SureTax sales and use tax history files with the appropriate tax information for legal reporting purposes.
Introduction to SureTax
SureTax is the only third party tax package that has three modules that calculate: 1) sales and use tax; 2) communications and 3) energy (utilities) tax liabilities in the US and Canada. These modules are used to set up collection obligations and configure tax rules based on product lines as well as applicable customer exemptions or procurement related purchasing exemptions to support all three types of taxes.
Technical Overview
The SureTax system is a Software as a Service ("SaaS") solution that runs on the cloud. The CCH SureTax system can be used for tax calculation of product and services on a "real-time" basis by submitting web request/response messages via Internet services using HTTPS POST or SOAP.
For web requests submitted via HTTPS POST, the data should be formatted using either JSON format. The response format type is the same as the request format. For requests submitted via SOAP, responses are provided in same format as the request.
Please note that the current implementation is synchronous, where a response is provided for each request submitted. Each request can contain one-to-many items (transaction records) which can correlate multiple customers and/or invoices.
Web Services
SureTax provides multiple web services which allow the users to communicate with the calculation engine to perform a particular task within the SureTax application (e.g., calculation of tax liability, finding the geoblock for an address, etc.). In order to perform these tasks, the ERP system (SAP) consumes the services. Each of the SureTax web services are described below:
Sales/Use Tax Request - Standard documents from (SD, MM, FI) which calculates tax estimates on the sales order, PO, quotes etc.
Finalize Request - will write the final transaction from the Sales and Use Tax Request webservice when the document is posted in FI. For purposes of this manual, we will consider this webservice the same as the Calculate Request webservice detailed in the previous paragraph.
UnattributedReturnRequest - Credit memo documents related to merchandise returns or vendor related credits from (SD, FI)
TaxAdjustmentRequest - Tax only adjustments from (SD, FI)
A SOAP (Standard Object Access Protocol) API is used to exchange structured information in the implementation of web services. With the SOAP API, the request interface is an object in your application's native programming language. SOAP clients, which are available in different programming languages, can be used to generate business- object interfaces and network stubs from a WSDL (Web Services Description Language) document. Most modern software languages have SOAP toolkits which generate native programming code for the SOAP consumption. Your application can process these generated object properties, and it can send and receive the data by calling the object methods.
SOAP clients can handle the generation of the SOAP request, send the data to the SureTax application, and then convert the data back to the programming interface so that you can use the objects in your application.
The SOAP API schema defines the SOAP messages that you can use to access the SureTax calculation logic.
Outside of the credentials used for API access, there is no security built into the SureTax's Services infrastructure. Since the Services are going to be consumed within your infrastructure, this should not be an issue.
The URL's that are available for the SAP integration to SureTax are provided below. Please note the 3.8 version the SureTax web services was certified by SAP with CCH Adapter, version 3.0
- 3.0 version is [http://servername/website/Service.svc]
System Integration of SAP to SureTax Adapter
CCH developed the SureTax integration program for SAP ("CCH Adapter") to facilitate the communication between the SAP system and SureTax. Fully certified by SAP, the SureTax Adapter integrates SureTax web services with the standard SAP tax interface to exchange detailed transaction data and calculated tax liabilities.
The CCH Adapter for SAP requires the installation of SAP's .NET connector (version 2) to enable technical connectivity to Windows operating systems. This program has software prerequisites that are described in Chapter 2 of this document.
The following features and capabilities are provided within the certified CCH Adapter with SAP:
- Compatible with SureTax Version 2.0 Web Services, or higher
- Compatible with SAP R/3 4.6; SAP R/3 Enterprise 4.7; SAP ERP ECC 5.0, and ECC 6.0 (all compatible versions hereafter referred to in this document as "SAP", unless specified)
- Enables tax calculations for transactions created in the following modules of SAP:
- SD - Sales and Distribution
- Sales Quotations
- Sales Orders
- Service Contracts
- Billing Documents
- FI - Financial Accounting
- General Ledger
- Accounts Payable
- Accounts Receivable
- MM - Material Management
- Purchase Order ("PO")
- Logistics Invoice Verification ("LIV")
- SD - Sales and Distribution
- SAP Jurisdiction Determination feature with enhanced functionality using SureTax address validation logic.
- Tax per Document method (introduced with SAP version 4.6A, this is the preferred method)
- Maximum Tax Per Document capability (for SD only)
- CCH SureAddress Address Validation software can be consumed within the SAP master address tables
- Separate structures for header, item and jurisdiction input and output fields
- Version Management: monitoring the current CCH Adapter version being used.
This document describes the mapping that takes place between SAP R/3 fields and SureTax System Input and Output values. SureTax System is organized hierarchically. A single data file may contain multiple batches, invoices, and distribution lines. An element value set at the batch level is passed down to the invoice and distribution line levels, unless overridden at a lower level.
The tables in the Appendices of this guide provide data definitions of the SAP-SureTax integration program (CCH_Adapter).
- How SAP fields are mapped to Invoice/Order-level Input.
- How SAP fields are mapped to Line-level Input
- How SAP fields are mapped to Invoice-level Output.
- How SAP fields are mapped to Line-level Output.
SAP-SureTax Integration Architecture
See the SureTax deployment architecture in above Web Services section for a high level diagram of the system integration architecture for SAP and SureTax, which should be consistent with most client installations.
Remote Function Call (RFC)
Communication between SAP's standard tax interface and SureTax is initiated using SAP's Remote Function Call ("RFC") and SAP Transactional RFC ("tRFC") functional modules. Each of the RFC's that are included with the standard tax interface is defined within this technical integration guide.
- RFC_DETERMINE_JURISDICTION
- RFC_CALCULATE_TAXES_DOC
- RFC_UPDATE_TAXES_DOC
- RFC_FORCE_TAXES_DOC
The SureTax Sales and Use Tax Request webservice is the primary webservice used for the SAP integration for the RFC Calculate, Update, and Force tax calculation requests. The Sales and Use Tax Request is used to calculate sales and use tax on orders (RFC_CALCULATE) and this webservice is also used to calculate applicable taxes for invoices and the recording of taxes within SureTax and SAP (RFC_UPDATE) or (RFC_FORCE).
The SAP-SureTax tax interface passes a number of data elements from SAP to SureTax to enable tax calculations, and the automation of tax decisions (e.g. taxable, exempt, non-taxable, etc.) that are dynamically selected and assigned by the SAP system. The SureTax Adapter interface passes this information to SureTax, such as those listed below:
- SureTax CustomerNumber = SAP ACCNT NUMBER (SAP customer sold-to number)
- SureTax Ship-to and Ship-from GeoBlock = SAP Tax Jurisdiction Code (TJC)
- SureTax Product Group and Item = SAP material and product group.
- SureTax Invoice Date = SAP tax date or rep date
- SureTax RuleOverride = SAP AR/AP Indicator
Additional values included in the tax interface that are more static for all transactions and generally do not change are listed below:
- SureTax EntityID = SAP company code (Always)
- SureTax DivisionID = SAP company code
- SureTax TransactionType = 01 (sale - SD, and purchase - MM/FI)
- SureTax ProviderType (Regulatory Code) = always 70, retailer
- SureTax CustomerType = always 08, retail
The standard tax interface developed by SAP does not provide enough information to the tax system to activate all calculation features and tax decision functions provided by SureTax. Industry experience with SAP indicates that most users who integrate third-party sales/use tax systems (i.e. SureTax) with SAP often customize the tax interface in order to achieve desired tax processing results, including compliance.
Chapter 2 - Integration of SureTax Adapter for SAP
Installation Steps for the SAP Tax Adapter
Before the CCH Adapter for SAP can be installed, the following tasks and access requirements must be met:
Ensure you have a Windows Server (VM) that is Windows Server 2016 or newer with a minimum of 8 GB RAM.
- This is required to run the SureTax Adapter.
Confirm that the SureTax system has been activated and enabled for the client. Make sure to have the SureTax Client Number and Validation Key.
Create a system level SAP User ID and Password that can be configured into the SureTax Adapter configuration file. This SAP User ID is used to read the SAP metadata in the calls between SAP and SureTax. At a minimum, this user ID must have access to make RFC calls (SE37).
On the Windows Server where the adapter is to be installed:
- Ensure access has been granted to modify the "services" file found in the c:\windows\system32\drivers\etc directory.
- Install Microsoft's .NET framework Runtime
- For Windows Server 2016:
- For Windows Server 2019:
- For Windows Server 2022:
- Install SAP .NET Connector, version 3.1
- Install Microsoft Visual C++ 2010 Redistributable Package
Ensure your SAP partner has direct access to this server where SureTax adapter is to be installed.
Ensure a Basis/IT person from client is on available to sit in on the SureTax Adapter installation process to perform the SAP Basis tasks and for knowledge transfer purposes.
To perform the installation of the SureTax Adapter please perform the following steps, after all the above prerequisites have been completed.:
Note: If updating existing installation, please refer to Appendix K. If reinstalling or migrating from existing installation, please refer to Appendix L
Create a new folder on the desired drive, i.e. C:\STXAdapter, and copy the following files into the folder:
- installservice.cmd (This script assumes you have C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe on your Windows Server)
- sapnco.dll
- sapnco_utils.dll
- Serilog.dll
- Serilog.pdb
- Serilog.Settings.AppSettings.dll
- Serilog.Sinks.File.dll
- Serilog.Sinks.File.xml
- Serilog.xml
- SureTaxAdapter.exe (check the properties of this file to verify the file is not blocked)
- SureTaxAdapter.exe.config (Note: if you have an existing installation of the SureTax Adapter, you will want to use the config file from your existing installation)
- SureTaxAdapter.pdb (check the properties of this file to verify the file is not blocked)
- uninstallservice.cmd (This script assumes you have C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe on your Windows Server)
These files are used as a part of the SAP .Net Connector 3.0. If using a 32-bit Machine, these files will need to be replaced with the 32-bit version (with the same name)Ensure highlighted files are NOT blocked.
Open the SuretaxAdapter.exe.config file. Below is an example of the default settings.
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="SAP.Middleware.Connector">
<section name="GeneralSettings" type="SAP.Middleware.Connector.RfcGeneralConfiguration, sapnco" />
</sectionGroup>
<sectionGroup name="ClientSettings">
<section name="DestinationConfiguration" type="SAP.Middleware.Connector.RfcDestinationConfiguration, sapnco" />
</sectionGroup>
<sectionGroup name="ServerSettings">
<section name="ServerConfiguration" type="SAP.Middleware.Connector.RfcServerConfiguration, sapnco" />
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="SureTaxAdapter.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<SAP.Middleware.Connector>
<GeneralSettings defaultTraceLevel="0" traceDir="c:\\xxxx\\LogFiles" traceEncoding="UTF-8" traceType="PROCESS" />
<ClientSettings>
<DestinationConfiguration>
<destinations>
<add NAME="SureTax_KEC_00" USER="xxxx" PASSWD="xxxx" CLIENT="xxx" LANG="EN" ASHOST="xxxx" SYSNR="xx" POOL_SIZE="5" MAX_POOL_SIZE="10" />
</destinations>
</DestinationConfiguration>
</ClientSettings>
<ServerSettings>
<ServerConfiguration>
<servers>
<add NAME="STA1" GWHOST="xxxx" GWSERV="sapgwxx" PROGRAM_ID="xxxx" REPOSITORY_DESTINATION="SureTax_KEC_00" REG_COUNT="5" />
</servers>
</ServerConfiguration>
</ServerSettings>
</SAP.Middleware.Connector>
<appSettings>
<!-- Start Logging settings -->
<add key="XMLOutput" value="1" />
<add key="serilog:using:File" value="Serilog.Sinks.File" />
<add key="serilog:write-to:File.path" value="c:\\xxxx\\LogFiles\\log.txt" />
<!-- Valid values for serilog-minimum-level: Verbose, Debug, Information, Warning, Error (from most logging to least) -->
<add key="serilog:minimum-level" value="Verbose" />
<!-- Log file size limit (default is 1GB) -->
<!-- Key below with a value="5000000" sets the log.txt file size limit to 5,000 KB (5 MB) -->
<add key="serilog:write-to:File.fileSizeLimitBytes" value="5000000" />
<!-- Example key below removes the limit -->
<!-- <add key="serilog:write-to:File.fileSizeLimitBytes" /> -->
<!-- This section sets it to roll on file size limit (otherwise it stops writing at the limit) -->
<add key="serilog:write-to:File.rollOnFileSizeLimit" value="true" />
<!-- This section sets the rolling Interval to a day, Valid values are Minute, Hour, Day, Month, Year, Infinite -->
<add key="serilog:write-to:File.rollingInterval" value="Day" />
<!-- End Logging Settings -->
<!-- The rfcServerName should match the NAME value set under the <servers> section above -->
<add key="rfcServerName" value="STA1" />
<!-- Do not change the LogSource and ServiceName values below. -->
<add key="LogSource" value="2.0 STX" />
<add key="ServiceName" value="2.0 STX" />
<add key="weburl" value="https://testapi.taxrating.net/Services/V07/SureTax.asmx" />
<add key="addressurl" value="https://testapi.sureaddress.net/SureAddress.asmx" />
<add key="ReconnectInterval" value="60000" />
<!-- <add key="StructurePrefix" value="BBPS_" /> -->
<!-- SureTax Variables -->
<add key="ClientNumber" value="xxxxxxxxx" />
<add key="ClientNumberAddress" value="xxxxxxxxx" />
<add key="ValidationKey" value="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" />
<add key="ValidationKeyAddress" value="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" />
<!-- <add key="ValidationKeyList" value="xxx~xxxxxxxx~xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx|xxx=xxxxxxxxxx~xxxxxxxx- xxxx-xxxx-xxxx-xxxxxxxxxxxx" /> -->
<!-- <add key="ValidationKeyAddressList" value="xxx=xxxxxxxx~xxxxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx|xxx=xxxxxxxxxx~xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" /> -->
<add key="ResponseGroup" value="00" />
<add key="UnitType" value="00" />
<add key="TaxIncludedCode" value="0" />
<add key="TaxSitusRule" value="22" />
<add key="ResponseType" value="D2" />
<add key="SalesTypeCode" value="B" />
<add key="TransTypeCode" value="990101" />
<add key="RegulatoryCode" value="99" />
<add key="DefaultJurLevel" value="1" />
<add key="FreightSKU" value="110204" />
<add key="RuleOverride" value="0" />
<!-- Added the line below to handle multi-cultural decimal issue. -->
<add key="UseCulture" value="0" />
<add key="JurLevelMapping" value="01=1,02=1,03=1,04=1,05=1,60=2,06=3,33=3,08=3,09=3,17=3,18=3,20=3,22=3,26=3,35=5" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
</startup>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="SureAddressSoap" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
<readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000" />
</binding>
<binding name="SureTaxSoap" maxReceivedMessageSize="20000000" maxBufferSize="20000000">
<readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<security mode="Transport" />
<endpoint address="https://testapi.sureaddress.net/SureAddress.asmx" binding="basicHttpBinding" bindingConfiguration="SureAddressSoap" contract="SureAddressWebServices.SureAddressSoap" name="SureAddressSoap" />
<endpoint address="https://testapi.taxrating.net/Services/V07/SureTax.asmx" binding="basicHttpBinding" bindingConfiguration="SureTaxSoap" contract="SureTaxWebServices.SureTaxSoap" name="SureTaxSoap" />
</client>
</system.serviceModel>
<system.net>
<!-- <defaultProxy enabled="true" useDefaultCredentials="true">
<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
</defaultProxy> -->
</system.net>
</configuration>
- Modifications must be made to above mentioned xml file and are detailed below:
- Set the desired defaultTraceLevel and verify the traceDir path is pointing to the LogFiles folder.
- "0": no tracing
- "1": trace all function calls
- "2": function calls and public API calls
- "3": function calls, public API calls and internal method calls
- "4": function calls, public API calls, internal method calls and network hex dump
- Set the desired defaultTraceLevel and verify the traceDir path is pointing to the LogFiles folder.
<GeneralSettings defaultTraceLevel="0" traceDir="c:\xxxx\LogFiles" traceEncoding="UTF-8" traceType="PROCESS" />
- Enter the SAP user name, SAP password, SAP client, SAP Host, SAP System Number
<ClientSettings>
<DestinationConfiguration>
<destinations>
<add NAME="SureTax_KEC_00" USER="xxxx" PASSWD="xxxx" CLIENT="xxx" LANG="EN" ASHOST="xxxx" SYSNR="xx" POOL_SIZE="5" MAX_POOL_SIZE="10" />
</destinations>
</DestinationConfiguration>
</ClientSettings>
- Enter the SAP Gateway Host, SAP Gateway Server (matches ASHOST above), SAP Program ID (this is what is defined as the RFC Destination from the SAP transaction code SM59)
<ServerSettings>
<ServerConfiguration>
<servers>
<add NAME="STA1" GWHOST="xxxx" GWSERV="sapgwxx" PROGRAM_ID="xxxx" REPOSITORY_DESTINATION="SureTax_KEC_00" REG_COUNT="5" />
</servers>
</ServerConfiguration>
</ServerSettings>
- Enable or disable logging of the XML request and response data: Enter 0 to disable or 1 to enable.
<add key="XMLOutput" value="1" />
- Confirm log file path is pointing to the LogFiles folder and set additional settings for logging:
<add key="serilog:using:File" value="Serilog.Sinks.File" />
<add key="serilog:write-to:File.path" value="c:\xxxx\LogFiles\log.txt" />
<!-- Valid values for serilog-minimum-level: Verbose, Debug, Information, Warning, Error (from most logging to least) -->
<add key="serilog:minimum-level" value="Verbose" />
<!-- Log file size limit (default is 1GB) -->
<!-- Key below with a value="5000000" sets the log.txt file size limit to 5,000 KB (5 MB) -->
<add key="serilog:write-to:File.fileSizeLimitBytes" value="5000000"/>
<!-- Example key below removes the limit -->
<!-- <add key="serilog:write-to:File.fileSizeLimitBytes" /> -->
<!-- This section sets it to roll on file size limit (otherwise it stops writing at the limit) -->
<add key="serilog:write-to:File.rollOnFileSizeLimit" value="true" />
<!-- This section sets the rolling Interval to a day, Valid values are Minute, Hour, Day, Month, Year, Infinite -->
<add key="serilog:write-to:File.rollingInterval" value="Day" / >
- Enter the ClientNumber, ClientNumberAddress, ValidationKey, ValidationKeyAddress
<add key="ClientNumber" value="xxxxxxxxx" />
<add key="ClientNumberAddress" value="xxxxxxxxx" />
<add key="ValidationKey" value="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" />
<add key="ValidationKeyAddress" value="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" />
<!-- <add key="ValidationKeyList" value="xxx=xxxxxxxx~xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx|xxx=xxxxxxxxxx~xxxxxxxx- xxxx-xxxx-xxxx-xxxxxxxxxxxx" /> -->
<!-- <add key="ValidationKeyAddressList" value="xxx=xxxxxxxx~xxxxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx|xxx=xxxxxxxxxx~xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" /> -->
- NOTE: If you have multiple SAP Company Codes (COMP_CODE) mapped to different Client Numbers and Validation Keys in SureTax and SureAddress:
- You can use ValidationKeyList and ValidationKeyAddressList seen in the above commented snippet. The format is:
- ValidationKeyList or ValidationKeyAddressList=
- <SAP COMP_CODE>=<Client Number>~<Validation Key>|<additional entries can be added separated by '|' character.
- Replace the x values with the above "xxx=xxxxxxxx~xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- ValidationKeyList or ValidationKeyAddressList=
- If you only have 1 SureTax ClientNumber/ValidationKey, you can comment out ValidationKeyList and ValidationKeyAddressList.
- Set UseCulture value to 1 (if instructed).
- You can use ValidationKeyList and ValidationKeyAddressList seen in the above commented snippet. The format is:
<add key="UseCulture" value="0" />
- Validate the "weburl" and the "addressurl" -- this needs to be validated in 2 separate sections of the SuretaxAdapter.exe.config file.
<add key="weburl" value="https://testapi.taxrating.net/Services/V07/SureTax.asmx" />
<add key="addressurl" value="https://testapi.sureaddress.net/SureAddress.asmx" />
<client>
<endpoint address="https://testapi.sureaddress.net/SureAddress.asmx" binding="basicHttpBinding"
bindingConfiguration="SureAddressSoap" contract="SureAddressWebServices.SureAddressSoap" name="SureAddressSoap" />
<endpoint address="https://testapi.taxrating.net/Services/V07/SureTax.asmx" binding="basicHttpBinding" bindingConfiguration="SureTaxSoap" contract="SureTaxWebServices.SureTaxSoap" name="SureTaxSoap" />
</client> 5. Make sure the SAP services are extended and create the necessary entries for the SAP ports.
- Navigate to the C:\Windows\System32\drivers\etc\ directory and open the services file.
- If the SAP ports are not in the services file, copy and paste the full list of SAP ports found in the APPENDIX-I section of this guide.
- Open up a command prompt and test the following for a connection:
- "nslookup <servername>" - this will indicate if the server name can be found in DNS. "servername" represents the SAP Gateway Server name, i.e. belvebd01
- "ping <servername>" or "ping <ipaddress>" -- this will indicate if you can get through to the server or ip address. "servername" represents the SAP Gateway Server name, i.e. belvebd01
- "telnet <servername> 3300" or "telnet <ipaddress> 3300" -- this will indicate that you can connect to the server on that port. (The port will be "33<system number>" - so system number 20 would be "3320").
- Set up the SM59 Connection and Configure SAP connection to recognize SureTax system. Note the Program ID must be the same as the Program ID defined in the SuretaxAdapter.exe.configfile; see following section pertaining to the Configuration of SAP Communication for SureTax.
- Perform installation of the SureTax Adapter, as follows:
- Open a command prompt using the "Run as Administrator" option
Go to the Adapter directory. (ex. C:\STXAdapter)
- Type "installservice [service name]" and press enter -- service name is the folder name in which the SureTax Adapter files are located, i.e. "STXAdapter" Note: If the service name is not specified, it will be defaulted from the installservice cmd file to STAdapterService
- Open the Services window, and verify the newly installed service is Running and is set to Automatic.
Control Panel-->Administrative Tools -->Services
- Review logging settings for STXAdapter on SureTax server (Windows server)
- Check the Event Viewer settings: Go to Start-->Control Panel-->Administrative Tools. Select Event Viewer.
- Go to Windows Logs > Application. Right click on Application and then click Properties:
On the General Tab select the option Overwrite Events as Necessary
- Once the adapter is installed, Test Connectivity. You should get a valid/successful connection to SureTax using SAP Transaction Code SM59.
- Log into SAP and go to gateway monitor on SMGW to see the logged on clients
- Go to SE37 to test the RFC_DETERMINE_JURISDICTION call and click Execute:
- Under Location Data, enter valid address information for a US address:
- Green arrow back, and enter SureTax as the RFC Target System:
- Click Execute and you should have results in the Location Results section:
- Click on the Entry in the Results section to ensure the TJC is being returned:
After testing the connectivity, we recommend the following base configuration set up steps be performed in SAP to complete the communication configuration of SAP for SureTax. These configuration steps described in the following subsection of this chapter (Configuration of SAP Communication for SureTax) are [NOT] performed by CCH they should be performed by the SAP configuration or realization personnel.
Configuration of SAP Communication for SureTax
The communication setup should be performed after the SureTax system has been installed. The steps listed below provide a summary of the setup tasks to be performed to establish the communication between SAP and SureTax. These steps should be performed in the recommended sequence shown below:
- Create the logical destination -- select and input the logical name for the RFC Destination (i.e. "SureTax"), which should be the location of the tax package, or SureTax system executable file;
- Activate the SureTax tax calculation system -- SAP tax procedures are used to activate an external tax system. The tax procedure for US sales and use tax calculation and posting is TAXUSX. This code is assigned to a country such as the US or Canada. An external tax interface ID is also required, which is used to define how the tax procedure accesses the SureTax system.
Configuration of SAP for SureTax
The instructions provided below are recommended steps to be completed with setting up the base tax configuration of the SAP system when working with the SureTax sales and use tax product.
Define interface version -- the current SAP-API interface version is TAXDOC00.
Configure external document -- this setup instructs the system how to post tax liabilities to SAP accounting and record calculated tax liabilities in the SureTax transaction logs.
- Activate external document -- this controls whether transaction information, including tax liabilities, will be recorded into the SureTax system, which occurs during the SD, MM and/or FI document posting process.
- Define Tax Jurisdiction Code structure -- the tax jurisdiction code is used by the SureTax system to select geographic locations for tax purposes and this code is recorded in SAP master address tables. The structure for CCH is 4-3-4-1 and should be configured into the SAP system as this setup instructs the SAP tax interface how the SureTax tax jurisdiction code is defined for SAP.
For detailed instructions on how to set up the communication between SAP and SureTax, please reference the R/3 Tax Interface Configuration Guide published by SAP Labs.
Configuration of SAP for SureTax
The following SAP base tax configuration and setup should be completed after the communication between SAP and SureTax has been established.
- Setup the appropriate US tax procedure in SAP
- Activating the Tax Interface System
- Configuring the External Tax Document
- Defining the tax jurisdiction code structure
- Testing the external system tax data retrieval
- Customizing Master Data Tax Classifications (SD)
- Customizing Master Data Tax Indicators (MM)
- Maintaining Master Data (SD)
- Maintaining Master data (MM)
- Setting up tax codes
- Setting up SD condition records
- Configuring Tax per Document -- Max Tax
The steps listed above should be performed sequentially, but will [not] be performed by CCH. If the SAP user needs guidance on how to perform to configure tax settings and rules in SAP a reference document (SAP Tax Interface Configuration Guide), produced by SAP.
1 SAP Labs, Inc. -- Tax Interface Group 8 R/3 Tax Interface Configuration Guide Release 4.6x
Chapter 3 - RFC Determine Jurisdiction
Tax Jurisdiction Code
To facilitate the tax calculation process, SureTax assigns Tax Jurisdiction Codes on SAP master data addresses, so these values can be passed to SureTax as ship-from and ship-to identifiers during transaction processing. Assigning Tax Jurisdiction Codes is done through the RFC_Determine_Jurisdiction function module in the standard SAP tax interface. When maintaining address data on customers, vendors, plants, or cost objects, the RFC_Determine_Jurisdiction function will pass the Country Code, State Code, City name and Postal code to the SureTax system for validation. Based on these address parameters, SureTax will return a unique CCH location code ("GeoBlock") if one is found, to SAP, which will store the Geoblock in the Tax Jurisdiction Code field within the master data record.
SureTax GeoBlock
The GeoBlock is comprised of a twelve-character string (e.g.US2017379000). The breakdown is as follows:
2-digit country code
2-digit FIPS state code, the state of Kansas
3-digit FIPS county code, the county of Sedgewick
5-digit FIPS city/local code, the city of Wichita
Note: The 5-digit city/local code is used to summarize all taxes that are associated with transit districts, stadium taxes, and special district taxes. The local codes (city and district) will also account for outside city limit conditions, where applicable.
The tax jurisdiction code structure will be used for US and Canadian tax processing within the SureTax system. All applicable addresses, listed below, should follow the same tax jurisdiction code definitions.
ShipToAddress -- Ship to address or receiving location of customer (SD) or buyer/ consumer in a procurement transaction (MM/FI)
ShipFromAddress -- Ship from address or inventory location (i.e. plant) for SD and this can also apply to an address assigned to a vendor location for MM/FI.
Geocode Search Algorithm
With the standard address functionality, the SureTax application will first try to find an exact match based on the Country Code, State Code, City Name and Postal code (ZIP plus 4, if available). If a match is found, a result set containing the unique geoblock will be returned. If no match is found, the system will repeat the search using only the Country Code, State Code and the Postal code. If a match is found, a result set containing a list of possible choices will be return for the user to choose from. If no match is found, either the Country Code is not supported for taxation (there is no GeoBlock to be assigned) or there was an error. In this case, an empty result set will be returned and SAP may return an error if an empty value is not acceptable (for example on customers and vendors).
Tax Jurisdiction Code Structure for SAP
The tax jurisdiction code structure that is defined in SAP for the SureTax integration is defined as 4-3-4-1, and the specific relationship to this code structure is described below:
SureTax System Code | SAP COMPONENT | SureTax/SAP DESCRIPTION / COMMENT |
---|---|---|
Country | TXJCD_L1 | 2-digit Country code for United States is US |
StateOrProvinceCode | TXJCD_L1 | 2-digit State code (FIPS code) |
CountyCode | TXJCD_L2 | 3-digit US Postal County Code (FIPS code) |
CityCode | TXJCD_L3 | 4-digit CCH City Code (FIPS Code) |
District | TXJCD_L4 | 1-digit code use in combination with the city code to identify special taxing jurisdictions/districts, etc |
Address Validation Option
The CCH SureAddress Address Validation software will select the street address, city name, state abbreviation code, and postal code from the master data address record and process this information to determine the correct address, and apply the correct ZIP + 4, where applicable. For more detail on this optional web service, please reference CCH SureAddress Address Validation User Guide.
Architecture
The CCH SureAddress Address Validation Web Service is implemented using Microsoft's .NET 2.0 Framework. The Web Service is processed on a server with your application server (IIS). If the default installation is used, the WSDL is available at the following address:
The WSDL's availability varies depending upon the configuration of your IIS. The server name and the URL for the WSDL will vary based on the installation of SureTax with SAP.
Architecture Diagram
The diagram below explains the process in which the SAP application passes the SAP master address data to the address validation software for validation/correction via CCH SureAddress Address Validation Web Service. The Web Service returns the validated/corrected address to the SAP master address module. The following is the table layout for the addresses in SureTax:
FIELD NAME | POST FIELD | DESCRIPTION |
---|---|---|
Primary Address Line | PrimaryAddressLine | Address Line 1 |
Secondary Address Line | SecondaryAddressLine | Address Line 2 |
County | County | County |
City | City | City |
State | State | State -- full state name or two-character abbreviation accepted |
PostalCode | PostalCode | Zip code or Canadian postal code |
Plus4 | Plus4 | Zip+4 |
Country | Country | International country ISO code value in format: XX |
CCH Geocode | Geocode | Optional value. If provided, the CCH Geocode will take precedence and will be used instead of the address/zip+4 information. |
Verify Address | VerifyAddress | Required. If selected, SureAddress will validate the address and update the zip+4. 1. No (default) 2. Yes |
- SAP makes a call via RFC_DETERMINE_JURISDICTION to SureTax web-services for GeoBlock whenever the cost center, plant, customer or vendor address is created or modified (Standard processing), which submits the following values to select the tax jurisdiction code:
- State code
- City name
- Street address (this optional value only applies when Address Validation software is included)
- Postal code (ZIP + 4, if available; otherwise, system will use 5-digit ZIP code)
- SureTax Web-services checks to see if Address Validation (AV) web-services are available (Optional Address Validation - set up via configuration setting)
- If they are available then SureTax web-services make a call to AV web-service to get Zip+4.
- Internally AV makes a call to Perfect Address software to get the zip+4 and inserts the Zip+4 into the SAP master table.
- SureTax Web-services uses the city, state and postal code from the SAP master data record, or the ZIP+4 returned by AV web-service to get a Geoblock(s) from the SureTax database and return it to SAP.
Note: The system will allow international country codes, but will always return zero calculations as these transactions would be defined as US exports and will not be subject to US sales and use tax.
Chapter 4 - RFC Calculate Tax
Overview
The RFC_CALCULATE_TAXES_DOC procedure contains the necessary specifications for the SAP system to perform calculation and posting of sales and use tax in the United States and Canada. To facilitate this, it is necessary that the SAP user assign the following calculation procedures:
Customer Pricing procedure: RVAXUD (SD)
Tax Procedure: TAXUSX (SD, MM and FI)
The tax procedure TAXUSX is used to activate the external tax interface system to enable the exchange of data between SAP and SureTax. The tax procedure TAXUSX and the SD pricing procedure RVAXUD contain condition formulas that invoke the SAP Tax Interface System. Once the Tax Interface System is invoked, a communication structure (with header and items data) is filled with the necessary information needed by SureTax to calculate taxes. A copy of SAP SD pricing procedure RVAUXD is used to perform the "Tax per Document" calculation for tax or what is commonly referred to as "Max Tax" calculations. This procedure provides the benefit of max tax processing rules that are applied accurately to individual items as well as invoice totals. This procedure also improves performance of the tax calculation function.
The RFC_CALCULATE_TAXES_DOC communication structure passes transaction data from SAP to SureTax via the SAP RFC (remote function call). The key data elements of this tax interface that are used in the SureTax tax calculation are listed below:
- SAP Tax Type = SureTax Transaction Type (01)
- SAP Company Code = SureTax Legal Entity ID (and Division ID)
- SAP Tax Date = SureTax Invoice Date (Transaction Date)
- SAP Product Code = SureTax SKU (maps to groups and items)
- SAP Customer Account Number = SureTax CustomerNumber
- SureTax Address for Situs -- will be determined by the combination of the four geoblocks sent from SAP and will be determined by the SureTax situs database.
- SureTax Customer Type -- defaulted to Retail (08)
- SureTax Provider Type -- defaulted to Retail (70)
- SureTax FOB -- defaulted to Destination (D)
The appropriate tax is calculated and returned back to through the tax interface from the SureTax web service response. The calculated tax amounts and tax rates are applied to the SD document item's pricing at each of up to six levels of jurisdiction, if an exemption is calculated a zero tax rate is returned. The appendix provides more detailed descriptions of each of the key tax decision make data elements.
Several other parameters influence the tax amounts and tax rates determination:
- Delivering country (US),
- Tax classification of the ship-to partner,
- Tax classification of the material being shipped,
- Tax calculation date (i.e. SAP Invoice Date)
- Tax Jurisdiction codes from the ship-to-party.
- Tax Jurisdiction code from the Ship-from address.
- Tax Jurisdiction code from the Point of Order Acceptance address.
- Tax Jurisdiction code from the Point of Order Origin address
SureTax requires order approval or order placement addresses be provided to the system to support the tax calculation logic for origin and destination rules in AZ, CA, IL, MO, and other origin or modified origin states . The order approval and order placement addresses are available with the standard tax interface and the ship-from and ship to address information is defaulted to these addresses.
The SAP tax interface does not pass foreign currency: this will be supported in SAP. SureTax will allow international country codes, but will always return zero calculations as these transactions would be defined as US exports and will not be subject to US sales and use tax.
SAP -- SureTax Freight
Freight as a separate line on the invoice is the standard for the SAP-SureTax tax interface. The taxability rules related to freight are defined in SureTax through the Product-Group and Product-Item rules which is very extensive as there are approximately 160 groups and items. In order to include tax processing for freight the SAP system must be able to pass charges related to freight as a separate line item and the SAP Product Code value must be mapped to the applicable SureTax group and item code value. Charges for freight could have multiple definitions; therefore, the recommended approach is to set up a product code for each type of freight charge and pass the freight charge amount to the SureTax system as an individual line item. The most efficient way to apply the correct tax rules to freight charges is to create a specific product (SAP material number) for each type of freight charge (e.g. FOB destination, FOB origin, etc.), and the charge for freight should be included as a separate line item on the invoice.
The CCH Adapter contains logic that will remove the leading zeros from several SAP fields to make for easier configuration of the groups and item rules within the SureTax system as well as customer exemptions. For example, the SAP material number (MATNR) is 18 digits long and would contain leading zeros for a numeric material number (for example, 000000001234567890). Therefore, the tax interface removes the leading zeros from material numbers, resulting in an SAP product code shall be mapped to the SureTax stocking unit number (SKU_ID) in the SureTax system.
Additionally, the SureTax Adapter will remove the leading zeros from the account number, which will affect the customer account for SD and vendor account for MM, facilitating for easier tax configuration of tax rule exceptions in the SureTax Calculation Module.
Canada
Canada's indirect tax structure is different than the US. Canada has a two level indirect tax structure: federal and provincial. Canada has four different types of indirect taxes. They are:
- Goods and Services Tax ("GST") -- this is a VAT tax assessed at the federal level across Canada;
- Provincial Sales Tax ("PST") -- this tax is similar to sales and use taxes in the US and is assessed to the end user. The PST provinces are:
- British Columbia;
- Manitoba; and
- Saskatchewan
- Quebec Sales Tax ("QST") - this is a VAT tax assessed for all Quebec based transactions; and
- Harmonized Sales Tax ("HST") - this is a VAT tax assessed in three provinces that is calculated and remitted jointly with the GST. The three HST provinces are:
- Newfoundland;
- Ontario;
- Prince Edward Island;
- Nova Scotia; and
- New Brunswick
SAP/SureTax can be configured to fully support all of a client's Canadian tax requirements. Canadian tax is significantly different than US tax. SureTax returns GST tax at level 1 in SAP while the applicable provincial tax is returned at level 2. The SAP configuration needed to support these requirements will be contained in the input and output tax sections below.
Canadian tax is charged on all levels of a transaction while US tax is assessed at the retail level. Because of this, the accounting treatment for tax is different for Canada. For example, GST is recoverable while PST is not. GST paid gets entered into an asset account while PST is charged to the expense item.
CSC should generally pay GST/HST and QST on their transactions while more of their transaction may be exempt for PST purposes. The following two sections describe how SAP should be configured for tax related to purchases ("input") and tax related to sales ("output").
Input:
As mentioned above, QST, HST and GST paid on purchases are for the most part recoverable which means the client can take a credit for input tax paid to reduce their output tax liability. One of the main requirements of Canadian taxes is that the taxes are posted correctly to the correct account: the authorities in Canada will require that the tax payable and recovered amounts on the return reconcile to the GL. To support these requirements, we propose creating three tax codes in SAP to support purchases (the tax codes listed here are for demonstration purposes):
- I/1 -- GST/HST Input;
- I/2 -- QST Input;
- I/3 -- PST Accrued; and
- I/4 -- PST paid Output:
The tax collected on customer's invoices will have the tax paid on the purchase invoices netted against the payable: the client will pay the net of the amount of the two. For output taxes, the client should create the following three tax codes (the tax codes listed here are for demonstration purposes):
- O/1 -- GST/HST Output;
- O/2 -- QST Output; and
- O/3 -- PST Output
These tax codes will be generated in the pricing procedures through standard access sequences in SAP.
Chapter 5 - RFC Update Tax
Overview
The RFC_UPDATE_TAXES functional call records tax liabilities in the SureTax transaction history file at the time of SAP FI accounting. The SureTax Sales and Use Tax Request method is used for calculation of sales and use taxes for the SD, MM, and FI modules.
The data element of the tax interface associated with the RFC_CALCULATE_TAX are also available within the RFC_UPDATE. The primary function of the RFC_UPDATE is to record finalized tax calculation results in SureTax as final reportable liabilities. This occurs when billing documents are created in SAP and posted to the general ledger, or when accounting documents are approved and posted to record
The web service element Finalize must be defined as True, as described below, as it is used to instruct the SureTax system to record real tax liabilities into the transaction history tables.
TestTransaction: NULL, if the value is not supplied, then it's presumed to be a real transaction and is included in the liability information. Therefore, no value should be passed from SAP to SureTax, which will cause any calculated tax liability to be recorded in SureTax transaction history tables.
Finalize: Boolean, Required = True
This field is used to indicate if the transaction needs to be finalized. Set to true if the calculation is associated with a purchase order or sales order as these calculations should not be recorded as tax liabilities in the history table.
SAP documents, or transactions, that are associated with this remote function call are used to post tax liabilities into the SAP general ledger and various accounting documents such as those described below:
SD: the billing document is released to accounting and saved.
MM-LIV (Logistics Invoice Verification): the logistics invoice is saved and posted to accounting as a use tax accrual.
MM-IV (old Invoice Verification): the accounting document is created directly from the logistics data as a use tax accrual.
MM-ERS (Evaluated Receipt Settlement): During the ERS-run, the logistics invoice is created automatically based on the information of the goods received and then posted to accounting as a use tax accrual.
FI (Non PO Invoices) -- the FI document is saved and posted to accounting as a use tax accrual.
Chapter 6 - RFC Force Tax
Overview
In the event the RFC_UPDATE_TAXES fails due the internal SAP consistency check, the RFC_FORCE_TAXES function updates the SureTax transaction history file. Manual tax adjustments can often fall into the forced update category, examples of this type of update include:
FI-AP: the vendor invoice is manually posted to G/L accounts. FI-AR: the customer invoice is manually posted to G/L accounts.
The SureTax web service used to process transactions associated with the RFC_FORCE is the TaxAdjustmentRequest, which is only billing documents generated in SD and accounting documents created in the FI of SAP.
If the calculated tax amounts are different in SAP, the tax data will be "forced" to the external system. The taxes will always be forced to the external system when the document (invoice) currency is different from the local (company) currency. If RFC_FORCE_TAXES_DOC is used to record the taxes calculated to the SureTax transaction history tables, the system does not perform a calculation applying tax rules that could be configured in SureTax as exceptions. The ship-to location associated with the original transaction will be the only address passed to SureTax and is recorded as the taxing location.
In case of an error during the COMMIT WORK, no call to the external system is performed. The RFC is required when an error has occurred in the background task COMMIT WORK of the RFC_UPDATE_TAXES. Specifically, the tax calculation performed during RFC_UPDATE_TAXES is different from the recalculation that takes place to make sure that there are no invalid jurisdiction codes being posted. Additionally, the recalculation is used to check the input data for the audit file will generate the same results as posted to the general ledger. If the tax amount is different, then SAP requires the tax to be "forced" into the SureTax register file.
It can be that the update RFC results in an error, for example, when the connection is broken, or there is no more disk space to store the data. The status of the update calls can be monitored with the tRFC monitor (transaction SM58) using the destination name. Calls that were successfully updated will be automatically removed from the list. In addition to SM58, the status of the last tRFC call not yet updated to the external system can be monitored with the qRFC monitor (SMQ1). If the SAP queue is empty, then all remote function calls to the tax system were successfully updated to the external system.
Appendix A - RFC_DETERMINE_JURISDICTION
SAP Interface to SAP for Address Validation
Input parameters
SureTax INPUT FIELD | SAP COMPONENT | SAP FIELD DEF | DESCRIPTION / COMMENT |
---|---|---|---|
Country | COUNTRY | CHAR[2] | Country code = US |
StateOrProvince | STATE | CHAR[2] | State code numeric code (2-digit code) |
County | COUNTY | CHAR[40] | County name |
City | CITY | CHAR[255] | City name |
PostalCode | ZIPCODE | CHAR[5] | ZIP code |
Plus4 | ZIPCODE | CHAR[4] | Plus 4 portion of the ZIP Code |
Output parameters
SureTax OUT FIELD | SAP COMPONENT | SAP FIELD DEF | DESCRIPTION / COMMENT |
---|---|---|---|
StatusCode | ERRCODE | NUMC[1] | Number used to describe what took place during the address validation and GeoCode lookup and assignment |
StatusDescription | ERRMSG | CHAR[72] | Status code description |
Country | COUNTRY | CHAR[3] | Country code |
StateOrProvince | STATE | CHAR[2] | State code 2-digit numeric code |
County | COUNTY | CHAR[40] | County name |
City | CITY | CHAR[255] | City name |
PostalCode | ZIPCODE | CHAR[5] | 5-digit US Postal ZIP code |
Plus4 | ZIPCODE | CHAR[4] | Plus 4 portion of the ZIP Code |
CountryCode | TXJCD_L1 | NUMC[2] | Length of the first structure element of the tax jurisdiction code (country code) |
StateOrProvinceCode | TXJCD_L2 | NUMC[2] | Length of the second structure element of the tax jurisdiction code (state code), which is 2-digits |
CountyCode | TXJCD_L3 | NUMC[3] | Length of the third structure element of the tax jurisdiction code (US County FIPS code),which is 3-digits |
CityCode | TXJCD_L4 | NUMC[4] | Length of the fourth structure element of the tax jurisdiction code (City code), which is 5-digits. |
CCH Geocode ("GeoBlock") | TXJCD | CHAR[12] | 12-digit tax jurisdiction code used for performing the tax calculation. This is the SureTax tax jurisdiction code for SAP which is defined as follows: 2-digit country code 2-digit state code 3-digit county code 5-digit city code The complete Geocode value is 12-digits. OUTOF_CITY_INDICATOR is not used by the SureTax application |
Not applicable | OUT OF_CITY |
Appendix B - RFC_CALCULATE_TAXES_DOC
Map of SAP Tax Interface to SureTax -- Calculation Input
SureTax INPUT FIELD | SAP COMPONENT API Name/ | SAP FIELD DEF | SAP DESCRIPTION / COMMENT |
---|---|---|---|
SAP_CONTROL_DATA - Structure | |||
Not Applicable | APP_SERVER | CHAR[32] | SAP Application Server (tax application server) |
Not Applicable | SAP_VERSION | CHAR[4] | SAP Release for taxes |
Not Applicable | INTERFACE_VERSION | CHAR[10] | SAP Tax Interface Version |
SAP INVOICE-LEVEL - Invoice Input ( Document Header Level Input ) | |||
Not Applicable | SYST_NAME | CHAR[10] | Logical R/3 system name |
SourceSystem | CLIENT | CHAR[20] | SAP Client number, this can be used to track the source of the web service call. The SAP Client Number and SAP System ID (with delimiter) will be passed to SureTax to segregate transactions. SureTax system provide value up to 20-digits |
EntityID | COMP_CODE | CHAR[4] | SAP company code using tax interface. Company code that represents the legal reporting entity. Nexus definitions are defined within the SureTax using this code value with the DivisionID and will be limited to a 4-digit code. The default for this value is 1000. |
InvoiceNumber | DOC_NUMBER | CHAR[12] | Tax Document number This is the billing document number in SAP that will be recorded in the transaction logs of SureTax to support audits, therefore, this should be the same value as shown on a customer invoice generated in SD module or the accounting document created in FI. |
Not Applicable | CURRENCY | CHAR[3] | Document currency for which the tax calculation will be performed. It is assumed that the user will pass into the tax system the correct currency. The tax system does not perform a currency conversion. The SureTax system does not have an attribute in the web service to accept a currency code. |
Not Applicable | CURR_DEC | CHAR[3] | Number of decimal places for currency, for example ‘002’. |
Country | TXJCD_L1 | NUMC[2] | Length of the first structure element of the tax jurisdiction code (country code), which is 2-digits Delivery country is US. |
StateOrProvince | TXJCD_L2 | NUMC[2] | Length of the second structure element of the tax jurisdiction code (state code), which is 2-digits |
County | TXJCD_L3 | NUMC[3] | Length of the third structure element of the tax jurisdiction code (US County FIPS code), which is 3-digits |
City | TXJCD_L4 | NUMC[5] | Length of the fourth structure element of the tax jurisdiction code (City code), which is 5-digits. |
Not Applicable | TAX_PER_ITEM | CHAR[1] | Tax per Item flag: Tax calculation is done by line item. Each line item will be treated separately for tax calculation. Therefore, max tax rules across multiple lines in the same document will not be applied (i.e. max tax at invoice level) |
Not Applicable | NR_LINE_ITEMS | NUMC[6] | Total number of lines in the external tax document. This is the total number of entries in SAP table (I_TAX_CAL_ITEM_IN) |
SAP INVOICE-LEVEL - Item Input (Line Item Level Input) | |||
LineNumber | ITEM_NO | NUMC[6] | External tax document item number |
Not Applicable | POS_NO | NUMC[6] | Item position number in document. In SureTax, this unique line item identifier is used to define each line item. |
Not Applicable | GROUP_ID | CHAR[18] | Set position number in document. A set is an item composed of sub-items. |
CountryCode | COUNTRY | CHAR[3] | Tax Departure country or base country is the US which is defined in SureTax with a 2-digit code. |
BusinessUnit | DIVISION | CHAR[4] | SAP business area / division code. It is also used to provide additional information in the history table for audit purposes. The DivisionID is required by SureTax for defining nexus. If this parameter of the tax interface is NULL, then the tax interface logic will default the company code into this field. |
Not Applicable | MATNR | CHAR[18] | Material number - an internally defined SAP material number. This field is left justified with leading zeros and is 18 characters long. The SureTax will only accept a 3-digit value for product item, but requires that the Product Group code (4-digit value) be processed during the tax calculation. Therefore, this value should be NULL as the SAP PROD_CODE will be used to pass a SKU value to SureTax for processing. If no SAP PROD_CODE value is passed then the interface will pass ‘000’ as the default value for the SureTax ProductItem value. |
TransTypeCode | PROD_CODE | CHAR[10] | The SureTax Product Group and Product Item values will not be passed to SureTax unless a PROD_CODE value is not available. Therefore, this value will be the primary code passed from SAP to SureTax for product code exception processing. The information for this element of the interface will generally be selected from SAP Material Group or Product Hierarchy. |
Not Applicable | GROUP_PROD_CODE | CHAR[10] | The product group value in SureTax is a 4-digit value, and must be combined with the Product Item 3-digit value in order to invoke the processing of product related to rules in the SureTax system. This value should be NULL as the SAP PROD_CODE will be used to pass a SKU value to SureTax for processing. If no SAP PROD_CODE value is passed then the interface will pass ‘0000’ as the default value for the SureTax ProductGroup value. |
Units | QUANTITY | CHAR[13] | Item quantity or number of items (i.e. 10 shirts is represented by 10.000). The quantity field has an implied 3 decimal places. When entering the quantity, two additional zeros must be added. The SureTax system has a total number of digits to the left of the decimal of 7 and requires that 2 additional values to the right of the decimal be included, which requires that a decimal be included. Therefore, the value of 10 shirts in SureTax is 10.00. |
Not Applicable | UNIT | CHAR[3] | Unit of measure (each or pieces) |
RuleOverride3 | APAR_IND | CHAR[1] | Input or output tax indicators in SAP are ‘A’ for A/R transactions or output tax, the tax type value for SureTax is '01' for sales transactions coincides with SAP’s output tax; and for procurement transactions the SAP value of V = A/P input tax, which is equivalent to the SureTax value of '02' for consumers use tax related to purchase transactions. |
RuleOverride1 | TAX_TYPE | CHAR[1] | The second value of the transaction type defines the type of event, which is used to determine the correct tax type. For example, if the value is '1', then the transaction relates to a purchase order (MM) or a customer sales order/invoice (SD), and the tax type will be defined by the tax system. If the value of the tax type is ‘2’ then the transaction event is an invoice and the tax system will define the correct tax type. |
ExemptionCode | EXREASON | CHAR[1] | SAP defaults this value to a blank (‘ ‘) or '2' that is defined as not relevant for tax in SAP and this value configure to ‘O’ in the tax interface call to SureTax that instructs the system to apply an exemption at all tax levels.If a tax code is defined as Not Relevant for Tax (‘2) in SAP the transaction will always be defined as exempt in SureTax via the system value of ‘O’. |
TransDate | TAX_DATE | CHAR[8] | Transaction date for tax calculation. The date format is MMDDCCYY |
ShipToGeoBlock | TXJCD_ST | CHAR[15] | Nexus_ShipTo tax jurisdiction code (geoblock), the 12-digit code is defined Tax Jurisdiction Determination technical design document |
ShipFromGeoBlock | TXJCD_SF | CHAR[15] | Nexus_ShipFrom tax jurisdiction code (geoblock), the 12-digit code is defined in Tax Jurisdiction Determination technical design document |
OrderApprovalGeoBlock | TXJCD_POA | CHAR[15] | Nexus_OrderApproval tax jurisdiction code (geoblock), the 12-digit code is defined in Tax Jurisdiction Determination technical design document |
OrderPlacementGeoBlock | TXJCD_POO | CHAR[15] | Nexus_OrderPlacement tax jurisdiction code (geoblock), this 12-digit code is not used by SAP tax interface. This information is defined in Tax Jurisdiction Determination technical design document |
Revenue | GROSS_AMOUNT | CHAR[15] | Tax base amount. When entering a taxable amount, add two additional zeros to take into consideration the two decimal places. The maximum amount value in SureTax is 99,999,999,999.99, the last values to the right of the decimal. |
Amount | GROSS_AMOUNT | CHAR[15] | Defaulted with the value in AMOUNT field |
Not Applicable | FREIGHT_AMOUNT | CHAR[15] | Line item freight amount. In SAP the tax interface has the ability to pass the identified freight amount into the freight amount field, so the tax system can determine if this value is added to the taxable base. The standard interface to the SureTax system does not provide for this amount to be passed within the same line item record as the gross amount. However, a user exit can be enabled to activate this logic. |
Not Applicable | EXEMPT_AMOUNT | CHAR[15] | Tax exempt amount, which is not used by SAP. This field will always be blank or value of ‘0’ as the SureTax does not include exempt amounts in the API. SAP interpretation of this code (external tax system is used to define the exemption). If the value is ‘1’ or ‘2’, the external tax system is ignored. |
CustomerNumber | ACCNT_NO | CHAR[10] | This number represents the customer number for A/R) transactions, or vendor number for (A/P) transactions, which are internally defined by SAP. The number is 10 characters long. The leading zeros be removed before the value is passed into the tax system. The 10-digit limitation will require all exemption recorded created in the CEM module of SureTax to be no longer than 10-digits. |
Not Applicable | ACCNT_CLS | CHAR[10] | |
CostCenter | COST_OBJECT | CHAR[18] | The SureTax Exemption code needs to be applied to the line item. Exemption codes passed in this object are custom codes that are user defined in SureTax. This code can be used to automate tax calculations for SD or MM/FI tax calculations. Customer exemption processing rules are defined in SureTax with the ExemptionCode. The system will allow a length of 30-digits, but the SAP tax interface will limit the size to 18-digits. |
Not Applicable | PTP_IND | CHAR[1] | This indicator specifies that sales and use tax should be applied, excluding transportation and insurance. The default value should be ‘D’ (Destination) which represents ShipToGeoBlock (Address), and this value can only be changed through the SAP user exit. See user exit section of the Solution Design document for more details related to when the value should be changed to ‘O’ (Origin), which requires |
Not Applicable | EXT_EXCERTIF | CHAR[25] | Customer exempt certification defined in SAP. If this field is blank, the external tax system can be used to define the customer exemption. Therefore, It is recommended to leave this field blank. If this field is populated it will not affect the tax calculation, however, it will be recorded in the history table. |
Not Applicable | EXT_EXREASON | CHAR[2] | The SAP Tax Exemption Reason Code that can be defined in SAP is equivalent to the SureTax CustomerType; however, this value can only be passed to the tax system through a user exit. This value, or code, should be linked to a customer classification and used to enhance the tax calculation logic of SureTax. The customer type (i.e. Retail, Manufacturing, Rx, etc.) is derived from a 2- digit code, and the recommended default value for the SureTax system is ‘08’ ("Retail") for SD transaction processing |
GL Account (1-10) Chars Tax Included Code – (50th) char |
USER_DATA | CHAR[50] | This is used to send below fields to SureTax. GL Account (1-10) Chars Tax Included Code – (50th) char |
Parameter1 | /RYAN/FIELD1 | CHAR[25] | |
Parameter2 | /RYAN/FIELD2 | CHAR[25] | |
Parameter3 | /RYAN/FIELD3 | CHAR[25] | |
Parameter4 | /RYAN/FIELD4 | CHAR[25] | |
Parameter5 | /RYAN/FIELD5 | CHAR[25] | |
Parameter6 | /RYAN/FIELD6 | CHAR[25] | |
Parameter7 | /RYAN/FIELD7 | CHAR[25] | |
Parameter8 | /RYAN/FIELD8 | CHAR[25] | |
Parameter9 | /RYAN/FIELD9 | CHAR[25] |
Map of SAP Fields to SureTax System -- Calculation Output (TaxReponse)
INPUT FIELD | SAP COMPONENT | SAP FIELD DEF | SAP DESCRIPTION / COMMENT |
---|---|---|---|
SAP OUTPUT EXT CONTROL ( External System Control Info ) | |||
Not Applicable | API_VERSION | CHAR[10] | SAP Application Server (tax application server) |
Not Applicable | SYST_VERSION | CHAR[10] | Logical R/3 system name. This value should represent the version of the external tax system |
Not Applicable | DB_VERSION | CHAR[10] | The tax interface version |
SAP COMMUNICATION ERROR ( External System Error Info ) | |||
TransactionStatus | RETCODE | CHAR[1] | Status of transaction: "1" Failed, and the value of "2" Successful. If the transaction fails, then return messages error codes. |
Message_Reference | ERROR_LINE | CHAR[6] | Line item ID returned when there is an error in line item level processing (Message Source value is ‘2’). This value should correspond to the line number in the tax system that has caused the error. |
Message_Code | ERRCODE | NUMC[4] | External tax system specific error code that is 4-digits in length. |
Message_Info | ERRMSG | CHAR[200] | Error message returned by tax system |
SAP TAX_CAL_ITEM_OUT - Calculation Output (Tax results for each line item) | |||
ID | ITEM_NO | NUMC[6] | Tax interface communication line item number. This should correspond to the input parameter, or the line item ID supplied in the order/invoice. |
Not Applicable | TXJCD_IND | CHAR[1] | Indicator associated with the primary taxing jurisdiction that was used to perform the tax calculation. The valid codes are; however, they are not included in the tax response: 'T' – ShipTo 'F' – ShipFrom 'P' – OrderPlacement 'A' – OrderAcceptance |
TotalTaxRate | TAXPCOV | CHAR[15] | Total tax percentage rate (summary calculation that needs to be performed by tax interface that summarizes the combined tax rate, by line item, for all tax levels). |
TotalTaxApplied | TAXAMOV | CHAR[15] | Total amount of tax for the line item, thus this is a summary amount of tax for all tax levels (e.g. state, county, city, etc.). |
Not Applicable | EXMATFLG | CHAR[2] | Code for material tax exemption (i.e. reason code). This code is returned to SAP from the tax system, but is not used by SAP |
Not Applicable | EXCUSFLG | CHAR[2] | Customer exemption code, which indicates that a customer tax exemption what created by the tax system. This code is returned to SAP from the tax system, but not used by SAP |
Not Applicable | EXT_EXCERTIF | CHAR[25] | Customer exemption certificate number. |
Not Applicable | EXT_REASON | CHAR[2] | The SureTax CustomerType value that corresponds to the SAP Tax Exemption Reason Code is not returned in the tax calculation response. Therefore, this value should be left blank, or set to ‘00’. |
NR_JUR_LEVELS | NUMC[2] | Number of levels per item for communication control. This represents the total number of entries in table O_TAX_CAL_JUR_LEVEL_OUT. | |
SAP TAX_CAL_ITEM_OUT - RFC Calculation Output (Jurisdiction level output) | |||
ID | ITEM_NO | NUMC[6] | Tax interface communication line item number. This should correspond to the input parameter. External tax document item number. |
AuthorityType The corresponding SureTax output parameter for each tax level are as follows: 1. StateOrProvince 2. County 3. City 4. Local 5. Reporting Agency |
TXJLV | CHAR[1] | Tax Jurisdiction code levels that corresponds to the following tax levels defined by SureTax are shown below: 1. State 2. County 3. City 4. Local 5. Reporting Agency |
TaxRate | TAXPCT | CHAR[15] | Level n tax rate, amount of tax rate percentage applied by tax level |
TaxApplied | TAXAMT | CHAR[15] | Level n tax amount, amount of actual tax amount applied at the line level |
TaxableAmount | TAXBAS | CHAR[15] | Tax base amount level n, the total line item charge minus tax exempt amount |
ExemptAmt | EXAMT | CHAR[15] | Level n exempt amount, the amount from the line item exempt from tax, by level |
Not Applicable | EXCODE | CHAR[2] | Tax Exemption Reason Code |
Appendix C - RFC_UPDATE_TAXES
Map of SAP Tax Interface to SureTax System -- RFC Update Input
INPUT FIELD | SAP COMPONENT | SAP FIELD | DESCRIPTION / COMMENT |
---|---|---|---|
SAP_CONTROL_DATA -- Structure | |||
Not Applicable | APP_SERVER | CHAR[32] | SAP Application Server (tax application server) |
Not Applicable | SAP_VERSION | CHAR[4] | SAP Release for taxes |
Not Applicable | INTERFACE_VERSION | CHAR[10] | SAP Tax Interface Version |
SAP INVOICE-LEVEL - Invoice Input (Header Level) | |||
Not Applicable | SYST_NAME | CHAR[10] | Logical R/3 system name |
SourceSystem | CLIENT | CLNT | SAP Client number, this can be used to track the source of the web service call. SureTax allow 20-digits. |
EntityID | COMP_CODE | CHAR[4] | SAP company code using tax interface. Company code that represents the legal reporting entity. Nexus definitions are defined within the SureTax using this code value with the DivisionID and will be limited to a 4-digit code. |
InvoiceNumber | DOC_NUMBER | CHAR[12] | Tax Document number. This is the billing document number in SAP that will be recorded in the transaction logs of SureTax to support audits, therefore, this should be the same value as shown on a customer invoice generated in SD module or the accounting document created in FI. |
Not Applicable | CURRENCY | CHAR[3] | Document currency for which the tax calculation will be performed. It is assumed that the user will pass into the tax system the correct currency. The tax system does not perform a currency conversion. The SureTax system does not have an attribute in the web service to accept a currency code. |
Not Applicable | CURR_DEC | CHAR[3] | Number of decimal places for currency, for example ‘002’. |
Country | TXJCD_L1 | NUMC[2] | Length of the first structure element of the tax jurisdiction code (country code), which is 2-digits |
StateOrProvince | TXJCD_L2 | NUMC[2] | Length of the second structure element of the tax jurisdiction code (state code), which is 2-digits |
County | TXJCD_L3 | NUMC[3] | Length of the third structure element of the tax jurisdiction code (US County FIPS code), which is 3-digits |
City | TXJCD_L4 | NUMC[5] | Length of the fourth structure element of the tax jurisdiction code (City code), which is 5-digits. |
Not Applicable | TAX_PER_ITEM | CHAR[1] | Tax per Item flag: Tax calculation is done by line item. Each line item will be treated separately for tax calculation. Therefore, max tax rules across multiple lines in the same document will not be applied (i.e. max tax at invoice level) |
NR_LINE_ITEMS | NUMC[6] | Total number of lines in the external tax document. This is the total number of entries in SAP table I_TAX_CAL_ITEM_IN | |
Structure TAX_UPD_ITEM_IN – Item Input (Line Item Level) | |||
LineNumber | ITEM_NO | NUMC[18] | External tax document item number. The SureTax system returns a transaction ID value (18-digits) that is used to identify the transaction within SureTax |
Not Applicable | POS_NO | NUMC[6] | Item position number in document. In SureTax this unique line item identifier is used to define each line item. |
Not Applicable | GROUP_ID | CHAR[18] | Set position number in document. A set is an item composed of sub-items. |
Country | COUNTRY | CHAR[2] | Tax Departure country or base country, which is defined in SureTax with a 2-digit code (US). |
BusinessUnit | DIVISION | CHAR[4] | SAP business area / division code. It is also used to provide additional information in the history table for audit purposes. The DivisionID is required by SureTax for defining nexus. If this parameter of the tax interface is NULL, then the tax interface logic will default the company code into this field. |
Not Applicable | MATNR | CHAR[18] | Material number - an internally defined SAP material number. This field is left justified with leading zeros and is 18 characters long. The SureTax will only accept a 3-digit value for product item, but requires that the Product Group code (4-digit value) be processed during the tax calculation. Therefore, this value should be NULL as the SAP PROD_CODE will be used to pass a SKU value to SureTax for processing. If no SAP PROD_CODE value is passed then the interface will pass ‘000’ as the default value for the SureTax ProductItem value. |
TransTypeCode | PROD_CODE | CHAR[10] | Material product code from SAP user exit is used to pass PROD_CODE to SureTax tax system as the SKU value, which can be mapped to a Product Group and Product Item code combination in the SureTax system. The SureTax Product Group and Product Item values will not be passed to SureTax unless a PROD_CODE value is not available. Therefore, this value will be the primary code passed from SAP to SureTax for product code exception processing. The information for this element of the interface will generally be selected from SAP Material Group or Product Hierarchy. |
Not Applicable | GROUP_PROD_CODE | CHAR[10] | The product group value in SureTax is a 4-digit value, and must be combined with the Product Item 3-digit value in order to invoke the processing of product related to rules in the SureTax system. This value should be NULL as the SAP PROD_CODE will be used to pass a SKU value to SureTax for processing. If no SAP PROD_CODE value is passed then the interface will pass ‘0000’ as the default value for the SureTax ProductGroup value. |
Units | QUANTITY | CHAR[13] | Item quantity or number of items (i.e. 10 shirts is represented by 10.00). The quantity field has an implied 2 decimal places. When entering the quantity, two additional zeros must be added to the right of the decimal. The total number of digits to the left of the decimal is 7. |
Not Applicable | UNIT | CHAR[3] | Unit of measure (each or pieces) |
RuleOverride4 | APAR_IND | CHAR[1] | Input or output tax indicators in SAP are ‘A’ for A/R transactions or output tax, the tax type value for SureTax is '01' for sales transactions coincides with SAP’s output tax; and for procurement transactions the SAP value of V = A/P input tax, which is equivalent to the SureTax value of '02' for consumers use tax related to purchase transactions. |
RuleOverride2 | TAX_TYPE | CHAR[1] | The second value of the transaction type defines the type of event, which is used to determine the correct tax type. For example, if the value is '1', then the transaction relates to a purchase order (MM) or a customer sales order/invoice (SD), and the tax type will be defined by the tax system. If the value of the tax type is ‘2’ then the transaction event is a purchase related invoice and the tax system will define the correct tax type. |
Hard code value in interface | EXEMPT_IND | CHAR[1] | Non-taxable transaction control indicator. External tax system decides if transaction is taxable. SAP defaults this value to a blank (‘ ‘) or '0' that instructs the SAP system to pass data to the tax system (SureTax) to apply tax calculation and tax determination rules; therefore, this value should be ‘0’. |
Not Applicable | TAX_DATE | CHAR[8] | SAP tax date used by SureTax for tax calculations. The date format is MMDDCCYY. This date field is used by the SureTax system to select tax rates and rules during the calculation function. |
ShipToGeoBlock (ShipToAddress – GeoCode) |
TXJCD_ST | CHAR[12] | Nexus_ShipToGeoBlock address that corresponds to the SAP tax jurisdiction code, the 12-digit code is defined in the Tax Jurisdiction Determination document. |
ShipFromGeoBlock (ShipFromAddress – GeoCode) |
TXJCD_SF | CHAR[12] | Nexus_ShipFromGeoBlock address that corresponds to the SAP tax jurisdiction code, the 12-digit code is defined in the Tax Jurisdiction Determination document. |
OrderApprovalGeoBlock (POAAddress – GeoCode) |
TXJCD_POA | CHAR[12] | Nexus_OrderApprovalGeoBlock address that corresponds to the SAP tax jurisdiction code, the 12-digit code is defined in the Tax Jurisdiction Determination document. |
OrderPlacementGeoBlock (POOAddress – GeoCode) |
TXJCD_POO | CHAR[12] | Nexus_OrderPlacementGeoBlock address that corresponds to the SAP tax jurisdiction code, the 12-digit code is defined in the Tax Jurisdiction Determination document. |
Amount | AMOUNT | CHAR[15] | Tax base amount. When entering a taxable amount, add two additional zeros to take into consideration the two decimal places. The maximum amount value in SureTax is 99,999,999,999.99, the last values to the right of the decimal. The SureTax system accepts only positive values through the interface; therefore, if the value is less than zero, the tax interface assumes that the transaction pertains to a credit memo. |
Amount | GROSS_AMOUNT | CHAR[15] | Defaulted with the value in AMOUNT field |
Not Applicable | FREIGHT_AMOUNT | CHAR[15] | Line item freight amount. In SAP the tax interface has the ability to pass the identified freight amount into the freight amount field, so the tax system can determine if this value is added to the taxable base. The SureTax system does not provide for this amount to be passed within the same line item record as the gross amount. |
Not Applicable | EXEMPT_AMOUNT | CHAR[15] | Tax exempt amount, which is not used by SAP. If this value is blank or value of ‘0’, then the external tax system is used to define the exemption. If the value is ‘1’ or ‘2’, the external tax system is ignored. |
CustomerNumber | ACCNT_NO | CHAR[16] | This number represents the customer number for A/R transactions, or vendor number for A/P transactions, which are internally defined by SAP. The number is 10 characters long. The leading zeros be removed before the value is passed into the tax system. The 10-digit limitation will require all exemption recorded created in the CEM module of SureTax to be no longer than 10-digits. |
Not Applicable | ACCNT_CLS | CHAR[10] | |
CostCenter | COST_OBJECT | CHAR[18] | The SureTax Exemption code needs to be applied to the line item. Exemption codes passed in this object are custom codes that are user defined in SureTax. This code can be used to automate tax calculations for SD or MM/FI tax calculations. Customer exemption processing rules are defined in SureTax with the ExemptionCode. The system will allow a length of 30-digits, but the SAP tax interface will limit the size to 18-digits. |
Not Applicable | PTP_IND | CHAR[1] | This indicator specifies that sales and use tax should be applied, excluding transportation and insurance. The default value should be ‘D’ (Destination) which represents ShipToGeoBlock (Address), and this value can only be changed through the SAP user exit. See user exit section of the Solution Design document for more details related to when the value should be changed to ‘O’ (Origin), which requires |
Not Applicable | EXT_EXCERTIF | CHAR[25] | Customer exempt certification defined in SAP. If this field is blank, the external tax system can be used to define the customer exemption. Therefore, It is recommended to leave this field blank. If this field is populated it will not affect the tax calculation, however, it will be recorded in the history table. |
Not Applicable | EXT_EXREASON | CHAR[2] | The SAP Tax Exemption Reason Code that can be defined in SAP is equivalent to the SureTax CustomerType; however, this value can only be passed to the tax system through a user exit. This value, or code, should be linked to a customer classification and used to enhance the tax calculation logic of SureTax. The customer type (i.e. Retail, Manufacturing, Rx, etc.) is derived from a 2-digit code, and the recommended default value for the SureTax system is ‘08’ ("Retail") for SD processing. |
TransDate This is used for DataMonth, DataYear, CmplDataMonth, CmplDataYear fields as well. | REP_DATE | CHAR[8] | Reporting date for tax calculation received from SAP should be populated in the first 8-digits of the API attribute used to describe line item information related to the transaction. Therefore, the first 8-digits of the user data area as it pertains to the SAP tax interface is reserved for the Reporting Date (i.e. SAP posting date or accounting document date) that is defined at the Company level. The standard date format used by SAP CCYYMMDD, which represents the posting date in SAP or accounting document date. Therefore, positions 1-8 of the parameter is reserved for reporting date information contained within SAP. |
Not Applicable | CREDIT_IND | CHAR[1] | The credit indicator is used within SAP to define debits and credits to the tax liability account. If the value is ‘ ‘ or '0' the tax liability account is credited. If the value is ‘1’ then the tax liability account is debited. |
GL Account (1-10 characters) Tax Included Code (50th character) | USER_DATA | CHAR[50] | This is used to send below fields to SureTax. GL Account (1-10) Chars Tax Included Code – (50th) char |
Not Applicable | USER_REPT_DATA | CHAR[50] | The Reporting Entity Code is used to separate tax decision records for each company, and it is also used to separately identify tax liabilities for reporting purposes if the company code does not accommodate the legal entity reporting requirements. Additional information can be populated into the field by inserting additional logic into the SAP tax related "user exit". Positions 20-and greater are reserved for user defined text values (information). |
Parameter1 | /RYAN/FIELD1 | CHAR[25] | |
Parameter2 | /RYAN/FIELD2 | CHAR[25] | |
Parameter3 | /RYAN/FIELD3 | CHAR[25] | |
Parameter4 | /RYAN/FIELD4 | CHAR[25] | |
Parameter5 | /RYAN/FIELD5 | CHAR[25] | |
Parameter6 | /RYAN/FIELD6 | CHAR[25] | |
Parameter7 | /RYAN/FIELD7 | CHAR[25] | |
Parameter8 | /RYAN/FIELD8 | CHAR[25] | |
Parameter9 | /RYAN/FIELD9 | CHAR[25] |
Map of SAP Fields to SureTax System -- RFC Update Output
INPUT FIELD | SAP COMPONENT | SAP FIELD | DESCRIPTION / COMMENT |
---|---|---|---|
SAP_CONTROL_DATA -- Structure | |||
Not Applicable | API_VERSION | CHAR[10] | SAP Application Server (tax application server) |
Not Applicable | SYST_VERSION | CHAR[10] | Logical R/3 system name. This value should represent the version of the external tax system |
Not Applicable | DB_VERSION | CHAR[10] | The tax interface version |
**SAP COMMUNICATION ERROR ( External System Error Info ) ** | |||
TransactionStatus | RETCODE | CHAR[1] | Status of transaction: "1" Failed, and the value of "2" Successful. If the transaction fails, then return messages error codes. |
Message_Reference | ERROR_LINE | CHAR[6] | Line item ID returned when there is an error in line item level processing (Message Source value is ‘2’). This value should correspond to the line number in the tax system that has caused the error. |
Message_Code | ERRCODE | NUMC[4] | External tax system specific error code that is 4-digits in length. |
Message_Info | ERRMSG | CHAR[200] | Error message returned by tax system |
SAP TAX_UPD_ITEM_OUT - RFC Update Output (Tax results for each line item) | |||
ID | ITEM_NO | NUMC[6] | Tax interface communication line item number. This should correspond to the input parameter. |
Not Applicable | TXJCD_IND | CHAR[1] | Indicator associated with the primary taxing jurisdiction that was used to perform the tax calculation. The valid codes are: 'T' – Ship-to 'F' – Ship-from 'P' – Order Placement 'A' – Order Acceptance |
TotalTaxRate | TAXPCOV | CHAR[15] | Total tax rate (summary tax rate, by line item, for all tax levels). |
TotalTaxApplied | TAXAMOV | CHAR[15] | Total amount of tax for the line item, thus this is a summary amount of tax for all tax levels (e.g. state, county, city, etc.). |
Not Applicable | EXMATFLG | CHAR[2] | Code for material tax exemption (i.e. reason code). This code is returned to SAP from the tax system, but is not used by SAP. |
Not Applicable | EXCUSFLG | CHAR[2] | Customer exemption code, which indicates that a customer tax exemption what created by the tax system. This code is returned to SAP from the tax system, but is not used by SAP. |
Not Applicable | EXT_EXCERTIF | CHAR[25] | Customer exemption certificate number as returned by the tax system. The Certificate Number corresponding to a customer exemption that may extracted from a third-party exemption certificate management system. Currently, this value is not available within the SureTax system. |
Not Applicable | EXT_REASON | CHAR[2] | The SureTax CustomerType value that corresponds to the SAP Tax Exemption Reason Code is not returned in the tax calculation response. Therefore, this value should be left blank, or set to ‘00’. |
NR_JUR_LEVELS | NUMC[2] | Number of levels per item for communication control. This represents the total number of entries in table O_TAX_CAL_JUR_LEVEL_OUT. |
Appendix D - RFC_FORCE_TAXES
Map of SAP Tax Interface to SureTax System -- RFC Force Input
** SureTax INPUT FIELD** | SAP COMPONENT | SAP FIELD DEF | DESCRIPTION / COMMENT |
---|---|---|---|
SAP_CONTROL_DATA -- Structure | |||
Not Applicable | APP_SERVER | CHAR[32] | SAP Application Server (tax application server) |
Not Applicable | SAP_VERSION | CHAR[4] | SAP Release for taxes |
Not Applicable | INTERFACE_VERSION | CHAR[10] | The tax interface version |
SAP I_TAX_FRC_HEAD_IN -- Request ( FRC Header Level ) | |||
Not Applicable | SYST_NAME | CHAR[10] | Logical R/3 system name |
SourceSystem | CLIENT | CLNT | SAP Client number, this code could be used to separate tax liability records by history table ID, and it is used by SureTax to identify the transaction source of the system integration. |
EntityID | COMP_CODE | CHAR[4] | SAP company code using tax interface. Company code that represents the legal reporting entity. Nexus definitions are defined within the SureTax using this code value with the DivisionID and will be limited to a 4-digit code. |
InvoiceNumber | DOC_NUMBER | CHAR[12] | Tax Document number This is the billing document number in SAP that will be recorded in the transaction logs of SureTax to support audits, therefore, this should be the same value as shown on a customer invoice generated in SD module or the accounting document created in FI. |
Not Applicable | CURRENCY | CHAR[3] | Document currency for which the tax calculation will be performed. It is assumed that the user will pass into the tax system the correct currency. The tax system does not perform a currency conversion. The SureTax system does not have an attribute in the web service to accept a currency code. |
Not Applicable | CURR_DEC | CHAR[3] | Number of decimal places for currency, for example ‘002’. |
Country/StateOrProvince | TXJCD_L1 | NUMC[4] | Length of the first structure element of the tax jurisdiction code (country code + state code), which is 4-digits |
County | TXJCD_L2 | NUMC[3] | Length of the third structure element of the tax jurisdiction code (US County FIPS code), which is 3-digits |
City | TXJCD_L3 | NUMC[4] | Length of the third structure element of the tax jurisdiction code (City code), which is derived from the ZIP + 4 code used to select the CCH GeoBlock. |
District | TXJCD_L4 | NUMC[1] | Length of the fourth structure element of the tax jurisdiction code associated with district taxes. |
Not Applicable | TAX_PER_ITEM | CHAR[1] | Tax per Item flag: Tax calculation is done by line item. Each line item will be treated separately for tax calculation. Therefore, max tax rules across multiple lines in the same document will not be applied (i.e. max tax at invoice level) |
Not Applicable | NR_LINE_ITEMS | NUMC[6] | Total number of lines in the external tax document. This is the total number of entries in SAP table I_TAX_CAL_ITEM_IN |
Structure TAX_FRC_ITEM_IN - Item Input ( FRC Line Item Level ) | |||
Not Applicable | ITEM_NO | NUMC[6] | External tax document item number |
ID | POS_NO | NUMC[6] | Item position number in document |
Not Applicable | GROUP_ID | CHAR[18] | This is used to send the below fields to SureTax. LocationCode 11-14 characters SalesTypeCode 15th character |
Country | COUNTRY | CHAR[2] | Tax Departure country or base country. This will be US |
BusinessUnit | DIVISION | CHAR[4] | SAP business area / division code. It is also used to provide additional information in the history table for audit purposes. The DivisionID is required by SureTax for defining nexus. If this parameter of the tax interface is NULL, then the tax interface logic will default the company code into this field. |
Not Applicable | MATNR | CHAR[18] | Material number - an internally defined SAP material number. This field is left justified with leading zeros and is 18 characters long. The SureTax will only accept a 3-digit value for product item, but requires that the Product Group code (4-digit value) be processed during the tax calculation. Therefore, this value should be NULL as the SAP PROD_CODE will be used to pass a SKU value to SureTax for processing. If no SAP PROD_CODE value is passed then the interface will pass ‘000’ as the default value for the SureTax ProductItem value. |
TransTypeCode | PROD_CODE | CHAR[10] | Material product code from SAP user exit is used to pass PROD_CODE to SureTax tax system as the SKU value, which can be mapped to a Product Group and Product Item code combination in the SureTax system. The SureTax Product Group and Product Item values will not be passed to SureTax unless a PROD_CODE value is not available. Therefore, this value will be the primary code passed from SAP to SureTax for product code exception processing. The information for this element of the interface will generally be selected from SAP Material Group or Product Hierarchy. |
Not Applicable | GROUP_PROD_CODE | CHAR[10] | The product information code should provide the SureTax default values for the general merchandise and item default value; therefore, this field should be populated with the value of ‘0000000’ 4-digit ProductGroup default and the 3-digit ProductItem default. |
Quantity | QUANTITY | CHAR[13] | Item quantity will be assigned with a value of 1 (1000). The quantity field has an implied 3 decimal places. When entering the quantity, three additional zeros must be added. If no value is supplied the interface should insert the value of 1 as a default. |
Not Applicable | UNIT | CHAR[3] | Unit of measure (each or pieces) |
RuleOverride5 | APAR_IND | CHAR[1] | Input or output tax indicators in SAP are ‘A’ for A/R transactions or output tax, the tax type value for SureTax is '01' for sales transactions coincides with SAP’s output tax; and for procurement transactions the SAP value of V = A/P input tax, which is equivalent to the SureTax value of '02' for consumers use tax related to purchase transactions. |
RuleOverride1 | TAX_TYPE | CHAR[1] | The second value of the transaction type defines the type of event, which is used to determine the correct tax type. For example, if the value is '1', then the transaction relates to a purchase order (MM) or a customer sales order/invoice (SD), and the tax type will be defined by the tax system. If the value of the tax type is ‘2’ then the transaction event is an invoice and the tax system will define the correct tax type. |
Hard code value in interface | EXEMPT_IND | CHAR[1] | Non-taxable transaction control indicator. External tax system decides if transaction is taxable. SAP defaults this value to a blank (' ') or '0' that instructs the SAP system to pass data to the tax system (SureTax) to apply tax calculation and tax determination rules; therefore, this value should be '0'. |
Not Applicable | TAX_DATE | CHAR[8] | Transaction date for tax calculation. The date format is MMDDCCYY. This date field is used by the SureTax system to select tax rates and rules during the calculation function. |
ShipToGeoBlock | TXJCD_ST | CHAR[12] | Nexus_ShipToGeoBlock address that corresponds to the SAP tax jurisdiction code, the 12-digit code is defined in the Tax Jurisdiction Determination document. |
ShipFromGeoBlock | TXJCD_SF | CHAR[12] | Nexus_ShipFromGeoBlock address that corresponds to the SAP tax jurisdiction code, the 12-digit code is defined in the Tax Jurisdiction Determination document. |
POAGeoBlock | TXJCD_POA | CHAR[12] | Not required |
POOGeoBlock | TXJCD_POO | CHAR[12] | Not required |
Amount | AMOUNT | CHAR[15] | Assumption is that the Amount value pertains to the actual tax amount and the SureTax system will determine the taxable base amount, and applicable exempt amounts and gross amounts. The format of the amount for SureTax is 99,999,999,999.99. Therefore, any value passed through the Amount field of the interface will be ignored unless the tax amount is zero. If the tax amount is zero, then the value in the Amount field will be used by the SureTax system to perform a calculation to determine the taxable amount. |
Amount | GROSS_AMOUNT | CHAR[15] | Defaulted with the value in AMOUNT field |
Not Applicable | FREIGHT_AMOUNT | CHAR[15] | Line item freight amount. In SAP, the tax interface has the ability to pass the identified freight amount into the freight amount field, so the tax system can determine if this value is added to the taxable base. The SureTax system does not provide for this amount to be passed within the same line item record as the gross amount. |
Not Applicable | EXEMPT_AMOUNT | CHAR[15] | Tax exempt amount, which is not used by SAP. If this blank or value of '0', then the external tax system is used to define the exemption. If the value is '1' or '2', the external tax system is ignored. |
TransDate Also to fill below fields DataMonth DataYear CmplDataMonth CmplDataYear |
REP_DATE | CHAR[8] | Reporting date for tax calculation received from SAP should be populated in the first 8-digits of the API attribute used to describe line item information related to the transaction. Therefore, the first 8-digits of the user data area as it pertains to the SAP tax interface is reserved for the Reporting Date (i.e. SAP posting date or accounting document date). The standard date format used by SAP CCYYMMDD, which represents the posting date in SAP or accounting document date. Therefore, positions 1-8 of the parameter is reserved for reporting date information contained within SAP, |
TaxOnlyCredit | CREDIT_IND | CHAR[1] | The credit indicator is used within SAP to define debits and credits to the tax liability account. If the value is ‘ ‘ or '0' the tax liability account is credited, which is defined in SureTax as ‘True’. If the value is ‘1’ then the tax liability account is debited, which is defined in the SureTax web service as ‘False’. |
CustomerNumber | ACCNT_NO | CHAR[10] | This number represents the customer number for A/R) transactions, or vendor number for (A/P) transactions, which are internally defined by SAP. The number is 10 characters long. The leading zeros be removed before the value is passed into the tax system. The 10-digit limitation will require all exemption recorded created in the CEM module of SureTax to be no longer than 10-digits. |
Not Applicable | ACCNT_CLS | CHAR[10] | |
CostCenter | COST_OBJECT | CHAR[18] | The SureTax Exemption code needs to be applied to the line item. Exemption codes passed in this object are custom codes that are user defined in SureTax.This code can be used to automate tax calculations for SD or MM/FI tax calculations. Customer exemption processing rules are defined in SureTax with the ExemptionCode. The system will allow a length of 30-digits, but the SAP tax interface will limit the size to 18-digits. |
Not Applicable | PTP_IND | CHAR[1] | This indicator specifies that sales and use tax should be applied, excluding transportation and insurance.The default value should be ‘D’ (Destination) which represents ShipToGeoBlock (Address) is not required as the SureTax system assumes the taxing location to be the ship- to address that will be defined by the GeoBlock value (i.e. SAP Tax Jurisdiction Code) passed through the tax interface. |
Not Applicable | EXT_EXCERTIF | CHAR[25] | Customer exempt certification defined in SAP. If this field is blank, the external tax system can be used to define the customer exemption. Therefore, It is recommended to leave this field blank. If this field is populated it will not affect the taxcalculation, however, it will be recorded in the history table. |
Not Applicable | EXT_EXREASON | CHAR[2] | The SAP Tax Exemption Reason Code that can be defined in SAP is equivalent to the SureTax CustomerType; however, this value can only be passed to the tax system through a user exit. This value, or code, should be linked to a customer classification and used to enhance the tax calculation logic of SureTax. The customer type (i.e. Retail, Manufacturing, Rx, etc.) is derived from a 2-digit code, and the recommended default value for the SureTax system is ‘08’. |
GL Account Tax Included Code | USER_DATA | CHAR[50] | This is used to send below fields to SureTax.GL Account (1-10) Chars Tax Included Code – (50th) char |
Not Applicable | TXJCD_IND | CHAR[1] | Indicator associated with the primary taxing jurisdiction that was used to perform the tax calculation. The valid code is ‘T’ – Ship-to |
Not Applicable | TAXPCOV | CHAR[15] | Tax rate will be determined by SureTax |
Amount | TAXAMOV | CHAR[15] | The total tax amount related to the adjustment, sum of all tax levels if more than one tax level is associated with the manual tax adjustment. |
Not Applicable | EXMATFLG | CHAR[2] | Reason code for material exemption. |
Not Applicable | EXCUSFLG | CHAR[2] | Reason code for customer tax exemption |
Not Applicable | EXT_EXCERTIF | CHAR[25] | The exemption certificate information is not returned to the SAP system; therefore, this valued cannot be passed during the RFC_FORCE. |
Not Applicable | EXT_EXREASON | CHAR[2] | Reason code for tax exemption defined in External tax system, which will not be supplied by the SureTax system. |
Not Applicable | NR_JUR_LEVELS | NUMC[2] | Number of levels per item for communication control. This represents the total number of entries in table, which is the same structure as O_TAX_CAL_JUR_LEVEL_OUT. |
Parameter1 | /RYAN/FIELD1 | CHAR[25] | |
Parameter2 | /RYAN/FIELD2 | CHAR[25] | |
Parameter3 | /RYAN/FIELD3 | CHAR[25] | |
Parameter4 | /RYAN/FIELD4 | CHAR[25] | |
Parameter5 | /RYAN/FIELD5 | CHAR[25] | |
Parameter6 | /RYAN/FIELD6 | CHAR[25] | |
Parameter7 | /RYAN/FIELD7 | CHAR[25] | |
Parameter8 | /RYAN/FIELD8 | CHAR[25] | |
Parameter9 | /RYAN/FIELD9 | CHAR[25] |
** SureTax INPUT FIELD** | SAP COMPONENT | SAP FIELD DEF | DESCRIPTION / COMMENT |
---|---|---|---|
SAP TAX_FRC_JUR_LEVEL_IN - Force (Tax info by jurisdiction level for item) | |||
ID | ITEM_NO | NUMC[6] | Tax interface communication line item number. This should correspond to the input parameter. External tax document item number. |
AuthorityType The corresponding SureTax output parameter for each tax level are as follows: 1. StateOrProvince 2. County 3. City 4. District |
TXJLV | CHAR[1] | Tax Jurisdiction code levels that corresponds to the following tax levels defined by SureTax are shown below: 1. State 2. County 3. City 4. District The SureTax system will determine the tax amount by level during the tax calculation and populated the results, by tax level based upon the ship-to tax jurisdiction |
Not Applicable | TAXPCT | CHAR[15] | Actual tax percentage by level is not required as the SureTax system will determine the correct percentage based on the tax jurisdiction associated with the line level. |
TaxApplied | TAXAMT | CHAR[15] | Actual tax amount will be provided as an input at the item level and the allocation of tax, by level, will be performed by the SureTax system. If the tax amount is zero, then the system will accept the Taxable amount passed from SAP to perform the tax calculation. |
TaxableAmount | TAXBAS | CHAR[15] | Actual tax base amount will be calculated by the SureTax system and will be recorded, by level, in the transaction history table. |
ExemptAmt | EXAMT | CHAR[15] | Exempt amount will also be calculated by the SureTax system, by level, and will be recorded into the transaction history table. |
Not Applicable | EXCODE | CHAR[2] | Tax Exemption Reason Code |
Appendix E - Transaction Log
Appendix F - Glossary of Terms
Common SAP terminology
Provided below is a quick reference of commonly used SAP terms related to bolt-on tax system
Word / Term | Description |
---|---|
API | Application program interface |
Debugging | To stop the program logic at a pre-determined point while processing test transactions in order to view the data elements, structures, their values and internal workings of the program logic. |
User Exit / Include | Customer specific programs embedded within the standard SAP logic. (Allows for custom processing logic.) |
Function Module | SAP standard or custom logic that uses structures (tables) to receive data, manipulate and send data. |
Tax Classification Indicator | Tax classification codes are used as a key to automatically determine the tax code within purchasing functions of SAP (MM and FI). These tax classification indicators are user defined, and point to user defined tax codes. |
Tax Code | Tax codes are the link between pricing procedure and tax procedure. They are used to trigger the call to the external tax system. |
Tax Jurisdiction Code | A geographic code value select from the SureTax system and recorded in all SAP master address records. |
Transaction Code | Shortcut to SAP screens. Used to bypass the menu path. |
Transaction Code Box | Field used to enter the SAP Transaction Code. |
Common SureTax terminology
Below is a quick reference of commonly used SureTax terminology.
Word / Term | Description |
---|---|
Customer Type | Type of Customer/Usage for the transaction. This value is required if not specified in each line item. The default value used by the SAP tax interface is ‘08’ associated with Retail. |
Data String | The SureTax data string is used to setup and define taxability rules related to procurement transactions, which could be the creation of a purchase order or the processing of vendor invoices within an accounts payable system. |
Exemption Classes | SureTax system exemption codes are referred to as Exemption can be system or custom. Please refer to the Exemptions documentation for |
CCH GeoBlock | A CCH geocode is a 12-character alphanumeric string that defines a specific country, state, county, locality and, where necessary, a unique combination of local taxes. The country is always represented by two characters (for example ‘US’ for United States). The rest of the code reads as: state = 2 characters, county = 3 characters, locality = 5 characters. |
SAP Reference: Tax Jurisdiction Code | |
Invoice Date | This represents the tax date by which the SureTax system selects a tax rate and performs the sales and use tax calculation. |
Nexus | Nexus is associated with a taxpayer’s obligation to collect sales and use taxes. If SureTax nexus is also associated with address information such as the Ship-To destination, Ship-From source, Order-Placement, and Order-Approval that will affect the tax calculation logic in SureTax. |
Provider Type | Type of Provider (Seller Classification) for the transaction. This value is required if not specified in each line item. The default value used by the SAP tax interface is ‘08’ associate ‘70’ with Retail. |
Situs/TransTypeCode | Situs Information is used for the tax calculation when multiple geographic locations are involved in a transaction. The Situs decision process determines which of the locations is due taxes, which can be affected by FOB rules, mail order, method of delivery, and more. |
SKU | Stock keeping unit, or product category, is used by the SureTax system to map SAP product code related values (e.g. commodity code, material group, product code, etc.) to SureTax product group and item values. |
Tax Authority | Name of the Tax Agency having the legal right to assess and collect taxes. SureTax identifies tax authorities by level (e.g. Federal, State, County, City, etc.). |
Tax Request | Input parameters of the API or tax interface. |
Tax Response | Output parameters of the API or tax interface |
Web Service | Technology used to build the tax interface to SureTax.SAP Reference: API or com_tax_interface |
Appendix H - Error Messages
Error Handling:
Word / Term | Description and Recommended Resolution |
---|---|
Appendix I - Installation of SAP Adapter
List of Files
Open the services file. On the Windows NT platform, the file is found in the <windows>\system32\drivers\etc\
directory. Add the following SAP port entries.
Service | Port/Protocol |
---|---|
sapdp00 | 3200/tcp |
sapdp01 | 3201/tcp |
sapdp02 | 3202/tcp |
sapdp03 | 3203/tcp |
sapdp04 | 3204/tcp |
sapdp05 | 3205/tcp |
sapdp06 | 3206/tcp |
sapdp07 | 3207/tcp |
sapdp08 | 3208/tcp |
sapdp09 | 3209/tcp |
sapdp10 | 3210/tcp |
sapdp11 | 3211/tcp |
sapdp12 | 3212/tcp |
sapdp13 | 3213/tcp |
sapdp14 | 3214/tcp |
sapdp15 | 3215/tcp |
sapdp16 | 3216/tcp |
sapdp17 | 3217/tcp |
sapdp18 | 3218/tcp |
sapdp19 | 3219/tcp |
sapdp20 | 3220/tcp |
sapdp21 | 3221/tcp |
sapdp22 | 3222/tcp |
sapdp23 | 3223/tcp |
sapdp24 | 3224/tcp |
sapdp25 | 3225/tcp |
sapdp26 | 3226/tcp |
sapdp27 | 3227/tcp |
sapdp28 | 3228/tcp |
sapdp29 | 3229/tcp |
sapdp30 | 3230/tcp |
sapdp31 | 3231/tcp |
sapdp32 | 3232/tcp |
sapdp33 | 3233/tcp |
sapdp34 | 3234/tcp |
sapdp35 | 3235/tcp |
sapdp36 | 3236/tcp |
sapdp37 | 3237/tcp |
sapdp38 | 3238/tcp |
sapdp39 | 3239/tcp |
sapdp40 | 3240/tcp |
sapdp41 | 3241/tcp |
sapdp42 | 3242/tcp |
sapdp43 | 3243/tcp |
sapdp44 | 3244/tcp |
sapdp45 | 3245/tcp |
sapdp46 | 3246/tcp |
sapdp47 | 3247/tcp |
sapdp48 | 3248/tcp |
sapdp49 | 3249/tcp |
sapdp50 | 3250/tcp |
sapdp51 | 3251/tcp |
sapdp52 | 3252/tcp |
sapdp53 | 3253/tcp |
sapdp54 | 3254/tcp |
sapdp55 | 3255/tcp |
sapdp56 | 3256/tcp |
sapdp57 | 3257/tcp |
sapdp58 | 3258/tcp |
sapdp59 | 3259/tcp |
sapdp60 | 3260/tcp |
sapdp61 | 3261/tcp |
sapdp62 | 3262/tcp |
sapdp63 | 3263/tcp |
sapdp64 | 3264/tcp |
sapdp65 | 3265/tcp |
sapdp66 | 3266/tcp |
sapdp67 | 3267/tcp |
sapdp68 | 3268/tcp |
sapdp69 | 3269/tcp |
sapdp70 | 3270/tcp |
sapdp71 | 3271/tcp |
sapdp72 | 3272/tcp |
sapdp73 | 3273/tcp |
sapdp74 | 3274/tcp |
sapdp75 | 3275/tcp |
sapdp76 | 3276/tcp |
sapdp77 | 3277/tcp |
sapdp78 | 3278/tcp |
sapdp79 | 3279/tcp |
sapdp80 | 3280/tcp |
sapdp81 | 3281/tcp |
sapdp82 | 3282/tcp |
sapdp83 | 3283/tcp |
sapdp84 | 3284/tcp |
sapdp85 | 3285/tcp |
sapdp86 | 3286/tcp |
sapdp87 | 3287/tcp |
sapdp88 | 3288/tcp |
sapdp89 | 3289/tcp |
sapdp90 | 3290/tcp |
sapdp91 | 3291/tcp |
sapdp92 | 3292/tcp |
sapdp93 | 3293/tcp |
sapdp94 | 3294/tcp |
sapdp95 | 3295/tcp |
sapdp96 | 3296/tcp |
sapdp97 | 3297/tcp |
sapdp98 | 3298/tcp |
sapdp99 | 3299/tcp |
sapgw00 | 3300/tcp |
sapgw01 | 3301/tcp |
sapgw02 | 3302/tcp |
sapgw03 | 3303/tcp |
sapgw04 | 3304/tcp |
sapgw05 | 3305/tcp |
sapgw06 | 3306/tcp |
sapgw07 | 3307/tcp |
sapgw08 | 3308/tcp |
sapgw10 | 3310/tcp |
sapgw11 | 3311/tcp |
sapgw12 | 3312/tcp |
sapgw13 | 3313/tcp |
sapgw14 | 3314/tcp |
sapgw15 | 3315/tcp |
sapgw16 | 3316/tcp |
sapgw17 | 3317/tcp |
sapgw18 | 3318/tcp |
sapgw19 | 3319/tcp |
sapgw20 | 3320/tcp |
sapgw21 | 3321/tcp |
sapgw22 | 3322/tcp |
sapgw23 | 3323/tcp |
sapgw24 | 3324/tcp |
sapgw25 | 3325/tcp |
sapgw26 | 3326/tcp |
sapgw27 | 3327/tcp |
sapgw28 | 3328/tcp |
sapgw29 | 3329/tcp |
sapgw30 | 3330/tcp |
sapgw31 | 3331/tcp |
sapgw32 | 3332/tcp |
sapgw33 | 3333/tcp |
sapgw34 | 3334/tcp |
sapgw35 | 3335/tcp |
sapgw36 | 3336/tcp |
sapgw37 | 3337/tcp |
sapgw38 | 3338/tcp |
sapgw39 | 3339/tcp |
sapgw40 | 3340/tcp |
sapgw41 | 3341/tcp |
sapgw42 | 3342/tcp |
sapgw43 | 3343/tcp |
sapgw44 | 3344/tcp |
sapgw45 | 3345/tcp |
sapgw46 | 3346/tcp |
sapgw47 | 3347/tcp |
sapgw48 | 3348/tcp |
sapgw49 | 3349/tcp |
sapgw50 | 3350/tcp |
sapgw52 | 3352/tcp |
sapgw53 | 3353/tcp |
sapgw54 | 3354/tcp |
sapgw55 | 3355/tcp |
sapgw56 | 3356/tcp |
sapgw57 | 3357/tcp |
sapgw58 | 3358/tcp |
sapgw59 | 3359/tcp |
sapgw60 | 3360/tcp |
sapgw61 | 3361/tcp |
sapgw62 | 3362/tcp |
sapgw63 | 3363/tcp |
sapgw64 | 3364/tcp |
sapgw65 | 3365/tcp |
sapgw66 | 3366/tcp |
sapgw67 | 3367/tcp |
sapgw68 | 3368/tcp |
sapgw69 | 3369/tcp |
sapgw70 | 3370/tcp |
sapgw71 | 3371/tcp |
sapgw72 | 3372/tcp |
sapgw73 | 3373/tcp |
sapgw74 | 3374/tcp |
sapgw75 | 3375/tcp |
sapgw76 | 3376/tcp |
sapgw77 | 3377/tcp |
sapgw78 | 3378/tcp |
sapgw79 | 3379/tcp |
sapgw80 | 3380/tcp |
sapgw81 | 3381/tcp |
sapgw82 | 3382/tcp |
sapgw83 | 3383/tcp |
sapgw84 | 3384/tcp |
sapgw85 | 3385/tcp |
sapgw86 | 3386/tcp |
sapgw87 | 3387/tcp |
sapgw88 | 3388/tcp |
sapgw89 | 3389/tcp |
sapgw90 | 3390/tcp |
sapgw91 | 3391/tcp |
sapgw92 | 3392/tcp |
sapgw93 | 3393/tcp |
sapgw94 | 3394/tcp |
sapgw95 | 3395/tcp |
sapgw96 | 3396/tcp |
sapgw97 | 3397/tcp |
sapgw98 | 3398/tcp |
sapgw99 | 3399/tcp |
Appendix J - Installing Multiple Adapter Services on Windows Server
Multiple Adapter services can run on the same Windows server which are used from different SAP instances based on their respective PROGRAM_ID's. For example, this may be used if you want to run separate SureTax Adapters for Production, QA, Dev, etc.
Important steps:
- Create different folders for different adapter services.
- E.g. if you want to run 2 separate SureTax Adapter services, you will have
- C:\STXAdapter
- C:\STXAdapterQA
- E.g. if you want to run 2 separate SureTax Adapter services, you will have
- For Each SureTax Adapter folder from above you will have to modify their respective SureTaxAdapter.exe.config (config) file. For each config file you will modify the following:
- Under <ServerSettings> -> <ServerConfiguration> -> <servers> -> <add ...>
- Modify this 'add' element to match the SAP system you want this SureTax Adapter service to connect with
- Under <ClientSettings> -> <DestinationConfiguration> -> <destinations> -> <add ...>
- Modify this 'add' element to match the SAP system you want this SureTax Adapter service to connect with
- You will want to use different service names when you run installservice.cmd and uninstallservice.cmd
- E.g. for the given examples you may have the following: - STAdapterService for C:\STXAdapter - STAdapterServiceQA for C:\STXAdapterQA
- Under <ServerSettings> -> <ServerConfiguration> -> <servers> -> <add ...>
- Ensure to use different PROGRAM_ID's from different SAP systems that you want to use different SureTax Adapter services
Appendix K - Updating Existing installation of SureTax Adapter
For updating existing installation of the SureTax Adapter, you can use the 'Incremental' release package:
Steps:
- Unzip the Incremental zip file
- Copy its contents into your existing SureTax Adapter folder C:\STXAdapter (it may have a different name).
- Restart your SureTax Adapter windows service
Appendix L - Re-installing (includes migrating) Existing installation of SureTax Adapter
For re-installing and migrating the SureTax Adapter, it is important to reuse the existing SureTax Adapter config file (SureTaxAdapter.exe.config). You will want to use the 'Complete' package zip file.
Steps:
- Backup your current SureTax Adapter folder on your Windows machine.
- You may find this file under C:\STXAdapter (they may have a different name)
- Important to ensure to save your current config file SureTaxAdapter.exe.config as this will be used later.
- For your SureTax Adapter run uninstallservice.cmd located in your current SureTax Adapter folder
- You may find this file under C:\STXAdapter (they may have a different name)
- You can rename (delete after installation is completed) your current SureTax Adapter folder
- Follow the regular installation steps, but the sections regarding updating the config file (SureTaxAdapter.exe.config) are optional as you can use the backup of SureTaxAdapter.exe.config you have saved in Step #1.
- Important: Copy your backup of SureTaxAdapter.exe.config into your new SureTax Adapter folder
Appendix M -- Possible Issues and Fixes while installation of Adapter
Issue Description: When you see below error while doing connectivity test, please make sure to update reginfo file with below information
- P TP=ServiceName HOST=HostName CANCEL=HostName ACCESS=*
- Reginfo file may be found (sample folder structure might be /usr/sap/***/***/global/reginfo)
Issue Description: When you can't stop the Adapter Service from services window. You may want to use below.
- Run this command in the elevated command prompt (it is important, or access denied error will appear):\
*sc queryex AdapterServiceName(STXAdapter)*
- You will get the PID for the Adapter Service from above and use taskkill to force kill a stuck process with the PID, run the command:
*taskkill /PID (Provide the PID from above) /F*
Issue Description: When you see an error in the log files which tells something like below --
SAP.Middleware.Connector.RfcInvalidStateException: No ServerConfiguration defined.
Then please make sure that in configuration file, both the name tag under servers and value tag for rfsServerName are same.
- <servers>
<add NAME="STA1" GWHOST="10.171.0.19" GWSERV="sapgw04" PROGRAM_ID="STX" REPOSITORY_DESTINATION="SureTax_KEC_00" REG_COUNT="5" />
</servers>
- <add key="rfcServerName" value="STA1" />
Issue Description: When you see an error as AdapterService not Registered.
Please check the logs to see any possible information.
Please make sure the below information is correct.
Config xml is valid xml file.
SAP Username and Password are correct.
ASHost, GWHost, GWSERV, SYSNR are correct.
SAP Client is correct.
Entries are there in c:\windows\system32\drivers\etc\services files based on the GWSERV and SYSNR.