form frm_del_compnt changing ps_resb type ty_resb_alv.
data: ls_resb type ty_resb.
data: lt_resbkeys_to_delete type coxt_t_resbdel with header line.
data: es_bapireturn type table of coxt_bapireturn with header line.
data: e_error_occurred type c.
data e_order_key type coxt_ord_key.
data et_ord_key_map type coxt_t_ord_key_map.
data et_bapireturn type coxt_t_bapireturn.
data lv_error.
loop at gt_resb into ls_resb where ordid = ps_resb-ordid and matnr = ps_resb-matnr and posnr = ps_resb-posnr.
lt_resbkeys_to_delete-rsnum = ls_resb-rsnum.
lt_resbkeys_to_delete-rspos = ls_resb-rspos.
lt_resbkeys_to_delete-matnr = ls_resb-matnr.
lt_resbkeys_to_delete-werks = ls_resb-werks.
lt_resbkeys_to_delete-bdmng = ls_resb-bdmng.
lt_resbkeys_to_delete-meins = ls_resb-meins.
append lt_resbkeys_to_delete.
endloop.
CALL FUNCTION ‘CO_XT_ORDER_INITIALIZE’.
call function ‘CO_XT_COMPONENTS_DELETE’
exporting
it_resbkeys_to_delete = lt_resbkeys_to_delete[]
-
IS_COMP_NR =
importing
e_error_occurred = lv_error
tables
ct_bapireturn = es_bapireturn[]
exceptions
delete_failed = 1
others = 2.if lv_error = 0.
perform change_flag_set(saplcozv).call function ‘CO_XT_ORDER_PREPARE_COMMIT’
importing
e_order_key = e_order_key
es_bapireturn = es_bapireturn
e_error_occurred = e_error_occurred
tables
et_ord_key_map = et_ord_key_map
et_bapireturn = et_bapireturn.
if sy-subrc = 0.
commit work and wait.
ls_resb-messg = ‘已更新’.
ls_resb-xloek = ‘X’.
else.
delete et_bapireturn where type <> ‘E’ or type <> ‘A’.
read table et_bapireturn into es_bapireturn index 1.
ls_resb-messg = ‘更新失败’.
endif.
endif.modify gt_resb from ls_resb transporting messg xloek where ordid = ps_resb-ordid and matnr = ps_resb-matnr and posnr = ps_resb-posnr.
ps_resb-messg = ls_resb-messg.
ps_resb-xloek = ls_resb-xloek.
endform.