欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

取下一个物料号码

发布时间:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的这篇文章主要介绍了 取下一个物料号码 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
FUNCTION ZMMF_GET_NEXT_MATNR .
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_MATKL) TYPE  MARA-MATKL
*"     VALUE(I_ZPRDA) TYPE  MARA-ZPRDA
*"     VALUE(I_ZQLTY) TYPE  MARA-ZQLTY
*"     VALUE(I_TESTRUN) TYPE  CHAR1 OPTIONAL
*"  EXPORTING
*"     VALUE(E_MATNR) TYPE  MATNR
*"     VALUE(E_RETURN) TYPE  BAPIRET2
*"  EXCEPTIONS
*"      INTERVAL_OVERFLOW
*"----------------------------------------------------------------------

   DATA :
*        LV_MATNR       TYPE I VALUE 13, "物料号长度
    LV_MATKL_LEN    TYPE  I ,
    LV_MAXNBR       TYPE P ,
    LV_LSLEN        TYPE  I ,
    LV_NRLEVEL_LEN  TYPE  I .
  LV_LSLEN  3 .
  LV_MAXNBR  1 .
   DO LV_LSLEN  TIMES .
    LV_MAXNBR  LV_MAXNBR *  10 .
   ENDDO .
  LV_MAXNBR  LV_MAXNBR  1 .
   IF I_ZPRDA  '' .
    I_ZPRDA  '000' .
   ENDIF .
   IF I_ZQLTY  '' .
    I_ZQLTY  '000' .
   ENDIF .
   CLEAR :E_RETURN ,ZMMT_MATNR .
   SELECT  SINGLE  FOR  UPDATE FROM ZMMT_MATNR
     WHERE MATKL  I_MATKL
       AND ZPRDA  I_ZPRDA
       AND ZQLTY  I_ZQLTY .
   IF SY -SUBRC  0 .
     IF   ZMMT_MATNR -NRLEVEL >= LV_MAXNBR .
      E_RETURN - TYPE  'E' .
      E_RETURN - MESSAGE  I_MATKL && I_ZPRDA && I_ZQLTY &&  '号码段已用完' .
       MESSAGE E_RETURN - MESSAGE  TYPE  'E'
                        RAISING INTERVAL_OVERFLOW . .
     ENDIF .
     ADD  TO ZMMT_MATNR -NRLEVEL .
     UPDATE ZMMT_MATNR .
   ELSE .
    ZMMT_MATNR -MATKL  I_MATKL .
    ZMMT_MATNR -ZPRDA  I_ZPRDA .
    ZMMT_MATNR -ZQLTY  I_ZQLTY .
    ZMMT_MATNR -NRLEVEL  '00000000000000000001' .
     INSERT ZMMT_MATNR .
   ENDIF .

  LV_NRLEVEL_LEN  20  LV_LSLEN .
  E_MATNR  I_MATKL && I_ZPRDA && I_ZQLTY && ZMMT_MATNR -NRLEVEL+LV_NRLEVEL_LEN (LV_LSLEN ) .
   CALL  FUNCTION  'CONVERSION_EXIT_MATN1_INPUT'
     EXPORTING
       INPUT         E_MATNR
     IMPORTING
       OUTPUT        E_MATNR
     EXCEPTIONS
      LENGTH_ERROR  1
       OTHERS        2 .

   SELECT  SINGLE @ABAP_TRUE  FROM MARA  INTO @DATA (ISEXIT )
     WHERE MATNR  @E_MATNR .
   IF ISEXIT  ABAP_TRUE .
     COMMIT  WORK  AND  WAIT .
     CALL  FUNCTION  'ZMMF_GET_NEXT_MATNR'
       EXPORTING
        I_MATKL    I_MATKL
        I_ZPRDA    I_ZPRDA
        I_ZQLTY    I_ZQLTY
        I_TESTRUN  I_TESTRUN
       IMPORTING
        E_MATNR    E_MATNR .

   ENDIF .

   IF I_TESTRUN  'X' .
     ROLLBACK  WORK .
   ELSE .
     COMMIT  WORK  AND  WAIT .
   ENDIF .



ENDFUNCTION .

总结

以上是生活随笔为你收集整理的取下一个物料号码的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。