ABAP 编号对象范围 SNRO
需求场景:需要一个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.
post SAP-Garson
原文链接:https://blog.csdn.net/ki_laikun/article/details/125536480文章来自于网络,如果侵犯了您的权益,请联系站长删除!