FUNCTION zif_sd_002.
*"----------------------------------------------------------------------
*"*"本地接口:
*" EXPORTING
*" VALUE(CODE) TYPE CHAR1
*" VALUE(MESSAGE) TYPE CHAR200
*" TABLES
*" PICK STRUCTURE ZSD_DN_PICK OPTIONAL
*" PSN STRUCTURE ZSD_P_SN OPTIONAL
*" TRETURN STRUCTURE ZSD_RET OPTIONAL
*" EXCEPTIONS
*" SYSTEM_FAILURE
*" COMMUNICATION_FAILURE
*"----------------------------------------------------------------------
DATA:header_data LIKE bapiobdlvhdrchg. "Delivery header
DATA:header_control LIKE bapiobdlvhdrctrlchg. "delivery header control
DATA:i_delivery_no LIKE bapiobdlvhdrchg-deliv_numb. "deliver number
DATA:techn_control LIKE bapidlvcontrol. "TECHN_CONTROL
DATA:item_data LIKE bapiobdlvitemchg OCCURS 0 WITH HEADER LINE. "ITEM_DATA delivery item
DATA:item_control LIKE bapiobdlvitemctrlchg OCCURS 0 WITH HEADER LINE. "ITEM_CONTROL
DATA:item_serial_no LIKE bapidlvitmserno OCCURS 0 WITH HEADER LINE.
DATA:return LIKE bapiret2 OCCURS 0 WITH HEADER LINE. "Return
DATA:wa_pick TYPE zsd_dn_pick.
DATA:deliv_item LIKE bapiobdlvitemchg-deliv_item.
DATA:lt_psn TYPE TABLE OF zsd_p_sn WITH HEADER LINE.
DATA:l_count TYPE i.
DATA:l_charg LIKE mseg-charg.
DATA : i_vbkok LIKE vbkok, "Delivery header
i_vbpok LIKE vbpok OCCURS 0 WITH HEADER LINE, "Delivery Picking
vbkok_wa TYPE vbkok,
vbpok_tab TYPE vbpok OCCURS 0 WITH HEADER LINE,
lt_prott TYPE TABLE OF prott,
lt_prott1 TYPE TABLE OF prott,
ls_prott TYPE prott.
DATA:l_flag(1).
DATA:ls_delivery_return TYPE bapiret2 .
DATA:str TYPE string.
DATA:i_message TYPE string.
SORT pick BY vbeln posnr.
lt_psn[] = psn[].
*Set Delivery Header data
LOOP AT pick.
MOVE-CORRESPONDING pick TO wa_pick.
AT NEW vbeln.
CLEAR i_delivery_no.
CLEAR header_data.
CLEAR techn_control.
CLEAR header_control.
REFRESH item_data.
CLEAR item_data.
REFRESH item_control.
CLEAR item_control.
REFRESH item_serial_no.
CLEAR item_serial_no.
REFRESH i_vbpok.
CLEAR i_vbpok.
REFRESH vbpok_tab.
CLEAR vbpok_tab.
CLEAR deliv_item.
CLEAR l_flag.
deliv_item = '900000'.
i_delivery_no = wa_pick-vbeln."'0080249529'.
header_data-deliv_numb = i_delivery_no.
techn_control-upd_ind = 'U'.
header_control-deliv_numb = i_delivery_no.
CLEAR i_vbkok.
i_vbkok-vbeln_vl = i_delivery_no.
i_vbkok-wabuc = 'X'. "Post Good Issue Automatic
i_vbkok-wadat_ist = sy-datum.
CLEAR vbkok_wa.
vbkok_wa-vbeln_vl = i_delivery_no.
CLEAR l_charg.
CLEAR l_count.
LOOP AT lt_psn WHERE vbeln = wa_pick-vbeln AND posnr = wa_pick-posnr.
l_count = l_count + 1.
l_charg = lt_psn-charg.
ENDLOOP.
IF l_count > 1 AND l_charg <> ''.
l_flag = '1'.
ELSEIF l_count <= 1 AND l_charg <> ''.
l_flag = '2'.
ELSEIF l_count >= 1 AND l_charg = ''.
l_flag = '3'.
ENDIF.
ENDAT.
"处理需要批次拆分的行项目
IF l_flag = '1'.
LOOP AT lt_psn WHERE vbeln = wa_pick-vbeln AND posnr = wa_pick-posnr.
deliv_item = deliv_item + 1.
item_data-deliv_numb = i_delivery_no.
item_data-deliv_item = deliv_item. "'900001'.
item_data-hieraritem = wa_pick-posnr."'40'. "The batch split record below delivery item hierary
item_data-usehieritm = '1'.
item_data-material = wa_pick-matnr."'W065B0X030601002'.
item_data-batch = lt_psn-charg."'BCFA2907'.
item_data-dlv_qty = lt_psn-lfimg.
item_data-fact_unit_nom = 1.
item_data-fact_unit_denom = 1.
APPEND item_data.
CLEAR item_data.
CLEAR item_control.
READ TABLE item_control WITH KEY deliv_numb = i_delivery_no deliv_item = wa_pick-posnr.
IF sy-subrc <> 0.
item_control-deliv_numb = i_delivery_no.
item_control-deliv_item = wa_pick-posnr."'40'.
item_control-chg_delqty = 'X'.
APPEND item_control.
CLEAR item_control.
ENDIF.
item_control-deliv_numb = i_delivery_no.
item_control-deliv_item = deliv_item. "'900001'.
item_control-chg_delqty = 'X'.
APPEND item_control.
CLEAR item_control.
CLEAR i_vbpok.
i_vbpok-vbeln_vl = i_delivery_no. "Delivery NO
i_vbpok-posnr_vl = deliv_item. "Delivery Item
i_vbpok-vbeln = i_delivery_no. "Delivery NO
i_vbpok-posnn = deliv_item. "Delivery Item
i_vbpok-matnr = wa_pick-matnr.
i_vbpok-charg = lt_psn-charg.
i_vbpok-lfimg = lt_psn-lfimg. "Actual quantity delivered (in sales units)
APPEND i_vbpok.
CLEAR: vbpok_tab.
vbpok_tab-vbeln_vl = i_delivery_no.
vbpok_tab-posnr_vl = deliv_item.
vbpok_tab-vbeln = i_delivery_no.
vbpok_tab-posnn = deliv_item.
vbpok_tab-charg = lt_psn-charg."批次
vbpok_tab-matnr = wa_pick-matnr."物料
vbpok_tab-pikmg = lt_psn-lfimg."实际已交货量(按销售单位)
vbpok_tab-meins = wa_pick-vrkme."基本计量单位
APPEND vbpok_tab.
ENDLOOP.
ELSEIF l_flag = '2'.
LOOP AT lt_psn WHERE vbeln = wa_pick-vbeln AND posnr = wa_pick-posnr.
item_data-deliv_numb = i_delivery_no.
item_data-deliv_item = wa_pick-posnr. "'900001'.
item_data-material = wa_pick-matnr."'W065B0X030601002'.
item_data-batch = lt_psn-charg."'BCFA2907'.
item_data-dlv_qty = lt_psn-lfimg.
item_data-fact_unit_nom = 1.
item_data-fact_unit_denom = 1.
APPEND item_data.
CLEAR item_data.
item_control-deliv_numb = i_delivery_no.
item_control-deliv_item = wa_pick-posnr."'40'.
item_control-chg_delqty = 'X'.
APPEND item_control.
CLEAR item_control.
CLEAR i_vbpok.
i_vbpok-vbeln_vl = i_delivery_no. "Delivery NO
i_vbpok-posnr_vl = wa_pick-posnr. "Delivery Item
i_vbpok-vbeln = i_delivery_no. "Delivery NO
i_vbpok-posnn = wa_pick-posnr. "Delivery Item
i_vbpok-matnr = wa_pick-matnr.
i_vbpok-charg = lt_psn-charg.
i_vbpok-lfimg = lt_psn-lfimg. "Actual quantity delivered (in sales units)
APPEND i_vbpok.
CLEAR: vbpok_tab.
vbpok_tab-vbeln_vl = i_delivery_no.
vbpok_tab-posnr_vl = wa_pick-posnr.
vbpok_tab-vbeln = i_delivery_no.
vbpok_tab-posnn = wa_pick-posnr.
vbpok_tab-charg = lt_psn-charg."批次
vbpok_tab-matnr = wa_pick-matnr."物料
vbpok_tab-pikmg = lt_psn-lfimg."实际已交货量(按销售单位)
vbpok_tab-meins = wa_pick-vrkme."基本计量单位
APPEND vbpok_tab.
ENDLOOP.
ELSEIF l_flag = '3'.
item_data-deliv_numb = i_delivery_no.
item_data-deliv_item = wa_pick-posnr. "'900001'.
item_data-material = wa_pick-matnr."'W065B0X030601002'.
item_data-dlv_qty = wa_pick-lfimg.
item_data-fact_unit_nom = 1.
item_data-fact_unit_denom = 1.
APPEND item_data.
CLEAR item_data.
item_control-deliv_numb = i_delivery_no.
item_control-deliv_item = wa_pick-posnr."'40'.
item_control-chg_delqty = 'X'.
APPEND item_control.
CLEAR item_control.
LOOP AT psn WHERE vbeln = wa_pick-vbeln AND posnr = wa_pick-posnr.
item_serial_no-deliv_numb = i_delivery_no.
item_serial_no-itm_number = wa_pick-posnr.
item_serial_no-serialno = psn-sernr.
APPEND item_serial_no.
CLEAR item_serial_no.
ENDLOOP.
CLEAR i_vbpok.
i_vbpok-vbeln_vl = i_delivery_no. "Delivery NO
i_vbpok-posnr_vl = wa_pick-posnr. "Delivery Item
i_vbpok-vbeln = i_delivery_no. "Delivery NO
i_vbpok-posnn = wa_pick-posnr. "Delivery Item
i_vbpok-matnr = wa_pick-matnr.
i_vbpok-charg = ''.
i_vbpok-lfimg = wa_pick-lfimg. "Actual quantity delivered (in sales units)
APPEND i_vbpok.
CLEAR: vbpok_tab.
vbpok_tab-vbeln_vl = i_delivery_no.
vbpok_tab-posnr_vl = wa_pick-posnr.
vbpok_tab-vbeln = i_delivery_no.
vbpok_tab-posnn = wa_pick-posnr.
vbpok_tab-charg = ''."批次
vbpok_tab-matnr = wa_pick-matnr."物料
vbpok_tab-pikmg = wa_pick-lfimg."实际已交货量(按销售单位)
vbpok_tab-meins = wa_pick-vrkme."基本计量单位
APPEND vbpok_tab.
ENDIF.
AT END OF vbeln.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
EXPORTING
header_data = header_data
header_control = header_control
delivery = i_delivery_no
techn_control = techn_control
TABLES
item_data = item_data
item_control = item_control
item_serial_no = item_serial_no
return = return.
CLEAR return.
READ TABLE return WITH KEY type = 'E'.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
"修改拣配数量
CALL FUNCTION 'SD_DELIVERY_UPDATE_PICKING'
EXPORTING
vbkok_wa = vbkok_wa
synchron = 'X'
TABLES
vbpok_tab = vbpok_tab
prot = lt_prott1.
READ TABLE lt_prott1 INTO ls_prott WITH KEY msgty = 'E'.
IF sy-subrc EQ 0.
LOOP AT lt_prott1 INTO ls_prott WHERE msgty CA 'AE' .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = ls_prott-msgid
msgnr = ls_prott-msgno
msgv1 = ls_prott-msgv1
msgv2 = ls_prott-msgv2
msgv3 = ls_prott-msgv3
msgv4 = ls_prott-msgv4
IMPORTING
message_text_output = str.
IF i_message IS INITIAL .
MOVE str TO i_message .
ELSE .
CONCATENATE i_message '/' str INTO i_message .
ENDIF .
ENDLOOP .
treturn-vbeln = i_delivery_no.
treturn-zflag = 'E'.
treturn-zmessage = '交货单修改批次成功,拣配失败!'.
ELSE.
treturn-vbeln = i_delivery_no.
treturn-zflag = 'S'.
treturn-zmessage = '交货单拣配成功!'.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT return INTO ls_delivery_return WHERE type CA 'AE' .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = ls_delivery_return-id
msgnr = ls_delivery_return-number
msgv1 = ls_delivery_return-message_v1
msgv2 = ls_delivery_return-message_v2
msgv3 = ls_delivery_return-message_v3
msgv4 = ls_delivery_return-message_v4
IMPORTING
message_text_output = str.
IF i_message IS INITIAL .
MOVE str TO i_message .
ELSE .
CONCATENATE i_message '/' str INTO i_message .
ENDIF .
ENDLOOP .
treturn-vbeln = i_delivery_no.
treturn-zflag = 'E'.
treturn-zmessage = i_message.
ENDIF.
APPEND treturn.
CLEAR treturn.
ENDAT.
ENDLOOP.
ENDFUNCTION.
*"----------------------------------------------------------------------
*"*"本地接口:
*" EXPORTING
*" VALUE(CODE) TYPE CHAR1
*" VALUE(MESSAGE) TYPE CHAR200
*" TABLES
*" PICK STRUCTURE ZSD_DN_PICK OPTIONAL
*" PSN STRUCTURE ZSD_P_SN OPTIONAL
*" TRETURN STRUCTURE ZSD_RET OPTIONAL
*" EXCEPTIONS
*" SYSTEM_FAILURE
*" COMMUNICATION_FAILURE
*"----------------------------------------------------------------------
DATA:header_data LIKE bapiobdlvhdrchg. "Delivery header
DATA:header_control LIKE bapiobdlvhdrctrlchg. "delivery header control
DATA:i_delivery_no LIKE bapiobdlvhdrchg-deliv_numb. "deliver number
DATA:techn_control LIKE bapidlvcontrol. "TECHN_CONTROL
DATA:item_data LIKE bapiobdlvitemchg OCCURS 0 WITH HEADER LINE. "ITEM_DATA delivery item
DATA:item_control LIKE bapiobdlvitemctrlchg OCCURS 0 WITH HEADER LINE. "ITEM_CONTROL
DATA:item_serial_no LIKE bapidlvitmserno OCCURS 0 WITH HEADER LINE.
DATA:return LIKE bapiret2 OCCURS 0 WITH HEADER LINE. "Return
DATA:wa_pick TYPE zsd_dn_pick.
DATA:deliv_item LIKE bapiobdlvitemchg-deliv_item.
DATA:lt_psn TYPE TABLE OF zsd_p_sn WITH HEADER LINE.
DATA:l_count TYPE i.
DATA:l_charg LIKE mseg-charg.
DATA : i_vbkok LIKE vbkok, "Delivery header
i_vbpok LIKE vbpok OCCURS 0 WITH HEADER LINE, "Delivery Picking
vbkok_wa TYPE vbkok,
vbpok_tab TYPE vbpok OCCURS 0 WITH HEADER LINE,
lt_prott TYPE TABLE OF prott,
lt_prott1 TYPE TABLE OF prott,
ls_prott TYPE prott.
DATA:l_flag(1).
DATA:ls_delivery_return TYPE bapiret2 .
DATA:str TYPE string.
DATA:i_message TYPE string.
SORT pick BY vbeln posnr.
lt_psn[] = psn[].
*Set Delivery Header data
LOOP AT pick.
MOVE-CORRESPONDING pick TO wa_pick.
AT NEW vbeln.
CLEAR i_delivery_no.
CLEAR header_data.
CLEAR techn_control.
CLEAR header_control.
REFRESH item_data.
CLEAR item_data.
REFRESH item_control.
CLEAR item_control.
REFRESH item_serial_no.
CLEAR item_serial_no.
REFRESH i_vbpok.
CLEAR i_vbpok.
REFRESH vbpok_tab.
CLEAR vbpok_tab.
CLEAR deliv_item.
CLEAR l_flag.
deliv_item = '900000'.
i_delivery_no = wa_pick-vbeln."'0080249529'.
header_data-deliv_numb = i_delivery_no.
techn_control-upd_ind = 'U'.
header_control-deliv_numb = i_delivery_no.
CLEAR i_vbkok.
i_vbkok-vbeln_vl = i_delivery_no.
i_vbkok-wabuc = 'X'. "Post Good Issue Automatic
i_vbkok-wadat_ist = sy-datum.
CLEAR vbkok_wa.
vbkok_wa-vbeln_vl = i_delivery_no.
CLEAR l_charg.
CLEAR l_count.
LOOP AT lt_psn WHERE vbeln = wa_pick-vbeln AND posnr = wa_pick-posnr.
l_count = l_count + 1.
l_charg = lt_psn-charg.
ENDLOOP.
IF l_count > 1 AND l_charg <> ''.
l_flag = '1'.
ELSEIF l_count <= 1 AND l_charg <> ''.
l_flag = '2'.
ELSEIF l_count >= 1 AND l_charg = ''.
l_flag = '3'.
ENDIF.
ENDAT.
"处理需要批次拆分的行项目
IF l_flag = '1'.
LOOP AT lt_psn WHERE vbeln = wa_pick-vbeln AND posnr = wa_pick-posnr.
deliv_item = deliv_item + 1.
item_data-deliv_numb = i_delivery_no.
item_data-deliv_item = deliv_item. "'900001'.
item_data-hieraritem = wa_pick-posnr."'40'. "The batch split record below delivery item hierary
item_data-usehieritm = '1'.
item_data-material = wa_pick-matnr."'W065B0X030601002'.
item_data-batch = lt_psn-charg."'BCFA2907'.
item_data-dlv_qty = lt_psn-lfimg.
item_data-fact_unit_nom = 1.
item_data-fact_unit_denom = 1.
APPEND item_data.
CLEAR item_data.
CLEAR item_control.
READ TABLE item_control WITH KEY deliv_numb = i_delivery_no deliv_item = wa_pick-posnr.
IF sy-subrc <> 0.
item_control-deliv_numb = i_delivery_no.
item_control-deliv_item = wa_pick-posnr."'40'.
item_control-chg_delqty = 'X'.
APPEND item_control.
CLEAR item_control.
ENDIF.
item_control-deliv_numb = i_delivery_no.
item_control-deliv_item = deliv_item. "'900001'.
item_control-chg_delqty = 'X'.
APPEND item_control.
CLEAR item_control.
CLEAR i_vbpok.
i_vbpok-vbeln_vl = i_delivery_no. "Delivery NO
i_vbpok-posnr_vl = deliv_item. "Delivery Item
i_vbpok-vbeln = i_delivery_no. "Delivery NO
i_vbpok-posnn = deliv_item. "Delivery Item
i_vbpok-matnr = wa_pick-matnr.
i_vbpok-charg = lt_psn-charg.
i_vbpok-lfimg = lt_psn-lfimg. "Actual quantity delivered (in sales units)
APPEND i_vbpok.
CLEAR: vbpok_tab.
vbpok_tab-vbeln_vl = i_delivery_no.
vbpok_tab-posnr_vl = deliv_item.
vbpok_tab-vbeln = i_delivery_no.
vbpok_tab-posnn = deliv_item.
vbpok_tab-charg = lt_psn-charg."批次
vbpok_tab-matnr = wa_pick-matnr."物料
vbpok_tab-pikmg = lt_psn-lfimg."实际已交货量(按销售单位)
vbpok_tab-meins = wa_pick-vrkme."基本计量单位
APPEND vbpok_tab.
ENDLOOP.
ELSEIF l_flag = '2'.
LOOP AT lt_psn WHERE vbeln = wa_pick-vbeln AND posnr = wa_pick-posnr.
item_data-deliv_numb = i_delivery_no.
item_data-deliv_item = wa_pick-posnr. "'900001'.
item_data-material = wa_pick-matnr."'W065B0X030601002'.
item_data-batch = lt_psn-charg."'BCFA2907'.
item_data-dlv_qty = lt_psn-lfimg.
item_data-fact_unit_nom = 1.
item_data-fact_unit_denom = 1.
APPEND item_data.
CLEAR item_data.
item_control-deliv_numb = i_delivery_no.
item_control-deliv_item = wa_pick-posnr."'40'.
item_control-chg_delqty = 'X'.
APPEND item_control.
CLEAR item_control.
CLEAR i_vbpok.
i_vbpok-vbeln_vl = i_delivery_no. "Delivery NO
i_vbpok-posnr_vl = wa_pick-posnr. "Delivery Item
i_vbpok-vbeln = i_delivery_no. "Delivery NO
i_vbpok-posnn = wa_pick-posnr. "Delivery Item
i_vbpok-matnr = wa_pick-matnr.
i_vbpok-charg = lt_psn-charg.
i_vbpok-lfimg = lt_psn-lfimg. "Actual quantity delivered (in sales units)
APPEND i_vbpok.
CLEAR: vbpok_tab.
vbpok_tab-vbeln_vl = i_delivery_no.
vbpok_tab-posnr_vl = wa_pick-posnr.
vbpok_tab-vbeln = i_delivery_no.
vbpok_tab-posnn = wa_pick-posnr.
vbpok_tab-charg = lt_psn-charg."批次
vbpok_tab-matnr = wa_pick-matnr."物料
vbpok_tab-pikmg = lt_psn-lfimg."实际已交货量(按销售单位)
vbpok_tab-meins = wa_pick-vrkme."基本计量单位
APPEND vbpok_tab.
ENDLOOP.
ELSEIF l_flag = '3'.
item_data-deliv_numb = i_delivery_no.
item_data-deliv_item = wa_pick-posnr. "'900001'.
item_data-material = wa_pick-matnr."'W065B0X030601002'.
item_data-dlv_qty = wa_pick-lfimg.
item_data-fact_unit_nom = 1.
item_data-fact_unit_denom = 1.
APPEND item_data.
CLEAR item_data.
item_control-deliv_numb = i_delivery_no.
item_control-deliv_item = wa_pick-posnr."'40'.
item_control-chg_delqty = 'X'.
APPEND item_control.
CLEAR item_control.
LOOP AT psn WHERE vbeln = wa_pick-vbeln AND posnr = wa_pick-posnr.
item_serial_no-deliv_numb = i_delivery_no.
item_serial_no-itm_number = wa_pick-posnr.
item_serial_no-serialno = psn-sernr.
APPEND item_serial_no.
CLEAR item_serial_no.
ENDLOOP.
CLEAR i_vbpok.
i_vbpok-vbeln_vl = i_delivery_no. "Delivery NO
i_vbpok-posnr_vl = wa_pick-posnr. "Delivery Item
i_vbpok-vbeln = i_delivery_no. "Delivery NO
i_vbpok-posnn = wa_pick-posnr. "Delivery Item
i_vbpok-matnr = wa_pick-matnr.
i_vbpok-charg = ''.
i_vbpok-lfimg = wa_pick-lfimg. "Actual quantity delivered (in sales units)
APPEND i_vbpok.
CLEAR: vbpok_tab.
vbpok_tab-vbeln_vl = i_delivery_no.
vbpok_tab-posnr_vl = wa_pick-posnr.
vbpok_tab-vbeln = i_delivery_no.
vbpok_tab-posnn = wa_pick-posnr.
vbpok_tab-charg = ''."批次
vbpok_tab-matnr = wa_pick-matnr."物料
vbpok_tab-pikmg = wa_pick-lfimg."实际已交货量(按销售单位)
vbpok_tab-meins = wa_pick-vrkme."基本计量单位
APPEND vbpok_tab.
ENDIF.
AT END OF vbeln.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
EXPORTING
header_data = header_data
header_control = header_control
delivery = i_delivery_no
techn_control = techn_control
TABLES
item_data = item_data
item_control = item_control
item_serial_no = item_serial_no
return = return.
CLEAR return.
READ TABLE return WITH KEY type = 'E'.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
"修改拣配数量
CALL FUNCTION 'SD_DELIVERY_UPDATE_PICKING'
EXPORTING
vbkok_wa = vbkok_wa
synchron = 'X'
TABLES
vbpok_tab = vbpok_tab
prot = lt_prott1.
READ TABLE lt_prott1 INTO ls_prott WITH KEY msgty = 'E'.
IF sy-subrc EQ 0.
LOOP AT lt_prott1 INTO ls_prott WHERE msgty CA 'AE' .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = ls_prott-msgid
msgnr = ls_prott-msgno
msgv1 = ls_prott-msgv1
msgv2 = ls_prott-msgv2
msgv3 = ls_prott-msgv3
msgv4 = ls_prott-msgv4
IMPORTING
message_text_output = str.
IF i_message IS INITIAL .
MOVE str TO i_message .
ELSE .
CONCATENATE i_message '/' str INTO i_message .
ENDIF .
ENDLOOP .
treturn-vbeln = i_delivery_no.
treturn-zflag = 'E'.
treturn-zmessage = '交货单修改批次成功,拣配失败!'.
ELSE.
treturn-vbeln = i_delivery_no.
treturn-zflag = 'S'.
treturn-zmessage = '交货单拣配成功!'.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT return INTO ls_delivery_return WHERE type CA 'AE' .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = ls_delivery_return-id
msgnr = ls_delivery_return-number
msgv1 = ls_delivery_return-message_v1
msgv2 = ls_delivery_return-message_v2
msgv3 = ls_delivery_return-message_v3
msgv4 = ls_delivery_return-message_v4
IMPORTING
message_text_output = str.
IF i_message IS INITIAL .
MOVE str TO i_message .
ELSE .
CONCATENATE i_message '/' str INTO i_message .
ENDIF .
ENDLOOP .
treturn-vbeln = i_delivery_no.
treturn-zflag = 'E'.
treturn-zmessage = i_message.
ENDIF.
APPEND treturn.
CLEAR treturn.
ENDAT.
ENDLOOP.
ENDFUNCTION.