data: lt_items_old like table of bapiebanv with header line.
data: lt_items_new like table of bapiebanv with header line.
data: lt_account_old like table of bapiebknv with header line.
data: lt_account_new like table of bapiebknv with header line.
data: lt_items like table of bapieban with header line.
data: lt_account like table of bapiebkn with header line.
data: lt_bapireturn like table of bapireturn with header line.
call function 'BAPI_REQUISITION_GETDETAIL'
exporting
number = i_banfn
account_assignment = 'X'
tables
requisition_items = lt_items
requisition_account_assignment = lt_account.
loop at lt_items.
move-corresponding lt_items to lt_items_old.
append lt_items_old.
clear lt_items_old.
move-corresponding lt_items to lt_items_new.
loop at t_eban where bnfpo = lt_items-preq_item.
lt_items_new-short_text = t_eban-txz01.
lt_items_new-store_loc = t_eban-lgort. "库存地点
lt_items_new-quantity = t_eban-menge.
lt_items_new-unit = t_eban-meins.
lt_items_new-deliv_date = t_eban-lfdat.
lt_items_new-mat_grp = t_eban-matkl.
lt_items_new-store_loc = t_eban-lgort.
lt_items_new-pur_group = t_eban-ekgrp.
lt_items_new-c_amt_bapi = t_eban-preis.
lt_items_new-trackingno = t_eban-bednr.
lt_items_new-currency = t_eban-waers.
lt_items_new-price_unit = t_eban-peinh.
endloop.
append lt_items_new.
clear lt_items_new.
endloop.
loop at lt_account.
move-corresponding lt_account to lt_account_old.
append lt_account_old.
clear lt_account_old.
move-corresponding lt_account to lt_account_new.
loop at t_ebkn where bnfpo = lt_account-preq_item.
lt_account_new-wbs_elem_e = t_ebkn-ps_psp_pnr.
lt_account_new-g_l_acct = t_ebkn-sakto.
lt_account_new-cost_ctr = t_ebkn-kostl.
lt_account_new-asset_no = t_ebkn-anln1.
lt_account_new-order_no = t_ebkn-aufnr.
lt_account_new-co_area = t_ebkn-kokrs.
endloop.
append lt_account_new.
clear lt_account_new.
endloop.
loop at t_eban.
read table lt_items with key preq_item = t_eban-bnfpo.
if sy-subrc <> 0.
lt_items_new-preq_item = t_eban-bnfpo. "采购申请的项目编号
lt_items_new-short_text = t_eban-txz01.
lt_items_new-store_loc = t_eban-lgort. "库存地点
lt_items_new-quantity = t_eban-menge.
lt_items_new-unit = t_eban-meins.
lt_items_new-deliv_date = t_eban-lfdat.
lt_items_new-mat_grp = t_eban-matkl.
lt_items_new-store_loc = t_eban-lgort.
lt_items_new-pur_group = t_eban-ekgrp.
lt_items_new-c_amt_bapi = t_eban-preis.
lt_items_new-trackingno = t_eban-bednr.
lt_items_new-currency = t_eban-waers.
lt_items_new-price_unit = t_eban-peinh.
lt_items_new-des_vendor = t_eban-lifnr. "期望的供应商
lt_items_new-fixed_vend = t_eban-flief. "固定的供应商
lt_items_new-info_rec = t_eban-infnr. "采购信息记录的编号
lt_items_new-purch_org = t_eban-ekorg. "采购组织
append lt_items_new.
clear lt_items_new.
endif.
endloop.
loop at t_ebkn.
read table lt_account with key preq_item = t_ebkn-bnfpo.
if sy-subrc <> 0.
lt_account_new-preq_item = t_ebkn-bnfpo.
lt_account_new-wbs_elem_e = t_ebkn-ps_psp_pnr.
lt_account_new-g_l_acct = t_ebkn-sakto.
lt_account_new-cost_ctr = t_ebkn-kostl.
lt_account_new-asset_no = t_ebkn-anln1.
lt_account_new-order_no = t_ebkn-aufnr.
lt_account_new-co_area = t_ebkn-kokrs.
append lt_account_new.
clear lt_account_new.
endif.
endloop.
call function 'BAPI_REQUISITION_CHANGE'
exporting
number = i_banfn
tables
requisition_items_old = lt_items_old
requisition_items_new = lt_items_new
requisition_account_old = lt_account_old
requisition_account_new = lt_account_new
return = lt_bapireturn.
BAPI_REQUISITION_CREATE 创建了服务类的采购申请里面有一个参数(REQUISITION_SERVICES),
BAPI_REQUISITION_CHANGE 和 BAPI_PR_CHANGE但是这二个BPAI里都没有专门的参数存入服务类的数据;
还有一个奇怪的现象,创建申请的有二个BAPI修改的也有二个;可是 BAPI_REQUISITION_CREATE 和 BAPI_REQUISITION_CHANGE 从名字上看这二个应该是一起的一个创建一个修改,
可是这二个BAPI里的参数几乎都不一样;
而 BAPI_PR_CREATE 和 BAPI_PR_CHANGE 这二个BAPI里面参数却都是一样的,很奇怪;很显然我如果用BAPI_PR_CREATE创建的申请可以用BAPI_PR_CHANGE来改(但这个BAPI却不能创建服务类申请,因为没有相关的参数),可是我用BAPI_REQUISITION_CREATE创建的申请却不能用BAPI_REQUISITION_CHANGE 来改。
欢迎关注订阅号:SAP学习记录 (SAPlearning )