ABAP 编号对象范围 SNRO

本文档详细介绍了在SAP系统中如何创建一个8位的NUMC类型域,并配置编号范围对象,设置警告百分比,以及如何通过ABAP函数调用来获取下一个流水号。步骤包括使用SE11创建域,SNRO设置编码范围,定义警告百分比,设置间隔,并通过自定义函数ZZF_GET_NEXT_NUM进行编号分配。该过程对于系统管理和数据唯一标识至关重要。

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

需求场景:需要一个8位流水号

1.SE11创建一个8位 NUMC 类型的域。

2.SNRO 填写一个编码范围对象名,点创建

3.输入文本,包名,域名,

警告填写90:表示已产生的编号达到此百分比时给出警告

更正如下:

警告信息的百分比

编号范围中剩余编号的百分比,关于在编号分配中达到其百分比给出警告。

示例

已定义间隔从1至1000。如果需要在编号900时发出警告请在此输入10(%)。

 

 4.设置间隔,

编码范围状态需要间隔-传输才能保存在TR里,但一般正式环境都是独立设置的,不需要传输,需要在每个环境中单独设置号段。

 5.使用

  data:lv_guid8 type n LENGTH 8.
  data:lv_res8 type BAPIRETURN.

      CLEAR lv_guid8.
      CALL FUNCTION 'ZZF_GET_NEXT_NUM'
        EXPORTING
          object            = 'ZDHR_GUID8'
          nr_range_nr       = '01'
       IMPORTING
         NUMBER            = lv_guid8
         RETURN            = lv_res8.

FUNCTION ZZF_GET_NEXT_NUM.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(OBJECT) TYPE  TNRO-OBJECT
*"     REFERENCE(NR_RANGE_NR) TYPE  INRI-NRRANGENR
*"  EXPORTING
*"     REFERENCE(NUMBER)
*"     REFERENCE(RETURN) TYPE  BAPIRETURN
*"----------------------------------------------------------------------

  CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
    EXPORTING
     object          = OBJECT
    EXCEPTIONS
     foreign_lock     = 1
     object_not_found = 2
     system_failure   = 3
     OTHERS           = 4.

  IF sy-subrc = 0.
*  GET NEXT NUMBER
    CALL FUNCTION 'NUMBER_GET_NEXT'
     EXPORTING
       nr_range_nr            = NR_RANGE_NR
       object                 = OBJECT
     IMPORTING
       number                 = 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.
      RETURN-TYPE ='E'.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO RETURN-MESSAGE.

   ELSE.
*  解锁
      CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
       EXPORTING
         object           = OBJECT
       EXCEPTIONS
         object_not_found = 1
         OTHERS           = 2.

      RETURN-TYPE ='S'.
      RETURN-MESSAGE = TEXT-S01.
    ENDIF.
  ELSE.
      RETURN-TYPE ='E'.
      RETURN-MESSAGE = TEXT-E04.
  ENDIF.



ENDFUNCTION.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值