ABAP-获取流水号函数

 1 DATA:l_num TYPE p LENGTH 4 .
 2 
 3 SELECT SINGLE *
 4   INTO @DATA(ls_snro)
 5   FROM zsd_snro
 6   WHERE name = 'ZSD_JS'
 7   AND snro = 'ZSDJS'.
 8 
 9 *每天重置流水号
10 IF ls_snro-zdate <> sy-datum OR ls_snro IS INITIAL .
11 
12   CALL FUNCTION 'NUMBER_RANGE_INTERVAL_INIT'
13     EXPORTING
14       object            = 'ZSDJS'
15 *     SUBOBJECT         = ' '
16 *     INTERVALS         =
17 *     CLIENT            = SY-MANDT
18 *     COMMIT            =
19     EXCEPTIONS
20       no_interval_found = 1
21       object_not_found  = 2
22       OTHERS            = 3.
23   IF sy-subrc = 0.
24 
25     COMMIT WORK AND WAIT .
26     ls_snro-name = 'ZSD_JS' .
27     ls_snro-snro = 'ZSDJS'.
28     ls_snro-zdate = sy-datum .
29     MODIFY zsd_snro FROM ls_snro .
30     IF sy-subrc = 0 .
31       COMMIT WORK .
32     ELSE .
33       ROLLBACK WORK .
34     ENDIF .
35 
36   ENDIF.
37 
38 ENDIF .
39 
40 *加锁
41 CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
42   EXPORTING
43     object           = 'ZSDJS'
44   EXCEPTIONS
45     foreign_lock     = 1
46     object_not_found = 2
47     system_failure   = 3
48     OTHERS           = 4.
49 
50 IF sy-subrc = 0.
51   "获取下个数字
52   CALL FUNCTION 'NUMBER_GET_NEXT'
53     EXPORTING
54       nr_range_nr             = '1'
55       object                  = 'ZSDJS'
56     IMPORTING
57       number                  = l_num
58     EXCEPTIONS
59       interval_not_found      = 1
60       number_range_not_intern = 2
61       object_not_found        = 3
62       quantity_is_0           = 4
63       quantity_is_not_1       = 5
64       interval_overflow       = 6
65       buffer_overflow         = 7
66       OTHERS                  = 8.
67   IF sy-subrc = 0.
68 
69     "解锁
70     CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
71       EXPORTING
72         object           = 'ZSDJS'
73       EXCEPTIONS
74         object_not_found = 1
75         OTHERS           = 2.
76 
77   ENDIF.
78 
79 ENDIF.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值