‎2006 Jul 20 9:52 AM
HI ,
can anyone plz tell me how to pass Posting key and ZTERM values in this bapi .
i using this bapi for tranction F-02 .
Thanks,
sridhar
Message was edited by: sridhar reddy
‎2006 Jul 20 9:56 AM
Hi,
Look at the sample code for posting through BAPI.
**************************
data: it_hdr like standard table of bapiache09
with header line, "#EC NEEDED
it_gl like standard table of bapiacgl09 with header line,
it_curr like standard table of bapiaccr09 with header line,
t_result like standard table of bapiret2 with header line,
act_rec like standard table of bapiacar09 with header line.
v_blart = 'ZT'.
loop at podoc_it.
clear: offset_it, it_gl, it_curr, er_podoc,
act_rec, tracc_it, pdoc_it, doc_it.
ON CHANGE of podoc_it-belnr.
line_item = 0.
ENDON.
on change of podoc_it-belnr or
podoc_it-gjahr.
line_item = 0.
clear v_bktxt.
concatenate podoc_it-belnr podoc_it-bukrs
podoc_it-gjahr into v_bktxt.
Header Data " Sending comp code
it_hdr-comp_code = podoc_it-bukrs.
it_hdr-doc_date = sy-datum.
if p_podt is initial.
it_hdr-pstng_date = podoc_it-budat.
v_monat = podoc_it-monat.
v_gjahr = podoc_it-gjahr.
else.
it_hdr-pstng_date = p_podt.
endif.
it_hdr-doc_type = v_blart.
it_hdr-ref_doc_no = podoc_it-belnr.
it_hdr-username = sy-uname.
it_hdr-header_txt = v_bktxt.
it_hdr-bus_act = 'RFBU'.
append it_hdr.
endon.
read table offset_it with key bukrs = podoc_it-bukrs
saknr = podoc_it-hkont.
read table tracc_it with key bukrs = podoc_it-bukrs
belnr = podoc_it-belnr
gjahr = podoc_it-gjahr
binary search.
if not offset_it-osaknr is initial and
tracc_it-obelnr = ''.
select single * from skb1
where bukrs = podoc_it-bukrs and
saknr = offset_it-osaknr.
if sy-subrc = 0.
move: podoc_it-bukrs to doc_it-bukrs,
podoc_it-belnr to doc_it-belnr,
podoc_it-gjahr to doc_it-gjahr,
podoc_it-per_yr to doc_it-per_yr,
podoc_it-buzei to doc_it-buzei,
v_blart to doc_it-blart,
pdoc_it-blart to doc_it-blart,
podoc_it-shkzg to doc_it-shkzg,
podoc_it-waers to doc_it-waers,
podoc_it-wrbtr to doc_it-wrbtr,
podoc_it-hkont to doc_it-hkont,
offset_it-osaknr to doc_it-osaknr,
podoc_it-error to doc_it-error,
podoc_it-invno to doc_it-invno,
podoc_it-sono to doc_it-sono,
podoc_it-soitem to doc_it-soitem,
podoc_it-lnum to doc_it-lnum,
podoc_it-lname to doc_it-lname,
podoc_it-panum to doc_it-panum,
podoc_it-pname to doc_it-pname,
podoc_it-pono to doc_it-pono.
if podoc_it-koart = 'D'.
move: podoc_it-kunnr to doc_it-hkont,
podoc_it-kunnr to doc_it-osaknr.
else.
move: podoc_it-hkont to doc_it-hkont,
offset_it-osaknr to doc_it-osaknr.
endif.
pdoc_it-bukrs = podoc_it-bukrs.
pdoc_it-belnr = podoc_it-belnr.
pdoc_it-gjahr = podoc_it-gjahr.
pdoc_it-blart = podoc_it-blart.
pdoc_it-xblnr = podoc_it-xblnr.
pdoc_it-buzei = podoc_it-buzei.
pdoc_it-koart = podoc_it-koart.
pdoc_it-sgtxt = podoc_it-sgtxt.
pdoc_it-hkont = podoc_it-hkont.
pdoc_it-kunnr = podoc_it-kunnr.
pdoc_it-shkzg = podoc_it-shkzg.
pdoc_it-mwskz = podoc_it-mwskz.
pdoc_it-waers = podoc_it-waers.
pdoc_it-wrbtr = podoc_it-wrbtr.
append: pdoc_it, doc_it.
line_item = line_item + 1.
if podoc_it-koart = 'D'.
clear: v_sgtxt.
concatenate podoc_it-bukrs podoc_it-gjahr
podoc_it-belnr podoc_it-buzei into v_sgtxt.
if podoc_it-shkzg = 'S'.
First Item
Account receivable
act_rec-itemno_acc = line_item.
act_rec-customer = podoc_it-kunnr.
act_rec-gl_account = podoc_it-hkont.
act_rec-bus_area = podoc_it-gsber.
act_rec-item_text = v_sgtxt.
append act_rec.
Set amount
it_curr-itemno_acc = line_item.
it_curr-currency = podoc_it-waers.
it_curr-amt_doccur = podoc_it-wrbtr.
it_curr-amt_doccur = it_curr-amt_doccur * -1.
append it_curr.
else.
First Item
Account number
act_rec-itemno_acc = line_item.
act_rec-customer = podoc_it-kunnr.
act_rec-gl_account = podoc_it-hkont.
act_rec-bus_area = podoc_it-gsber.
act_rec-item_text = v_sgtxt.
append act_rec.
it_curr-itemno_acc = line_item.
it_curr-currency = podoc_it-waers.
it_curr-amt_doccur = podoc_it-wrbtr.
append it_curr.
endif.
else.
clear: v_sgtxt.
concatenate podoc_it-bukrs podoc_it-gjahr
podoc_it-belnr podoc_it-buzei into v_sgtxt.
if podoc_it-shkzg = 'S'.
First Item
Account number
it_gl-itemno_acc = line_item.
it_gl-gl_account = offset_it-osaknr.
it_gl-item_text = v_sgtxt.
it_gl-fis_period = v_monat.
it_gl-fisc_year = v_gjahr.
it_gl-tax_code = podoc_it-mwskz.
it_gl-acct_key = 'A00'.
append it_gl.
Set amount
it_curr-itemno_acc = line_item.
it_curr-currency = podoc_it-waers.
it_curr-amt_doccur = podoc_it-wrbtr.
it_curr-amt_doccur = it_curr-amt_doccur * -1.
append it_curr.
else.
First Item
Account number
it_gl-itemno_acc = line_item.
it_gl-gl_account = offset_it-osaknr.
it_gl-item_text = v_sgtxt.
it_gl-fis_period = v_monat.
it_gl-fisc_year = v_gjahr.
it_gl-tax_code = podoc_it-mwskz.
it_gl-acct_key = 'A00'.
append it_gl.
it_curr-itemno_acc = line_item.
it_curr-currency = podoc_it-waers.
it_curr-amt_doccur = podoc_it-wrbtr.
append it_curr.
endif.
endif.
else.
eflag = 'X'.
move: podoc_it-bukrs to doc_it-bukrs,
podoc_it-belnr to doc_it-belnr,
podoc_it-gjahr to doc_it-gjahr,
podoc_it-buzei to doc_it-buzei,
v_blart to doc_it-blart,
pdoc_it-blart to doc_it-blart,
podoc_it-shkzg to doc_it-shkzg,
podoc_it-waers to doc_it-waers,
podoc_it-wrbtr to doc_it-wrbtr.
doc_it-er_gl = 'X'.
move: podoc_it-belnr to er_podoc-belnr.
er_podoc-er_doc = 'X'.
if podoc_it-koart = 'D'.
move: podoc_it-kunnr to doc_it-hkont,
podoc_it-kunnr to doc_it-osaknr.
else.
move: podoc_it-hkont to doc_it-hkont,
offset_it-osaknr to doc_it-osaknr.
endif.
append doc_it.
collect er_podoc.
endif.
else."IF SENDING A/C not found
eflag = 'X'.
move: podoc_it-bukrs to doc_it-bukrs,
podoc_it-belnr to doc_it-belnr,
podoc_it-gjahr to doc_it-gjahr,
podoc_it-buzei to doc_it-buzei,
v_blart to doc_it-blart,
pdoc_it-blart to doc_it-blart,
podoc_it-shkzg to doc_it-shkzg,
podoc_it-waers to doc_it-waers,
podoc_it-wrbtr to doc_it-wrbtr.
doc_it-error = 'X'.
if podoc_it-koart = 'D'.
move: podoc_it-kunnr to doc_it-hkont,
podoc_it-kunnr to doc_it-osaknr.
else.
move: podoc_it-hkont to doc_it-hkont,
offset_it-osaknr to doc_it-osaknr.
endif.
move: podoc_it-belnr to er_podoc-belnr.
er_podoc-er_doc = 'X'.
er_podoc-er_sac = 'X'.
append doc_it.
collect er_podoc.
endif.
if podoc_it-blart = 'DF' and podoc_it-xbilk = space.
read table upd_it with key bukrs = podoc_it-bukrs
belnr = podoc_it-belnr
gjahr = podoc_it-gjahr
vbeln = podoc_it-sono
posnr = podoc_it-soitem
binary search.
if sy-subrc = 0.
clear bklog_it.
bklog_it-vbeln = upd_it-vbeln.
bklog_it-posnr = upd_it-posnr.
bklog_it-upd_amt = upd_it-upd_amt.
append bklog_it.
endif.
endif.
at end of belnr.
if eflag = ''.
refresh t_result. clear t_result.
call function 'BAPI_ACC_DOCUMENT_CHECK'
exporting
documentheader = it_hdr
tables
accountgl = it_gl
accountreceivable = act_rec
currencyamount = it_curr
return = t_result.
loop at t_result where ( type = 'E' or
type = 'A' ).
exit.
endloop.
if sy-subrc <> 0.
refresh t_result.
call function 'BAPI_ACC_DOCUMENT_POST'
exporting
documentheader = it_hdr
tables
accountgl = it_gl
accountreceivable = act_rec
currencyamount = it_curr
return = t_result.
*
call function 'BAPI_TRANSACTION_COMMIT'.
endif.
Print Message
loop at t_result.
read table pdoc_it with key bukrs = podoc_it-bukrs
gjahr = podoc_it-gjahr
belnr = podoc_it-belnr.
Get Doc Number / Error msg
if t_result-type = 'S' and
t_result-id = 'RW' and
t_result-number = '605'.
pdoc_it-obelnr = t_result-message_v2(10).
pdoc_it-ogjahr = t_result-message_v2+14(4).
pdoc_it-msg = t_result-message(28).
pdoc_it-val_rec = 'X'.
clear flag.
else.
flag = 'X'.
endif.
modify pdoc_it transporting obelnr ogjahr msg
er_rec val_rec
where bukrs = podoc_it-bukrs and
gjahr = podoc_it-gjahr and
belnr = podoc_it-belnr.
endloop.
if flag = 'X'.
clear t_result.
read table t_result index 2.
pdoc_it-msg = t_result-message.
pdoc_it-er_rec = 'X'.
pdoc_it-val_rec = 'X'.
append doc_it.
else.
loop at bklog_it into valid_bklog_it.
collect valid_bklog_it.
endloop.
endif.
clear v_per_yr.
concatenate '0' v_monat '-' v_gjahr
into v_per_yr.
move v_per_yr to pdoc_it-sper_yr.
modify pdoc_it transporting obelnr ogjahr sper_yr msg
er_rec val_rec
where bukrs = podoc_it-bukrs and
gjahr = podoc_it-gjahr and
belnr = podoc_it-belnr.
APPEND doc_it.
ENDLOOP.
endif.
clear: pdoc_it, it_hdr, it_gl, it_curr, act_rec, t_result, eflag.
refresh: it_hdr, it_gl, it_curr, act_rec, t_result, bklog_it.
endat.
clear: podoc_it.
endloop.
Thanks.
If this helps you reward with points.
‎2006 Jul 20 7:37 PM
posting key will be automatically generated by the bapi based on the currency or depending on the the posting item.
'BAPI_ACC_DOCUMENT_CHECK'
'BAPI_ACC_DOCUMENT_POST' are better for the requirement. have the payments terms fields based on Vendor or Customer depending on the requirement.