SAP 操作手册之号码范围对象

作者:ABAP技巧与实战 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Basis, Data Engineering, Productivity, 开发, 数据工程, 生产力, 系统管理

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

前言

编号范围对象(NUMBER RANGE)是SAP ERP 软件中的一个重要概念. 主要用来获取流水号.

在标准功能及自开发功能中大量使用.系统中的几乎所有对象的号码都是通过编号范围对象获取的.

编号范围对象的创建

事务代码SNRO 用于创建编号范围对象.

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

编号范围对象的配置

创建好的编号范围对象需要在不同的集团维护号码范围.该维护结果会记录到表NRIV中. 如果碰到大量维护的情况, 也可以用SE16N直接编辑表NRIV.

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

编号获取

创建好的号码对象可以调用函数

NUMBER_GET_NEXT 获取号码对象的下一个号码.

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

编号范围的缓存

创建编号范围对象时, 按需要设置一个合理的缓冲数量. **这个缓冲设置对系统性能影响至关重要.**

不同的缓冲类型对系统的影响不太一样, 感兴趣的朋友可以通过F1帮助了解缓冲类型的区别. **一般设置主内存缓存就行了.**

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

号码缓冲的检查

SM56 检查number range 缓冲情况

然后检查一下表TNRO 看看NUMBER RANGE 对象是否都有BUFFER

可以通过ST02 菜单 查看号码缓存的情况. (图一)

SM56中 条目的最大数量是允许缓存的号码对象的个数,条目的当前数量是已经缓存了的号码对象的个数 (图二)

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

图一

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

图二

编号范围缓存对性能的影响

当大量处理数据需要不断的获取新的号码时,需随时观察SM50/SM66. 如果进程监控中出现大量等待 NRIV的情况.

则说明号码范围缓存不足影响了系统性能.解决方法如下

_**01** _

**查找影响性能的号码范围**

使用事务代码SM50或SM66查看正在访问表NRIV的进程,双击该进程能看到使用的号码范围对象明细(这个细节无法截图体现)

找到大量进程使用的号码范围对象 比如 KALK

如果出现进程访问NRIV导致了数据库死锁. 就需要强制终止死锁的进程.

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧 终止进程

> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485623&idx=1&sn=4da3be3efce4c1c3b764da3ca8495695&chksm=cf5dd581f82a5c97340201ed0f7b92951ff5e17991c2693ac1c483b388bb0acb4acb5ac11e9a#rd)

_**02** _

**检查号码对象是否维护了缓存**

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

_**03** _

**检查号码对象是否成功缓存**

执行事物代码ST02检查号码范围是否成功的缓存了.

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

如果ST02中有缓存. 则考虑加大缓存数改善性能

_**04** _

**重置缓存**

如果ST02中没有该对象的缓存. 执行后面的步骤重置缓存

SM56 先重置特定对象的缓存

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

_**05** _

**检查重置结果**

重置后. 执行SE37 获取一下该对象的号码

然后再检查ST02中的缓存

(示例: 对于自定义列表的程序ZLIST_PARA_N ,因为每个商品都要快速获取大量获取KALK的号码. 所以可以把这个号码范围设置为最大 9千万.

期初列表结束后再调整到合理的范畴 门店数*并发进程数)

KLAK设置成主内存缓存时.

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

貌似每个服务器也是单独缓存的. 因为不同的服务器进入ST02看到的缓存号码从 缓存号码到 的内容不一致(如下图, 可以看到每个服务器都缓存了9千万的数据

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

总结

号码范围是SAP中的很重要的一个概念. 项目上线前,一般需要针对常用单据的编号范围对象设置一个合适的缓存数量.

以免大量业务处理同时获取新的号码产生大量的NRIV表的写入,导致系统瓶颈, 从而影响整个系统的性能.

**设置号码范围缓存可能出现以下情况**

• **系统中产生的单号出现跳号的现象**

• **单号顺序与创建时间戳顺序不一致**

一般情况下,客户可能不希望财务凭证号码出现上述情况.这就需要对财务凭证的号码范围对象取消缓存,并接受由此导致的系统性能下降.

** THE **

** END **

**约定**

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

**公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群**

SAP 操作手册之号码范围对象 - 封面图
SAP 操作手册之号码范围对象 - 封面图
ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAP操作手册之号码范围对象.md」整理生成,仅用于内部技术分享与学习交流。