SAP使用函数NUMBER_GET_NEXT创建流水号

20 篇文章 1 订阅
14 篇文章 2 订阅

 1. 系统中设定流水号;使用T-Code:SNRO来创建一个流

 输入Object:ZLC_001,然后单击创建。

0

然后输入Shorttext, Long text, Number length domain在写程序的时候应该会另外创建,这里测试就使用料号的Domain MATNR来做,其他的参数使用默认值就可以了,然后保存输入的资料。

系统提示创建成功,这里还需要维护一个子对象,单击“号码范围”。

单击“间隔”,维护具体的流水号规则。

 然后保存 ,流水号设定完成,接下来就是程序中如何取得这些流水号了。

 

2、NUMBER_GET_NEXT 获取编号 遇到关于按年度编号的问题

最近给财务做了一个平台,在系统创建一些特殊类型的合同,需要生成合同编号:财务要求 合同类型+公司代码 +年+三位流水号,

eg:CP6008-2017001

SNRO

   子对象数据元素就是: 公司代码 不多解释

   勾选 截至年份标志  :表示 按照年份 重新获取编号(从范围的最小值重新开始)

   勾选 无滚动:表示 所有编号用完 不会重新回到最小值开始,不勾选反之表示重新从最小号开始编号

 好  ,那么问题来了 今年是2017年,如果我只是维护2016年的编号范围  NUMBER_GET_NEXT 报错, 如果我直接维护2018年的编号范围,NUMBER_GET_NEXT 获取成功,输入参数明明是2017年,却在2018年获取了编号

以下是测试过程:

 NUMBER_GET_NEXT:  按年编号 需要传入 toyear 参数

 我在维护一下18年的编号范围:

 

 

 成功了  (被坑在这这个问题上,2017年的没有维护 ,理论上是不是应该提醒一下啊 SAP同学?)

没办法自己解决:

在执行 NUMBER_GET_NEXT 前  检查一下  是否维护了当前年度的编号范围。数据库表为NRIV

 

CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
    EXPORTING
      OBJECT                 = ''
    EXCEPTIONS
      FOREIGN_LOCK           = 1
      OBJECT_NOT_FOUND       = 2
      SYSTEM_FAILURE         = 3
      OTHERS                 = 4
            .

  CALL FUNCTION 'NUMBER_GET_NEXT'
    EXPORTING
      NR_RANGE_NR                   = '00'
      OBJECT                        = 
      SUBOBJECT                     = P_BUKCG
      TOYEAR                        = SY_DATUM+0(4)
      IGNORE_BUFFER                 = 'X'
    IMPORTING
      NUMBER                        = P_HTNUM
    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                 = ''
    EXCEPTIONS
      OBJECT_NOT_FOUND       = 1
      OTHERS                 = 2
            .

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᝰ随心ꦿེএ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值