FUNCTION ZSD_MC_DELIVERY_POST.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(IS_TECNO) TYPE ZCAS_REQUEST OPTIONAL
*" REFERENCE(IT_HEAD) TYPE ZMMS_DELIVERY_POST_HEAD_LT_MC OPTIONAL
*" EXPORTING
*" VALUE(ET_OUTPUT) TYPE ZMMS_DELIVERY_POST_RESULT_LT_C
*" TABLES
*" IT_ITEM STRUCTURE ZMMS_DELIVERY_POST_ITEM_MC OPTIONAL
*" IT_SEQN STRUCTURE ZMMS_DELIVERY_POST_SEQN_MC OPTIONAL
*"----------------------------------------------------------------------
DATA:
LS_HEADER_DATA LIKE BAPIOBDLVHDRCON,
LS_HEADER_CONTROL LIKE BAPIOBDLVHDRCTRLCON,
LV_DELIVERY_NUMB LIKE BAPIOBDLVHDRCON-DELIV_NUMB.
DATA:LT_RETURN_TAB TYPE TABLE OF BAPIRET2,
LW_RETURN_TAB TYPE BAPIRET2.
DATA:LS_HEAD TYPE ZMMS_DELIVERY_POST_HEAD_MC .
DATA:LS_OUTPUT TYPE ZMMS_DELIVERY_POST_RESULT_MC .
DATA:LS_SEQN TYPE ZMMS_DELIVERY_POST_SEQN_MC.
DATA:
L_VBKOK LIKE VBKOK,
LT_PROTT LIKE PROTT OCCURS 0 WITH HEADER LINE,
LV_WBSTK TYPE VBUK-WBSTK,
LV_BOLNR TYPE VBKOK-BOLNR.
DATA:
LT_ITEM_DATA LIKE TABLE OF BAPIOBDLVITEMCON,
LW_ITEM_DATA LIKE BAPIOBDLVITEMCON,
LT_ITEM_SERIAL_NO LIKE TABLE OF BAPIDLVITMSERNO,
LW_ITEM_SERIAL_NO LIKE BAPIDLVITMSERNO,
LT_ITEM_CONTROL LIKE TABLE OF BAPIOBDLVITEMCTRLCON,
LW_ITEM_CONTROL LIKE BAPIOBDLVITEMCTRLCON.
DATA:LV_CHARGE_POSNR TYPE LIPS-POSNR.
DATA:LV_FLAG TYPE CHAR01.
DATA:LV_MENGE TYPE LFIMG.
DATA:LV_TOTAL_MENGE TYPE LFIMG.
DATA:LT_LIPS_TAB TYPE TABLE OF LIPS,
LS_LIPS_TAB TYPE LIPS.
DATA:LV_MESSAGE TYPE STRING,
LV_ALL_MESSAGE TYPE STRING.
DATA:LS_ITEM TYPE ZMMS_DELIVERY_POST_ITEM_MC .
DATA:LV_VBELN TYPE LIKP-VBELN .
DATA:LT_VBPOK TYPE TABLE OF VBPOK,
LS_VBPOK TYPE VBPOK.
DATA:LT_NEW_LIPS TYPE TABLE OF LIPS,
LS_NEW_LIPS TYPE LIPS.
DATA:LT_SEQNO TYPE TABLE OF ZSDT_SEQNO,
LS_SEQNO TYPE ZSDT_SEQNO.
DATA:LV_POST TYPE CHAR01 .
LV_POST = 'X' ."发货过账
EXPORT P1 = LV_POST TO MEMORY ID 'DNPOS' .
*做批次拆分,发货过账。
LOOP AT IT_HEAD INTO LS_HEAD .
CLEAR:LV_MESSAGE ,LV_ALL_MESSAGE ,LV_FLAG .
CLEAR:LT_RETURN_TAB[] ,LS_HEADER_DATA,LS_HEADER_CONTROL,LT_ITEM_DATA,
LT_ITEM_CONTROL,LT_ITEM_SERIAL_NO ,LT_PROTT .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LS_HEAD-VBELN
IMPORTING
OUTPUT = LS_HEAD-VBELN
.
*发货过账。
L_VBKOK-VBELN_VL = LS_HEAD-VBELN. "<-- fill this field with your delivery number
L_VBKOK-WABUC = 'X'.
CLEAR LT_NEW_LIPS .
SELECT
*
INTO CORRESPONDING FIELDS OF TABLE LT_NEW_LIPS
FROM LIPS
WHERE VBELN EQ LS_HEAD-VBELN .
LOOP AT LT_NEW_LIPS INTO LS_NEW_LIPS .
LS_VBPOK-VBELN_VL = LS_NEW_LIPS-VBELN.
LS_VBPOK-POSNR_VL = LS_NEW_LIPS-POSNR.
LS_VBPOK-VBELN = LS_NEW_LIPS-VGBEL.
LS_VBPOK-POSNN = LS_NEW_LIPS-VGPOS.
LS_VBPOK-PIKMG = LS_NEW_LIPS-LFIMG.
APPEND LS_VBPOK TO LT_VBPOK.
ENDLOOP .
* L_VBKOK-BOLNR = LV_BOLNR .
* L_VBKOK-LIFEX = LV_BOLNR .
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
VBKOK_WA = L_VBKOK
SYNCHRON = 'X'
NO_MESSAGES_UPDATE = ' '
UPDATE_PICKING = 'X'
COMMIT = 'X'
DELIVERY = LS_HEAD-VBELN
NICHT_SPERREN = 'X'
TABLES
VBPOK_TAB = LT_VBPOK
PROT = LT_PROTT
EXCEPTIONS
EF_ERROR_ANY_0 = 1
EF_ERROR_IN_ITEM_DELETION_0 = 2
EF_ERROR_IN_POD_UPDATE_0 = 3
EF_ERROR_IN_INTERFACE_0 = 4
EF_ERROR_IN_GOODS_ISSUE_0 = 5
EF_ERROR_IN_FINAL_CHECK_0 = 6
EF_ERROR_PARTNER_UPDATE = 7
EF_ERROR_SERNR_UPDATE = 8
ERROR_MESSAGE = 9
OTHERS = 10.
IF SY-SUBRC = 0 .
LOOP AT LT_PROTT WHERE MSGTY CA 'EAX'..
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = LT_PROTT-MSGID
MSGNR = LT_PROTT-MSGNO
MSGV1 = LT_PROTT-MSGV1
MSGV2 = LT_PROTT-MSGV2
MSGV3 = LT_PROTT-MSGV3
MSGV4 = LT_PROTT-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = LV_MESSAGE.
CONCATENATE LV_ALL_MESSAGE LV_MESSAGE INTO LV_ALL_MESSAGE .
LV_FLAG = 'X' .
CLEAR LT_PROTT.
ENDLOOP.
ELSE.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = SY-MSGID
MSGNR = SY-MSGNO
MSGV1 = SY-MSGV1
MSGV2 = SY-MSGV2
MSGV3 = SY-MSGV3
MSGV4 = SY-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = LV_ALL_MESSAGE.
LV_FLAG = 'X' .
ENDIF .
IF LV_FLAG IS INITIAL .
*1459993 - Error message VL633 occurs in transaction VL09
UPDATE LIKP
SET VLSTK = ''
ZZLOGIS = LS_HEAD-ZZLOGIS
ZZLOGNO = LS_HEAD-ZZLOGNO
ZZLINK = LS_HEAD-ZZLINK
ZZNUMB = LS_HEAD-ZZNUMB
ZZVOLU = LS_HEAD-ZZVOLU
ZZWEIG = LS_HEAD-ZZWEIG
ZZKEEPER = LS_HEAD-ZZKEEPER
ZZMETHOD = LS_HEAD-ZZMETHOD
WHERE VBELN = LS_HEAD-VBELN .
IF SY-SUBRC = 0 .
COMMIT WORK AND WAIT .
ENDIF .
LS_OUTPUT-MCNO = LS_HEAD-MCNO .
LS_OUTPUT-MESSAGE = '发货过账成功' .
LS_OUTPUT-STATUS = 'S' .
LS_OUTPUT-ZUNIQUE = LS_HEAD-ZUNIQUE .
APPEND LS_OUTPUT TO ET_OUTPUT .
ELSE .
LS_OUTPUT-MCNO = LS_HEAD-MCNO .
LS_OUTPUT-MESSAGE = LV_ALL_MESSAGE .
LS_OUTPUT-STATUS = 'E' .
LS_OUTPUT-ZUNIQUE = LS_HEAD-ZUNIQUE .
APPEND LS_OUTPUT TO ET_OUTPUT .
ENDIF .
ENDLOOP .
FREE MEMORY ID 'DNPOS' .
ENDFUNCTION.