ABAP 获取流水单号(SNRO SAP自动编号)

**使用场景:**自建表增加数据的时候,需要获取一个唯一的有序的流水单号。

T-CODE: SNRO.
1.输入对象的名称,点击创建~
在这里插入图片描述
2.填写文本以及域
在这里插入图片描述

3.定制,填写后保存。(无缓冲:不跳号)
在这里插入图片描述
4.点击短文本上面的:间隔编辑按钮—>修改
在这里插入图片描述
5.填写起始编号与截至编号。
在这里插入图片描述
其中注意点:如果要其他client的起始编号和截至编号与这个client一致的话,需要点击:间隔—>传输,包入请求! 它不会给你自动包入请求中,这点需要注意。
在这里插入图片描述

二.程序中如何获取这流水编号呢?
源代码:

  DATA: LV_ZPPXNY  TYPE  RSNUM.
   DATA: nr     TYPE inri-nrrangenr,
        object TYPE inri-object.
   nr = '01'.  "间隔编辑里面起始编号前面的:号"
    object = 'ZPPXNYL'.  " 'ZPPXNYL' SNRO创建的对象名称"
    CLEAR LV_ZPPXNY.

 PERFORM  FRM_GET_NUMBER  USING nr  object   CHANGING LV_ZPPXNY.

 FORM FRM_GET_NUMBER  USING    P_NR      LIKE INRI-NRRANGENR
                              P_OBJECT  LIKE INRI-OBJECT   "编号范围对象名称  Add By Code_Tool"
                     CHANGING P_NUMBER.
  "调用函数:  Number range: Lock object Add By Code_Tool"
  CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
    EXPORTING
      OBJECT           = P_OBJECT
    EXCEPTIONS
      FOREIGN_LOCK     = 1
      OBJECT_NOT_FOUND = 2
      SYSTEM_FAILURE   = 3
      OTHERS           = 4.
  IF SY-SUBRC = 0.
    "调用函数:  NUmber range: Assigns next free number Add By Code_Tool"
    CALL FUNCTION 'NUMBER_GET_NEXT'
      EXPORTING
        NR_RANGE_NR             = P_NR
        OBJECT                  = P_OBJECT
        QUANTITY                = '1'
      IMPORTING
        NUMBER                  = P_NUMBER
      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.
    IF SY-SUBRC <> 0.
      MESSAGE E001(00) WITH '无法获取新的号码: ' P_OBJECT.
    ENDIF.

    "调用函数:  Number range: Unlock object Add By Code_Tool
    CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
      EXPORTING
        OBJECT           = P_OBJECT
      EXCEPTIONS
        OBJECT_NOT_FOUND = 1
        OTHERS           = 2.
    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.
ENDFORM.

上面源代码中的:LV_ZPPXNY 就获取的流水单号
其中还用到了锁/解锁 编号范围对象。

分享使我快乐!我是寒武青锋,如果你喜欢的话,请点个赞吧!

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值