sap 流水号的创建与处理

本文详细介绍SAP系统中Number Range的使用方法,包括在标准程序中的应用、自行创建步骤及程序中的调用技巧。适合初学者快速入门。

出处:http://blog.youkuaiyun.com/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             = '1'                "这个就是维护的间隔号
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。如此就可以像会计凭证编号那样每次都可以自动生成流水号了!流水号可以在自建表中用作主键,它的产生就靠上面的函数。

SAP系统中设置和分配物料编码,首先需要理解SAP物料编码的构成以及它在物料主数据中的作用。物料编码包括系统内部编码(流水号)和物料类型两部分,而流水号又由8位数字组成,每个数字对应特定的物料类型,如成品、半成品等。分配物料编码时,需要遵循SAP的编码规则,确保编码的唯一性。 参考资源链接:[SAP物料编码详解:系统内部流水号类型规则](https://wenku.youkuaiyun.com/doc/46it52i0uz) 在SAP系统中,通常通过配置物料类型来自动化地生成编码。你可以在物料主数据视图中,设置物料类型和控制性信息,如编码范围和获取类型(如自动、手动等)。例如,对于成品(FERT),可以设置编码范围在***到***之间,这样SAP系统就会自动为新创建的成品物料生成一个在这个范围内的唯一编码。 实际操作中,可以在T.Code MM01中创建新的物料,系统会根据配置的物料类型和编码规则自动分配编码。如果需要手动分配,可以在创建物料时选择获取类型为“手动”,然后输入符合规则的流水号。务必注意编码的首位不能为0,并且编码需要遵守组织内部的编码规范。 推荐《SAP物料编码详解:系统内部流水号类型规则》来获取更深入的了解和实践指导。这份资料会详细说明SAP中物料编码的规则,包括如何设置物料类型,如何在系统中配置和维护流水号范围,以及如何处理特殊情况下的物料编码问题。通过阅读这份资料,你可以掌握SAP物料编码的完整流程和最佳实践,提升管理物料编码的效率和准确性。 参考资源链接:[SAP物料编码详解:系统内部流水号类型规则](https://wenku.youkuaiyun.com/doc/46it52i0uz)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值