All SAP objects such as master data or transactional data are assigned in SAP to number ranges. Users experience number skips from time to time. Learn why these gaps occur and how to avoid them.
Dear SAP Financials Expert,
Thanks for your article in FI/CO Expert on aligning the MM and FI document numbers (May 2004)). We used your article to configure this process in our system recently. We have noticed that Logistic Invoice Verification (LIV) has skipped some numbers in the number sequence 52xxxxxxxxx in table BKPF/RBKP in the last two days. For example the number range sequence skipped from 5200000126 to 5200000130. We know that there is a caveat that continuous number assignments are not guaranteed, but should the system skip numbers? Can you help us to understand if this a natural phenomenon with the MM/FI number ranges for same documents?
-SAP Support Director
A couple of weeks ago, I received this question about skipped numbers via an email from a newsletter reader. This problem comes up frequently surrounding yearly audits. Usually auditors question gaps in financial document ranges, and by addressing the problem with some the following customizing steps you can avoid having to give lengthy explanations. Well, the reason why number ranges are skipped is that number range buffering is switched on for the specific number range object. I’ll give you more detail on that concept.
All master data or transactional data in SAP is assigned to number range objects. In the case of LIV invoices, the corresponding number range object is RE_BELEG. If number range buffering is switched on, an interval of numbers is stored in the shared memory of the application server. The interval depends on a setting of the number range object, called No. of numbers that must be held in the buffer. The standard-delivered SAP setting for number range object RE_BELEG is 10. That means that at the time of the first posting of a LIV invoice, the system assigns an interval of 10 numbers to a user. Once this user posts 10 invoices, using all numbers of this interval, the system assigns the next interval of 10 numbers to this user.
Why are numbers then skipped, if the system assigns continuous intervals to a user? The reason is that multiple users are using the same number range object in parallel, and different intervals are assigned to these users. Another reason is that the shared memory is deleted if the system is shut down, for example, because of regular off-line system backups.
Example Postings and Number Assignments
To understand the above concept and the impact, I’ll use LIV invoice posting as an example. Assume you have two users who post LIV invoices at the same time. The number range assigned to LIV invoices is from 5200000000 to 5299999999. Number range buffering is switched on and the No. of numbers that must be held in the buffer is set to 5.
User A posts the first invoice and the system assigns an interval of five numbers (5200000000 – 5200000004) to this user. The second invoice is also posted by user A. The invoice document number is assigned from the buffer (5200000001). The next invoice, however, is posted by user B. The system assigns the next interval (520000005 – 5200000009) to this user and posts the invoice with number 520000005. User B continues to post documents. After he has posted five documents, the system assigns the next interval to him (520000010 – 5200000014).
Now an off-line system backup is performed by your Basis team, which deletes all assigned number range buffers once the system is shut down. The result is that a new number range interval is assigned to a user at the time the next invoice is posted (Table 1).
Invoice No. | Invoice posted by user | Invoice posted with document number | Comment |
1 | A | 5200000000 | Interval 5200000000 – 5200000004 gets assigned to user A |
2 | A | 5200000001 | |
3 | B | 5200000005 | Interval 520000005 – 5200000009 is assigned to user B |
4 | A | 5200000002 | |
5 | B | 5200000006 | |
6 | B | 5200000007 | |
7 | B | 5200000008 | |
8 | B | 5200000009 | |
9 | B | 5200000010 | Interval 520000010 – 5200000014 is assigned to user B |
| | | System shut down due to off-line system backup (Number range buffer is deleted) |
10 | A | 5200000015 | Interval 5200000015 – 5200000019 is assigned to user A |
11 | B | 5200000020 | Interval 520000020 – 5200000024 is assigned to user B |
12 | B | 5200000021 | |
Table 1The result of the above example is that you end up with document number gaps between 5200000003 – 5200000004 as well as 5200000011 – 5200000014.The question now is, how can you avoid these gaps in document numbers?
Switch Off Number Buffering
You can maintain all SAP number ranges with transaction SNRO (number range object maintenance). In the object field, type in the number range object and click on the change icon.
A screen with the number range details is displayed. As you can see, for number range object RE_BELEG, the check ox Main memory buffering is selected and the No. of numbers in buffer is set to 10 (Figure 1).

Figure 1
Details of Number range object
To switch the number range buffering off, go to Edit>Set-up buffering>No Buffering (Figure 2).

Figure 2
Switch off number buffering
As you can see now, the description for buffering is switched to Number ranges not buffered (Figure 3).

Figure 3
Number range buffering is switched off
The final step is to save the changes in the number range object. Once you click on save, you get the following warning message: “Caution!!! Not buffered objects can cause performance problems and block servers!!” (Figure 4). Click on the Yes button and the number range object change is saved.

Figure 4
Warning message during save of number range object
This warning message means that you might experience performance problems, since the system has to determine the next available number from the database, which is more time consuming than from the buffer. I have never experienced any performance problems by switching off the buffering. In the case of LIV invoice postings the performance loss is in the millisecond range, which is not noticeable for users.
Note
The new number range setting is only active after the next system restart.
This warning message means that you might experience performance problems, since the system has to determine the next available number from the database, which is more time consuming than from the buffer. I have never experienced any performance problems by switching off the buffering. In the case of LIV invoice postings the performance loss is in the millisecond range, which is not noticeable for users.
You can also experience number range gaps in other FI and CO master and transactional data. Table 2 shows a list of number range objects in FI and CO with the standard delivered buffering settings.
Master data/ transactional data | Number range object | Buffering | No. of numbers held in buffer |
Customer master data | DEBITOR | Yes | 5 |
FI document numbers | RF_BELEG | No | |
Vendor master data | KREDITOR | Yes | 5 |
Internal orders | AUFTRAG | Yes | 10 |
CO document numbers | RK_BELEG | Yes | 100 |
Table 2
How to View Number Ranges
Use transaction SE16 for table TNRO for an overview of all number ranges in your system that currently have buffering switched on. Select buffering > 0. The result is an overview of all buffering number ranges including object name and the size of the buffer (Figure 5).

Figure 5
Overview of buffering number ranges
Martin Ullmann
Martin Ullmann is president of DAP Consulting, which specializes in public sector industries. He has more than 12 years of experience with SAP R/3. His main area of expertise lies in the FI/CO
area, with focus on new components, integration, enhancements, and business process improvements.
You may contact the author at Martin.Ullmann@DAP-Consulting.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.