天天看点

SAP 流水号使用示例

转载自:https://blog.csdn.net/yuqinying112/article/details/7880653

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。如此就可以像会计凭证编号那样每次都可以自动生成流水号了!流水号可以在自建表中用作主键,它的产生就靠上面的函数。