abap number range
如有转载请注明出处:http://blog.csdn.net/donkey2004112103/archive/2009/04/13/4070996.aspx
1.sap numbe range在标准程序中使用
之前一直不明白会计凭证编号sap是怎么做到连续编号,还以为是简单的做个全局变量,虽然形式差不多,但是sap有专门的TCODE和方法,可以保证号码不重复且可以做到只在某一个区间。甚至每年都会重新编号,像会计凭证编号,当达到某一程度的时候还会提醒。
2.如何自己创建
TCODE:SNRO。可以自己创建。如图:
![]()
短文本和长文本用来说明这个编号范围对象,输入任意描述即可。
子对象数据元素我们这里不填。这里需要说明一下,所谓子对象,多数指一个组织结构,比如公司代码、销售组织、工厂等,这样编号就在对应的每个组织下面独立编号,最典型的例子是财务凭证,每个公司代码下的财务凭证都是独立编号的(其对应的数据表
BKPF,也必定把公司代码做为一个键字段)。而我们这个调度单对应于销售订单,销售订单没有按照组织级别分别编号,因此相应的调度单也就不需要了。
到期年标记是指编号按年度归零,每当开始一个新年度时,相应的编号也需要从头开始,比如财务凭证和物料凭证都是这样(比如表BKPF
和MKPF,都把年度做为一个键字段) ,而我们的调度单不需要对应年度,因此这里也不打勾。
编号长度域就填创建的域,但是一定要先激活。指定这个编号范围对象 ZDIAODUDAN 的长度,我们定义域长度为
10,因此这个编号范围对象生成的编号长度也是 10 位。
无翻滚间隔是指如果编号达到最大,是否自动从头开始,勾上就不从头开始,而在获取编号的时候提示出错。我们这里应该打勾。
编号范围处理,属于翻译问题,实际就是编号范围的事务码,如果指定这个事务码,就可以不需要通过 SNUM 或者 SNRO
的主屏幕然后输入编号范围对象的名字来维护这个编号范围,而可以输入事务码直接进入它的号码范围维护屏幕。
警告百分比是指如果编号使用到一定比例,就发出系统警告,提示管理人员增大范围或者进行历史数据归档,避免编号全部用完后影响正常业务,这里我们填写
95,就是95%的时候提示。
主内存缓冲是指系统为了提高性能而预先取出一些编号放在应用服务器上,当程序取用编号时直接从应用服务器获取,而无需再读取数据库了。通常,如果对号码的连续性要求不高的情况下可以使用这种方式,而如果是财务凭证等要求连续的编号,则应该把主内存缓冲关闭,方法是通过菜单“编辑-设置缓存-无缓存”。
接着就可以在如图:
![]()
间隔中添加编号范围。
3.程序中如何使用
程序中我们也可以使用number range。使用三个函数即可。下面做以说明。
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
EXPORTING
object = 'ZSDDNR'
EXCEPTIONS
foreign_lock = 1
object_not_found = 2
system_failure = 3
OTHERS = 4.
* **如果号码范围存在
if sy-subrc eq 0 .
* ****得到一个号码,
CALL
FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'ZSDDNR'
IMPORTING
number = L_SEQNO
* quantity = quant
* returncode =
code
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
* ***将号码累加
CALL
FUNCTION 'NUMBER_RANGE_DEQUEUE'
EXPORTING
object = 'ZSDDNR'
EXCEPTIONS
object_not_found = 1
OTHERS =
2.
else .
raise NUM_RANGE_ERROR .
endif .
很容易理解,首先判断是否有这个number
range,如果存在的话,就获得下个序号,最后一个函数我估计意思是释放这个全局变量的内存。’ZSDDNR’就是我们创建的number
range。如此就可以像会计凭证编号那样每次都可以自动生成流水号了!流水号可以在自建表中用作主键,它的产生就靠上面的函数。
*******************************************************************************************************
Number Range 管理之并行缓冲:
常用的事务代码SNRO,SM56还有一些业务专用的号码管理,可以在SPRO中查找:
SNRO :Number Range 管理

一般的操作是维护号码范围。如RV_BELEG 是SD凭证编码管理。

并行缓冲:所为并行是指word process DIA的之间是并行获得的,如有8个instance ,每个instance 有40个WP,那号码段缓冲区表中会直接分配320*200个号码。 使用并行缓冲会提高并行处理的速度,如批量过账等。
数量号:一次分配占用的号码数量。
SM56: 缓冲区管理
SM56是管理一般编码范围的缓冲区,重置缓冲区,当每次重置时会浪费200个号,如上配置个数,一定要注意不适用并行缓冲。

