In SAP S/4HANA, Business Partner is the leading object and single entry point to maintain Business Partner, Customer and Supplier (formerly known as Vendor) master data. To use Business Partner, you need to firstly configure the number settings for it.
In this post blog, I’ll guide to understand Business Partner number range and resolve some common issues regarding on it.
Purpose and target
The purpose of this document is to provide general information for Business Partner number range and help you resolve some common issues for it.
Target audience: Implementation consultant
Version: SAP S/4HANA On premise 1610 and higher
Define Number Range and Groupings
Business Partner Grouping determines the number assigned to the business partner. You can firstly define Number Range and then Groupings via transaction code SPRO.
Define Number Range
SPRO-> Cross-Application Components -> SAP Business Partner -> Business Partner -> Basic Settings -> Number Ranges and Groupings -> Define Number Ranges
SPRO-> Cross-Application Components -> SAP Business Partner -> Business Partner -> Basic Settings -> Number Ranges and Groupings -> Define Groupings and Assign Number Ranges
Internal Number Range Or External Number Range
You may be confused about when internal number range should be used and when external number range should be used.
When you would like BP number to be assigned by system automatically, you use internal number range.
And normally when business partners are transferred from external systems, you define number ranges with external number assignment.
When you use external number range, the user needs to enter the number manually if he/she creates BP via transaction code BP.
Is it possible to change internal number range to external number range?
Yes. You could do that by changing the NR (Number Range) status to 0 and then set the external flag.
Internal number range: Business partner number range skip
While creating BP master data, the number ranges are being picked arbitrarily although using internal number range for BP grouping.
In the following screenshot, you could find the BP number is not continuous. For example, after BP 6352, it is BP 6361 instead of 6353.
Actually it is caused by the buffer. Let me explain in details.
There are two options, either having buffering set (Standard and recommended) or not having buffering set (Modification, not recommended.) You can check it via transaction code SNRO and the object name BU_PARTNER.
Buffering increases the performance of the server. This is why it exists is to help with system performance.
As far as I know, it is only the numbers of FI documents must be assigned sequentially due to legal reasons. There is no such legal regulation for the sequential numbering of vendors.
Buffering does however lead to gaps in the numbering of the BPs because, when you have, buffering activated the system loads the amount of numbers you have buffered into the memory on each application server. The behavior is being observed in the system if the system is running off several application servers. Each of these servers will call the buffer (5 numbers at a time for each server).
If for example your production system is running from 10 application servers and the buffer is set to 5 then the buffer could call 50 numbers into memory. When there is a rollback on an application server then the numbers are lost, they are not returned to the buffer. The numbers lost when from a rollback are never used.
Even when a rollback does not happen and all the numbers called to memory on an application server by the buffer are used they are not necessarily allocated in sequence by the system. For the purposes of an example, if three application servers on your one system load five numbers each into a buffer then the system will still allocate them in non-sequentially.
Server 1 loads 1001-1005
Server 2 loads 1005-1010
Server 3 loads 1011-1015
The system could allocate as follows
BP 1013 from Server 3
BP 1012 from Server 3
BP 1008 from Server 2
BP 1009 from Server 2
BP 1010 from Server 2
BP 1001 from Server 1
To come back to the topic around a roll back occurring if server 1 rolled back before the system allocated the numbers the buffer had called into memory on application server 1 then the numbers 1002,1003,1004,1005 would be lost and never returned.
When buffering is set two statements are true and unavoidable
- You may find that numbers are generated in a non-sequentially
- Under certain circumstances including the two I have gone into detail above, certain numbers are not assigned at all, that is, these numbers are skipped.
If you want to avoid gaps completely, you will have to switch off the buffering.
But I would not recommend you as it will impact your overall system.
Both the above-mentioned approaches of using and not using buffering have advantages and disadvantages which should be considered when considering whether buffering for a number range is set.
Having a buffer, you will not be able to have a consecutive and complete sequence of numbers but performance is better and therefore SAP recommends that the buffer be set. This is standard behavior when buffering is it is not possible to predict or control which numbers will be allocated or which numbers will be skipped or lost when buffering is used, this is not a bug or an error, even though the buffer is set to 5 the gaps between vendors could be and will be more depending on what several factors on the system at that time.
This does not mean that the difference will only be 5 or less.
If you can’t do without a consecutive and complete sequence of numbers, the only way to facilitate sequential creation of BPs would be to disable buffering on your system or to change the buffer from 5 to no buffering. This however is a modification (SAP Note 170183 would apply) and would also slow performance on your system as when a BP is created without buffering in place the system cannot call the preloaded buffered numbers from the memory on the application server and instead must go into the database each time to allocate a number.
Please read the following KBAs regarding this:
Error R1212 “Grouping XXX does not exist”
When you create a BP without selecting the grouping, Internal Standard Grouping will be selected by default.
You can define the Internal Standard Grouping via Path: SPRO -> Cross-Application Components -> SAP Business Partner -> Business Partner -> Basic Settings -> Number Ranges and Groupings -> Define Groupings and Assign Number Ranges
Meanwhile, you have absolutely opportunity to set a grouping for a user via
SU01 >> Parameters >> Enter the Parameter ID ‘BPP’ and enter the Grouping in ‘Parameter value’ in capital.
By this way, you need to ensure that the grouping has already been created and assigned to a number range.
Leading zeros in external number range
When you create an external interval from 0000600000 to 0000619999, numbers can be maintained such as 601023.
For alphanumeric numbers like 60EAPD the number has to be maintained with leading zeros such as 000060EAPD.
If you want to have a different check on the number please implement a custom logic to handle the ” A > Z ” logic. Keep in mind that the length of the number range will be considered and not the character ASCII values yet.
You can read the following KBA regarding on this:
I hope this blog post was helpful for you. If so, click on “like” or “share”. I’m looking forward to your feedback and thoughts or clarification questions you may have in the comment section below.