*& 手工更改采购订单项目里发票标签下的最终交货复选框
report zmmr0191 message-id zfd_01.
tables:ekpo.
data:begin of it_ekpo occurs 0,
ebeln like ekko-ebeln,
ebelp like ekpo-ebeln,
wemng like eket-wemng,
menge like ekpo-menge,
invoiced_menge like ekbe-menge,
end of it_ekpo,
it_return like table of bapiret2,
it_poitem like table of bapimepoitem with header line,
it_poitemx like table of bapimepoitemx with header line.
selection-screen:begin of block b1 with frame title text-001.
select-options:s_date for sy-datum obligatory,
s_werks for ekpo-werks.
selection-screen:end of block b1.
start-of-selection.
*& 读取需判断的采购订单.
perform get_po_order.
*& 更新最终交货标记
perform close_po_final_delivery.
*&---------------------------------------------------------------------*
*& Form GET_PO_ORDER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_po_order .
select eket~ebeln eket~ebelp wemng ekpo~menge ekbe~menge as invoiced_menge
into table it_ekpo
from eket inner join ekpo
on ekpo~ebeln = eket~ebeln and
ekpo~ebelp = eket~ebelp
inner join ekbe
on ekbe~ebeln = eket~ebeln and
ekbe~ebelp = eket~ebelp
where eindt in s_date and
vgabe = '2' and
ekpo~loekz = '' and
* ekpo~elikz = 'X' AND
ekpo~werks in s_werks and
ekpo~knttp = 'F' and
ekpo~erekz = ''
%_hints oracle 'INDEX("EKET" "EKET~D")'.
endform. " GET_PO_ORDER
*&---------------------------------------------------------------------*
*& Form CLOSE_PO_FINAL_DELIVERY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form close_po_final_delivery .
data:wa_ekpo like line of it_ekpo,
begin of it_output occurs 0,
ebeln like ekpo-ebeln,
ebelp like ekpo-ebelp,
end of it_output,
wa_return like line of it_return.
sort it_ekpo by ebeln ebelp.
loop at it_ekpo.
wa_ekpo = it_ekpo.
at new ebelp.
sum.
if wa_ekpo-menge = wa_ekpo-wemng and
wa_ekpo-menge = it_ekpo-invoiced_menge.
it_poitem-po_item = wa_ekpo-ebelp.
*& 最终发票
it_poitem-final_inv = 'X'.
append it_poitem.
it_poitemx-po_item = wa_ekpo-ebelp.
*& 最终发票
it_poitemx-final_inv = 'X'.
append it_poitemx.
*& 附加到输出表
it_output-ebeln = wa_ekpo-ebeln.
it_output-ebelp = wa_ekpo-ebelp.
append it_output.
endif.
endat.
at end of ebeln.
if not it_poitem[] is initial and
not it_poitem[] is initial.
refresh:it_return.
call function 'BAPI_PO_CHANGE'
exporting
purchaseorder = wa_ekpo-ebeln
tables
return = it_return
poitem = it_poitem
poitemx = it_poitemx.
if sy-subrc = 0 .
loop at it_return into wa_return where type = 'E'.
exit.
endloop.
if sy-subrc <> 0.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
else.
delete it_output where ebeln = wa_ekpo-ebeln.
endif.
endif.
endif.
refresh:it_poitem,it_poitemx.
endat.
endloop.
if not it_output[] is initial.
write: at 2 '采购凭证',14 '项目'.
loop at it_output.
write:/2 it_output-ebeln,14 it_output-ebelp,20 '最终发票标记已打上'.
endloop.
else.
write:at 2 '没有符合条件的采购订单需更新,请核实!'.
endif.
endform. " CLOSE_PO_FINAL_DELIVERY
BAPI_PO_CHANGE
最新推荐文章于 2025-06-30 11:04:09 发布