开发中经常会使用不重复的流水号,比如各种单据单号。这类流水号可以使用一个函数得到。在使用这个函数之前要先建立编码范围对象。具体是使用TCODE SNRO 或 SNUN 创建 Z_TEST这个编码范围对象,并要通过间隔按钮为Z_TEST指定最大和最小值。
下面共享一段代码,调试的前提是先建议编码范围对象
***创建流水号对象时指定了编号长度域为 num10,所以定义变量接收
DATA num(10) TYPE n.
IF sy-subrc <> 0 .
MESSAGE '锁定中,请稍后创建' TYPE 'E' DISPLAY LIKE 'S'.
ELSE.
**得到连续&不重复的流水号
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '12' "12为流水号的前两位数值,
object = 'Z_TEST' "Z_TEST为使用TCODE:SNRO或SNUM创建的编码范围对象
IMPORTING
number = num. "用于接收产生的流水号
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
***流水号产生之后解除锁定
CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
EXPORTING
object = 'Z_TEST'.