程序中取得流水号

本文介绍在ABAP环境中如何通过SNUM和SNRO事务码定义对象并获取流水号,探讨了使用NUMBER_GET_NEXT函数模块过程中可能出现的问题及解决方案,包括解决跳号现象的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序中取得流水号

REPORT ZLC_NUMBER_RANGE.

DATA W_MATNR TYPE MATNR.

START-OF-SELECTION.

CALLFUNCTION 'NUMBER_RANGE_ENQUEUE'
EXPORTING
OBJECT ='ZLC_001' "Ceate with SNUM or SNRO
EXCEPTIONS
FOREIGN_LOCK =1
OBJECT_NOT_FOUND= 2
SYSTEM_FAILURE =3
OTHERS =4.

CALLFUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR ='00'
OBJECT ='ZLC_001'                "该对象可以在T-Code:SNRO创建或者选中系统自带的对象   
IMPORTING
NUMBER =W_MATNR
EXCEPTIONS
INTERVAL_NOT_FOUND =1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND =3
QUANTITY_IS_0 =4
QUANTITY_IS_NOT_1 =5
INTERNAL_OVERFLOW =6
OTHERS =7.

CALLFUNCTION 'NUMBER_RANGE_DEQUEUE'
EXPORTING
OBJECT= 'ZLC_001'.

IFSY-SUBRC <> 0.
MESSAGEID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITHSY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


Tcode:SNUM定义对象,添加号码范围,使用 NUMBER_GET_NEXT获取号码。有时候会出现跳号现象,2个方法解决。
1.SNUM定义对象时,把缓存数设置为0.这个也可以用在SNRO里进行设置。一般这样就可以解决问题。如果还存在这种现象:
2. call function 'NUMBER_GET_NEXT'
exporting
nr_range_nr = '01'
object = 'ZTEST_NUM'
ignore_buffer = 'X'
importing
number = Num
把FUNCTION里的ignore_buffer = 'X'设置为X即可解决


if sy-subrc = 0.
concatenate sy-datum+4(4) Num into Num.
select single * from t100 into corresponding fields of t100 where sprsl = 'M'
and arbgb = sy-msgid and msgnr = sy-msgno.
if sy-subrc = 0.
move t100-text to text.
replace '&' with sy-msgv1 into text. condense text.
replace '&' with sy-msgv2 into text. condense text.
replace '&' with sy-msgv3 into text. condense text.
endif.
endif.
write:/'Number is:'.write: Num.
write:/'text is:'.write: text.

 

 

对号码对象间隔的数值状态初始化函数:NUMBER_RANGE_INTERVAL_INIT

  CALL FUNCTION 'NUMBER_RANGE_INTERVAL_INIT'
    EXPORTING
      OBJECT                  =

*     SUBOBJECT               = ' '
*   EXCEPTIONS
*     NO_INTERVAL_FOUND       = 1
*     OBJECT_NOT_FOUND        = 2
*     OTHERS                  = 3

转载于:https://www.cnblogs.com/seven1314pp/p/5993673.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值