BAPI_ACC_DOCUMENT_POST 创建会计凭证

bapi不需要传记账码,但是要自己根据记账码判断金额符号

:这个bapi不支持 BW 特别总账(票据),只能用bdcPOSTING_INTERFACE_DOCUMENT这个函数是录BDC的,可以

https://launchpad.support.sap.com/#/notes/2076117/E

也可以通过增强实现,在LFACIF5D

调用代码

3.不传税码行项目会自动根据货币判断写上货币对应的0税码

4.如果抬头文本 header_txt 写不进去,检查badi AC_DOCUMENT是否激活,如果激活了CHANGE_INITIALCHANGE_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表,gl_account传统驭科目,acct_type = 'A',ls_header-bus_act = 'RFBU'。资产号传到asset_no,ANLN2必填,ANBWA 业务类型。

如果报错 AAPO 007 nconsistent with FI/CO document: different document structures,很有可能是增强字段给覆盖了(比如增强字段有anln1资产号把gl account表的覆盖了),如果gl account表没传资产号报错很容易看出来,如果在增强里清空了,此时已经过了检查,报错就很难看懂。

如果报错 E AA 326 Enter a transaction type,输入业务类型

则传入ANBWA 业务类型字段即可,ANBWA 通过badi增强附加字段过去

9.用此函数做f-47单边预付请求 down payment request,如果要传资产用附加字段传, 有个函数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报错,检查这里

13.没有小数位的金额(如日元)还是要先处理下再传,否则会缩小100倍

14.KI 280 定义科目 6301060000 的成本要素类别(成本控制范围 MITH),如果不是科目问题,科目不需要作为成本要素,可能是把利润中心传入获利段导致的

15.票据不要传付款条件,如果传了分期付款,bseg会拆开多行,bsed只有一行,清账的时候会出问题

16.采购订单预付款清账警告 F5A293,看下是否是预付款没有写入采购订单历史,前台F-48预付款可以写入采购订单历史,F-02不会。call 完bapi之后需要再调用ME_CREATE_HISTORY_FINANCE才能写入采购订单历史。非采购订单场景调了这函数也没影响

17.F5A 190: Enter a business place under Basic data:此报错是需要配置公司代码的业务地点。参考673192 - Thailand: Default business place in interface.配个全局的地点,或者用户参数配置ID_BUPLA 2280 Business Place

demo

*-------------------------------------------------------

*2022-6-20 14:42:58 SAP40 for wangliuqing

*预付款凭证未挂到采购订单历史的情况

data:

lt_bkpf type table of bkpf,

lt_bseg type table of bseg.

select *

from bkpf

where bukrs = @is_bkpf-bukrs and gjahr = @is_bkpf-gjahr and belnr = @ev_belnr

into table @lt_bkpf.

select *

from bseg

where bukrs = @is_bkpf-bukrs and gjahr = @is_bkpf-gjahr and belnr = @ev_belnr

into table @lt_bseg.

call function 'ME_CREATE_HISTORY_FINANCE'

tables

t_bkpf = lt_bkpf

t_bseg = lt_bseg.

call function 'BAPI_TRANSACTION_COMMIT'

exporting

wait = 'X'.

*-------------------------------------------------------

附加字段增强

注:附加字段结构不要有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版本

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值