Wolters Kluwer CCH® SureTax®

    Show / Hide Table of Contents

    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.

    Diagram Description automatically generated

    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")
    • 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:

    1. 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.
    2. Confirm that the SureTax system has been activated and enabled for the client. Make sure to have the SureTax Client Number and Validation Key.

    3. 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).

    4. 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:
          • Download .NET Framework 4.6.2 Runtime
        • For Windows Server 2019:
          • Download .NET Framework 4.8 Runtime
        • For Windows Server 2022:
          • Download .NET Framework 4.8.1 Runtime
      • Install SAP .NET Connector, version 3.1
        • Download SAP Connector for Microsoft .NET 3.1.5.0 for Windows 64 bit Compiled with .NET Framework 4.6.2
      • Install Microsoft Visual C++ 2010 Redistributable Package
        • Download Microsoft Visual C++ Redistributable Version 14.42.34433.0
    5. Ensure your SAP partner has direct access to this server where SureTax adapter is to be installed.

    6. 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

    1. 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)
    2. 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.

    3. 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>
    
    1. 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.
        1. "0": no tracing
        2. "1": trace all function calls
        3. "2": function calls and public API calls
        4. "3": function calls, public API calls and internal method calls
        5. "4": function calls, public API calls, internal method calls and network hex dump

    <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" /> -->

    1. 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:
        1. ValidationKeyList or ValidationKeyAddressList=
          1. <SAP COMP_CODE>=<Client Number>~<Validation Key>|<additional entries can be added separated by '|' character.
          2. Replace the x values with the above "xxx=xxxxxxxx~xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      • If you only have 1 SureTax ClientNumber/ValidationKey, you can comment out ValidationKeyList and ValidationKeyAddressList.
      • Set UseCulture value to 1 (if instructed).

    <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.
    1. 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").
    2. 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.
    3. 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
    4. Open the Services window, and verify the newly installed service is Running and is set to Automatic. Control Panel-->Administrative Tools -->Services
    5. Review logging settings for STXAdapter on SureTax server (Windows server)
    6. 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
    1. Once the adapter is installed, Test Connectivity. You should get a valid/successful connection to SureTax using SAP Transaction Code SM59.

    1. Log into SAP and go to gateway monitor on SMGW to see the logged on clients

    1. Go to SE37 to test the RFC_DETERMINE_JURISDICTION call and click Execute:

    1. Under Location Data, enter valid address information for a US address:

    1. Green arrow back, and enter SureTax as the RFC Target System:

    1. Click Execute and you should have results in the Location Results section:

    1. 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:

    1. 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;

    1. 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.

    1. Define interface version -- the current SAP-API interface version is TAXDOC00.

    2. 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.

    1. 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.

    1. 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.

    1. Setup the appropriate US tax procedure in SAP
    2. Activating the Tax Interface System
    3. Configuring the External Tax Document
    4. Defining the tax jurisdiction code structure
    5. Testing the external system tax data retrieval
    6. Customizing Master Data Tax Classifications (SD)
    7. Customizing Master Data Tax Indicators (MM)
    8. Maintaining Master Data (SD)
    9. Maintaining Master data (MM)
    10. Setting up tax codes
    11. Setting up SD condition records
    12. 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
    1. 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)
    2. 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.
    3. 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:

    1. Customer Pricing procedure: RVAXUD (SD)

    2. 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:

    1. 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
    2. 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
    3. 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:

    1. Unzip the Incremental zip file
    2. Copy its contents into your existing SureTax Adapter folder C:\STXAdapter (it may have a different name).
    3. 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:

    1. 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.
    2. 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)
    3. You can rename (delete after installation is completed) your current SureTax Adapter folder
    4. 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.
























    Wolters Kluwer Product Name - Page anchor links toWolters Kluwer Product Name - Page anchor links to
    © Wolters Kluwer and/or its affiliates. All rights reserved.