Hello SAP Practitioners,
Greetings for the day,
In my last project I’ve encountered an issue and I’ve noticed that many people are still finding difficulty in getting the exact answer for their question in SCN and Google as well. As I’ve identified the cause for the issue, thought of creating this document by intending it would help them to understand their issue and resolve the same.
Summary of the Issue:
When I click on print preview button for a particular purchase order, the currency format was displaying incorrectly but the other purchase orders were displaying accurately, as it is displayed in change/display mode of purchase order screen.
Example: For the purchase order 4500002417 I’ve entered amount as USD 1,000,000.00 and when I click on print preview it has displayed the same as in the purchase order change/display screen. But for the other purchase order 4500002416, I’ve entered amount as QAR 1,000,000.00 but when I click on print preview, it has displayed as 1.000.000,00. I wonder how come it is displaying differently from the change/display screen of the same purchase order! Decimal was getting separated by a ‘Comma’ (,) Instead of a ‘Dot’ (.).
Please find the below screen shots for your better understanding.
From the functional point of view I’ve analyzed a lot to identify the cause for the issue but couldn’t succeed. Then I went Google’s help but I didn’t get a clear answer as I was seeing many responses were talking about only ‘Decimal Format Settings @ User Profile’ – SU3. Finally I took an ABAPer help to fix the issue as I did not find the right answer in Google.
Settings for Decimal Format in ‘User Profile’ (SU3): Before moving further I would like to make you clear that, decimal format which we are maintaining in ‘User Profile’ wouldn’t be having any impact on purchase order print preview, instead It would be having impact on only purchase order creation/change/display screen, so for the above issue, no need of checking the user profile-decimal format.
Cause for the Issue:
When I found the cause for the issue I came to know that, the actual system behavior is correct. You might ask me how the system is behaving correctly, when it is showing the decimals wrongly? The answer is, the currency format in the ‘PO Print Preview’ is derived with the combination of ‘Vendor’ & ‘Vendor Country’. Few countries are separating decimals with comma (,) and few are with period/dot (.).
Example: If we are raising a purchase order to a British Vendor, usually he reads his PO value in his local currency, so system would check the vendor & his country and based on that it would display the currency format in the print preview. As shown in the below table, the currency format for British vendor would be displayed like 1,234,567,890.00.
As per the above purchase order 4500002416, we are sending the PO to a German vendor, so his currency format is different than the other PO 4500002416, hence it is showing as 1.000.000,00 instead 1,000,000.00.
Note: Not all the countries in world are using the same decimal format, different countries officially designate different symbols for the decimal mark. Please see the below table as an example, how the decimal notations are different between the countries.
Please go through the below link to know more about the ‘Decimal Notation‘.
Where can I see/maintain the currency format for the respective countries?
The standard SAP practice is, while implementing SAP, Finance Team and Business Team will have a discussion on maintaining the currency format for each countries. As it is having major impact on all the financial transaction, they will take a call at the time of implementation itself. Changing the currency format at the later stage is not advisable.
You can see the settings in OY01 as shown in the below screen shot.
How this functionality works only for the ‘PO Print Preview‘ not for the ‘PO Create/Change/Display Screen’?
As per the standard SAP, the purchase order forms contains a function called ‘Set Country’. This function will check the purchase order vendor and country of the vendor, then it goes to the table T005X (Countries – Decimal point and date format (SET COUNTRY)) –> pass the country name and gets the currency format for the country and updates the same in purchase order print preview.
This functionality works at the smart form program level not at the purchase order create/change/display program level, so we will not be facing any ‘Decimal Notation’ issue in the purchase order screen. PO screen works as we set the decimal notation in the user profile.
How to check whether my PO form has this function?
You can go to NACE settings find the smart form name–> and then go to smart form – Initialization tab–> search for term ‘set country’, if you find an entry as shown below, that means your PO form is calling this function and your decimal notation works based on this logic.
Clarified the cause of the issue to the business team and advised them to not to make any changes to the function as it working fine as per the standard practice. But based on the business requirement we have given them one more output type ‘ZNEU’, so that whenever they want to have a print with country specific currency format they can use ‘NEU’ output type and whenever they want as per the normal currency format they can use ‘ZNEU’ output type.
In order to fulfill the customer requirement, we have created a new Z smart form, created ‘ZNEU’ output type and assigned the standard PO print program & Z-Smart Form in NACE settings–> and then maintained ‘Output-Condition Record for Purchase Order’ in MN04. Now whenever he clicks on print preview, he will get two output types, so that he can select whatever he wants.
Hope, I’ve clearly explained you the scenario to the best of my knowledge. Do let me know, if anything is not clear for u, so that I can explain in detail.
Thank you so much for reading the blog.