BAPI_PO_CHANGE

来源:互联网 发布:新用户福利软件 编辑:程序博客网 时间:2024/05/18 03:36
*& 手工更改采购订单项目里发票标签下的最终交货复选框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