哪并行缓冲区如何重置:
Note: 1244898 NK: Reorganization of local buffers for intervals
Report : NK_REORGANIZE
此报表有测试功能,可以先运行测试模式检查一下各WP的编码范围,如果是当个instance有问题也可以单独重置。

注意:并行缓冲重置会导致大量的号码段无用,慎用!
abap number range的更多相关文章
- SNRO:Number Range
业务对象是在一定的编号范围内分配编号的,编号既可以是内部分配也可以是外部分配.对于外部分配,用户输入编号,系统检查这个编号是否被占用.对于内部分配,系统会自动的把编号分配给业务对象.所以内部分配和外部 ...
- Number Range 管理之并行缓冲
Number Range 管理之并行缓冲: 常用的事务代码SNRO,SM56还有一些业务专用的号码管理,可以在SPRO中查找: SNRO :Number Range 管理 一般的操作是维护号码范围.如 ...
- SAP NUMBER RANGE维护配置object FBN1 Deletion only possible if status is initial
背景: 错误日志: SAP FBN1 Deletion only possible if status is initial 场景: 如果目标机已有NUMBER RANGE 不为0,需要删除配置年为9 ...
- POJ2104 K-th Number Range Tree
又是区间第k大,这次选择这道题是为以后写线段树套平衡树铺路的.Range Tree可以理解成线段树套vector吧,相当于每个结点多存了对应区间的一个排好序的序列.画一下就会知道空间的消耗是nlogn ...
- 【由VerySky原创】由Number Range 导致凭证生成但无法保存的问题
工厂正常生产,但某天突然发生车辆下线失败销售入库报错( MFBF凭证不能保存\ 下线车无法产生131 )的问题: ST22发现程序dump信息 分析 | SAPSQL_ARRAY_INSERT_DUP ...
- [Regex Expression] Match mutli-line number, number range
/^-?\d{,}\.\d+$/gm
- ABAP 将Range 条目数转化
RANGES:r_vbeln FOR lips-vbeln. r_vbeln-sign = 'I'. r_vbeln-option = 'EQ'. LOOP AT gt_item INTO gw_it ...
- Automatically generate serial number in abap
流水号的产生: 在ABAP开发中,很多地方都需要按照自己的规则生成流水号,把这些流水号保存进透明表,作为唯一标示. 一. 系统中设定流水号 使用T-Code SNRO来创建一个流水号标识对象. 输 ...
- “Guess the number” game
项目描述:https://class.coursera.org/interactivepython-004/human_grading/view/courses/972072/assessments/ ...
随机推荐
- DevExpress.XtraGrid winform试用分享
DevExpress.XtraGrid在winform里使用还挺麻烦,为了减少重复代码和代码复用,本人针对DevExpress.XtraGrid封装了一个Form的基类,其中涵盖了DevExpress ...
- 理解RxJava:(一)基础知识
理解RxJava:(一)基础知识 本文翻译自Grokking RxJava, Part 1: The Basics,著作权归原作者danlew所有.译文由JohnTsai翻译.转载请注明出处,并保留此 ...
- 安卓开发笔记——关于图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
在开发安卓应用中避免不了要使用到网络图片,获取网络图片很简单,但是需要付出一定的代价——流量.对于少数的图片而言问题不大,但如果手机应用中包含大量的图片,这势必会耗费用户的一定流量,如果我们不加以处理 ...
- Android代码优化——使用Android lint工具
作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常 ...
- zepto - push
var arr = ['1', '2', '3', '4']; arr.push('qwe'); console.log(arr);
- andorid jni入门教程一之helloworld
开发环境:windows2007, eclipse 做anroid越深发现用到底层开发的时候越多,但是我以前也没有搞过,因此现在打算好好学习学习.先从最简单的做起.正所谓万事开头难啊. 搞了近一天终于 ...
- Unity 动画
Unity 并没有自带建模工具. 3D建模工具 maya, 3dmax, blender Skinned Mesh Renderer Mesh Renderer Mesh Filter Modelli ...
- codeforces B. Friends and Presents(二分+容斥)
题意:从1....v这些数中找到c1个数不能被x整除,c2个数不能被y整除! 并且这c1个数和这c2个数没有相同的!给定c1, c2, x, y, 求最小的v的值! 思路: 二分+容斥,二分找到v的值 ...
- Direct3D11学习:(零)常见问题及解决方法整理
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 在D3D11学习的这个系列中,单独写一篇文章来记录自己学习过程中遇到的问题及最后的解决方法. 这篇文章的目的 ...
- 【Git使用】强制推送代码到多个远程仓库
只吃了一个香蕉的晚上 一直预报的台风没有来,大盘也飘红了,世界好像变得越来越美好了似的.前两天,晚上下班坐地铁回家,靠在地铁门上看书,竟然坐到了终点站已全然不知,我也不知道我怎么了.怎么了.怎么了!最 ...