bapi不需要传记账码,但是要自己根据记账码判断金额符号
注:这个bapi不支持 B和W 特别总账(票据),只能用bdc;POSTING_INTERFACE_DOCUMENT这个函数是录BDC的,可以
https://launchpad.support.sap.com/#/notes/2076117/E
也可以通过增强实现,在LFACIF5D里
调用代码
3.不传税码行项目会自动根据货币判断写上货币对应的0税码
4.如果抬头文本 header_txt 写不进去,检查badi AC_DOCUMENT是否激活,如果激活了CHANGE_INITIAL和CHANGE_AFTER_CHECK都需要加段代码
data: wa_header type acchd.
if sy-xprog ne 'SAPMSSY1'.
*---<SAPLBPFC> is for Posting with BAPI: BAPI_ACC_DOCUMENT_POST
*---<SAPCNVE > is for Posting(Tax) with BAPI: BAPI_ACC_DOCUMENT_POST
*---<SAPMSSY1> is for Test(Check) with BAPI: BAPI_ACC_DOCUMENT_CHECK
clear wa_header.
wa_header = im_document-header.
ex_document-header-bktxt = wa_header-bktxt.
clear wa_header.
endif.
5.税金科目根据配置情况,可以直接写入gl_acount里,此时不需要写baseamount,写进tax里需要base_amount
6.可以通过附加字段写入抬头字段
赋值 wa_ext2-itemno_acc = 0.
7.不同货币写入CURRENCYAMOUNT
it_currency-itemno_acc = '1'.
it_currency-curr_type = '00'.
it_currency-currency = 'MXN'.
it_currency-amt_doccur = '123.00'.
it_currency-itemno_acc = '1'.
it_currency-curr_type = '30'.
it_currency-currency = 'USD'.
it_currency-amt_doccur = '10.00'.
8.资产传到gl_account表,koart = 'A',ls_header-bus_act = 'RFBU'。资产号传到asset_no,次级资产号必填 anln2。如果报错 AAPO 007 nconsistent with FI/CO document: different document structures,很有可能是增强字段给覆盖了(比如增强字段有anln1资产号把gl account表的覆盖了),如果gl account表没传资产号报错很容易看出来,如果在增强里清空了,此时已经过了检查,报错就很难看懂。
9.用此函数做f-47单边预付,如果要传资产用附加字段传, 有个函数AMSP_RLAMBU_FILL_FROM_ACCIT会把资产字段清空,在开头做一个隐式增强跳过去。
data:
lv_exit.
import lv_exit to lv_exit from memory id 'ZFM_AM_01_11'.
IF lv_exit = 'X'.
return.
ENDIF.
currency type field. (00 = document, 30 = group, 10 = company code currency.)
10.付款条件写不进去有个note
11.税额为0时,总账科目可以直接行项目传个税码不传ACCOUNTTAX(CALCULATE_TAX_FROM_NET_AMOUNT),统驭科目不传会报错FF 805
12.Error KI-280
Create account 310231 for 05.08.2016 as a cost element in controlling area 1000
收入科目前台做没问题,bapi报错,检查这里
附加字段增强
注:附加字段结构不要有item中可以有的字段,不然会在增强中把item传的值给覆盖掉
资产在gl_account里有,在供应商里没有,所以加到附加字段中
1.se11 创建结构ZSTR_ACCIT_EXTEND
POSNR 1 类型 POSNR_ACC
BSCHL 1 类型 BSCHL
GSBER 1 类型 GSBER
XNEGP 1 类型 XNEGP
VBUND 1 类型 RASSC
KIDNO 1 类型 KIDNO
NUMPG 1 类型 J_1ANOPG
REBZG 1 类型 REBZG
REBZJ 1 类型 REBZJ
REBZZ 1 类型 REBZZ
REBZT 1 类型 REBZT
EBELN 1 类型 EBELN
ANBWA 1 类型 ANBWA
RSTGR 1 类型 RSTGR
KKBER 1 类型 KKBER
FKBER 1 类型 FKBER
HZUON 1 类型 HZUON
SEGMENT 1 类型 FB_SEGMENT
AUGBL 1 类型 AUGBL
WSTAT 1 类型 WSTAT
ZUMSK 1 类型 DZUMSK
ANLN1 1 类型 ANLN1
ANLN2 1 类型 ANLN2
2.创建badi实施 ACC_DOCUMENT,方法CHANGE
新增过滤器值 BKPFF
预制、分类账版本
复制代码
data: wa_extension type bapiparex,
ext_value(960) type c,
wa_accit type accit,
l_ref type ref to data.
field-symbols: <l_struc> type any,
<l_field> type any.
sort c_extension2 by structure.
loop at c_extension2 into wa_extension.
at new structure.
create data l_ref type (wa_extension-structure).
assign l_ref->* to <l_struc>.
endat.
concatenate wa_extension-valuepart1 wa_extension-valuepart2
wa_extension-valuepart3 wa_extension-valuepart4
into ext_value.
move ext_value to <l_struc>.
assign component 'POSNR' of structure <l_struc> to <l_field>.
read table c_accit with key posnr = <l_field>
into wa_accit.
if sy-subrc is initial.
move-corresponding <l_struc> to wa_accit.
modify c_accit from wa_accit index sy-tabix.
endif.
endloop.
激活,直接调用bapi即可
DEMO
BDC版本