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.