WMS函数组:12.批量入库物料移动凭证

FUNCTION ZRFC_WMS_GOODSMVT_CREATE.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  TABLES
*"      ET_LOG STRUCTURE  BAPIRET2 OPTIONAL
*"      IT_ZMKPF001 STRUCTURE  ZWMS_GOODSMOVE_ITEM OPTIONAL
*"      IT_ZMKPF002 STRUCTURE  ZWMS_GOODSMOVE_HEAD OPTIONAL
*"      IT_ZMKPF003 STRUCTURE  ZINTERFACE_RETURN OPTIONAL
*"----------------------------------------------------------------------
DATA: IT_DETAIL LIKE IT_ZMKPF001 OCCURS 0 WITH HEADER LINE,
  EP_SUBRC LIKE SY-SUBRC,
  IT_HEADER LIKE   IT_ZMKPF002,
  IT_DELETE LIKE   ZWMS_GOODMVT OCCURS    0   WITH HEADER  LINE,
  IT_RECORD  LIKE ZWMS_GOODMVT  OCCURS    0   WITH HEADER  LINE,
IT_REX  LIKE BAPI2017_GM_ITEM_CREATE  OCCURS    0   WITH HEADER  LINE,
I_LOG LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
  MATDOCUMENTYEAR LIKE BAPI2017_GM_HEAD_RET-DOC_YEAR,
  MATERIALDOCUMENT LIKE BAPI2017_GM_HEAD_RET-MAT_DOC.
  IT_ZMKPF002-LFSNR = '0'.
APPEND IT_ZMKPF002.
SELECT * INTO TABLE IT_DELETE FROM ZWMS_GOODMVT
FOR ALL ENTRIES IN  IT_ZMKPF002
WHERE LFSNR = IT_ZMKPF002-LFSNR.
*------------------CHA JWY_20170811
SORT IT_DELETE.
*------------------CHA JWY_20170811
LOOP AT IT_DELETE .
CLEAR IT_ZMKPF003.
    IT_ZMKPF003-SUBRC  =  0.
    IT_ZMKPF003-BILLNO = IT_DELETE-LFSNR .
    IT_ZMKPF003-SAPNO = '0000000' .
    IT_ZMKPF003-MSG = '已经存在此单号记录'.
APPEND IT_ZMKPF003.
DELETE IT_ZMKPF002 WHERE LFSNR = IT_DELETE-LFSNR.
ENDLOOP.
*------------------CHA JWY_20170811
SORT IT_ZMKPF002.
*------------------CHA JWY_20170811
LOOP AT IT_ZMKPF002 INTO  IT_HEADER WHERE LFSNR <> '0'.
CLEAR IT_DETAIL[].
***********明细
*------------------CHA JWY_20170811
SORT IT_ZMKPF001.
*------------------CHA JWY_20170811
LOOP AT IT_ZMKPF001 .
IF IT_ZMKPF001-LFSNR =  IT_HEADER-LFSNR.
MOVE  IT_ZMKPF001 TO IT_DETAIL .
PERFORM F_ADD_ZERO USING IT_DETAIL-MATERIAL.
PERFORM F_ADD_ZERO USING IT_DETAIL-MOVE_REAS.
SELECT SINGLE MATNR INTO IT_ZMKPF001-MATERIAL FROM MARA WHERE MATNR = IT_DETAIL-MATERIAL.
CHECK SY-SUBRC = 0.
APPEND IT_DETAIL.
ENDIF.
ENDLOOP.
IF IT_DETAIL[] IS  INITIAL.
    IT_ZMKPF003-BILLNO = IT_HEADER-LFSNR .
    IT_ZMKPF003-SAPNO = '空物料' .
    IT_ZMKPF003-SUBRC = 0.
    IT_ZMKPF003-MSG = '行项目为空物料,请检查'.
APPEND IT_ZMKPF003.
*        IT_RECORD-BILLNO = IT_HEADER-LFSNR .
*        IT_RECORD-LFSNR =  IT_HEADER-LFSNR.
*        IT_RECORD-DATEA =  SY-DATUM.
*        IT_RECORD-TIMEA =  SY-UZEIT.
*        INSERT INTO ZWMS_GOODMVT VALUES IT_RECORD.
ENDIF.
CHECK IT_DETAIL[] IS NOT INITIaL.
CLEAR  I_LOG[].
CALL FUNCTION 'ZRFC_WMS_GOODSMVT_CREATE_D'
EXPORTING
        IT_ZMKPF002         = IT_HEADER
IMPORTING
        EP_MATERIALDOCUMENT = MATERIALDOCUMENT
        EP_SUBRC            = EP_SUBRC
        EP_MATDOCUMENTYEAR  = MATDOCUMENTYEAR
TABLES
        IT_ZMKPF001         = IT_DETAIL
        IT_R                = IT_REX
        ET_LOG              = I_LOG.
*------------------CHA JWY_20170811
SORT IT_DETAIL.
*------------------CHA JWY_20170811
LOOP AT IT_DETAIL.
      ET_LOG-MESSAGE = IT_DETAIL-MATERIAL .
      ET_LOG-TYPE =  IT_DETAIL-PLANT .
      ET_LOG-ID               = IT_DETAIL-STGE_LOC .
      ET_LOG-NUMBER           = IT_DETAIL-MOVE_TYPE.
      ET_LOG-LOG_NO           = IT_DETAIL-MOVE_REAS.
APPEND  ET_LOG.
ENDLOOP.
*------------------CHA JWY_20170811
SORT I_LOG.
*------------------CHA JWY_20170811
CLEAR IT_ZMKPF003.
LOOP AT I_LOG.
IF I_LOG-TYPE = 'E'.
        ET_LOG-MESSAGE = I_LOG-MESSAGE .
        ET_LOG-TYPE =  I_LOG-TYPE .
        ET_LOG-ID               = I_LOG-ID .
        ET_LOG-NUMBER           = I_LOG-NUMBER.
        ET_LOG-LOG_NO           = I_LOG-LOG_NO.
APPEND  ET_LOG.
        IT_ZMKPF003-MSG = ET_LOG-MESSAGE.
ENDIF.
ENDLOOP.
CLEAR I_LOG[].
READ  TABLE   I_LOG WITH  KEY  TYPE   = 'E'.
IF  SY-SUBRC   =   0  .
      EP_SUBRC  =  -1.
ENDIF.
IF MATERIALDOCUMENT = ''.
      IT_ZMKPF003-SUBRC  =  -1.
ELSE.
      IT_ZMKPF003-SUBRC  =  0.
ENDIF.
    IT_ZMKPF003-BILLNO = IT_HEADER-LFSNR .
    IT_ZMKPF003-SAPNO = MATERIALDOCUMENT .
APPEND IT_ZMKPF003.
ENDLOOP. " end of IT_ZMKPF002
*------------------CHA JWY_20170811
SORT IT_ZMKPF003.
*------------------CHA JWY_20170811
LOOP AT  IT_ZMKPF003 WHERE SUBRC  =  0.
    IT_RECORD-LFSNR =  IT_ZMKPF003-BILLNO.
    IT_RECORD-DATEA =  SY-DATUM.
    IT_RECORD-TIMEA =  SY-UZEIT.
INSERT INTO ZWMS_GOODMVT VALUES IT_RECORD.
ENDLOOP.
ENDFUNCTION.




image

image

image

原文地址:https://www.cnblogs.com/twttafku/p/14327447.html