BAPI_ACC_DOCUMENT_POST 创建会计凭证

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版本

 

 

 

猜你喜欢

转载自blog.csdn.net/cylcylcylcylwo/article/details/114078289