Integrate with SAP when Unit Price has more than two decimal places
Problem
How do I integrate Coupa transactions with Unit Price value that has more than two decimal places into SAP?
Solution
SAP standard config only supports 2 decimal places for List Price field value. If a user tries to enter more than 2 decimal places SAP will throw an error message “Enter a value that matches the unit USD and has a maximum of 2 decimal places”.
How do Coupa customers handle this scenario during PO integration from Coupa to SAP since Coupa allows users to enter more than 2 decimal places for amount based transactions?
Following are the couple of options to handle this scenario:
Option 1: Remote Approver API call integration of pending approval Requisitions and PO Changes
Using this option, every requisition and PO change in pending approval status will be integrated from Coupa into SAP prior to issuing the PO or PO revisions in Coupa. This integration can be used to handle rest of the validations such as budget check, tax code verification, accounting validation etc.
-
Using this integration you can validate the decimal places on the Coupa transaction against a predefined set of decimal places for the currency code in the integration layer. If the validation fails the approval can be rejected with a proper error message via an API call and route it back to the requester. Integration layer has to store the currency codes and the allowed number of decimal places in this approach.
-
Another alternative to validate the decimal places on the Coupa transaction is to leverage the SAP standard function to perform the decimal validation. Configure the integration layer to transmit the REQ or PO change data from Coupa to SAP and execute the standard function (TCURX_READ) to validate the decimal places.
Option 2: Adjust the Pricing Quantity in SAP
This option requires price adjustment to the products/items in SAP. If a Product is priced at $12.3456 for qty of 1, set it up as $1234.56 for qty of 100. This will result in calculating to an equivalent value, but allows entry of more detailed decimals places without encountering maximum decimal places limits. More detailed examples are given below: