最近需要做一个清帐程序,SAP没有清帐的BAPI,但是提供了清帐的一组函数:
POSTING_INTERFACE_START;
POSTING_INTERFACE_CLEARING;
POSTING_INTERFACE_END ;
这边着重说明一下函数POSTING_INTERFACE_CLEARING的传值
栗子:
发票校验产生的应收凭证需要转成预收,然后清掉应付。
A凭证 借:费用
贷:应付暂估
B凭证 借:应付暂估
借:应缴增值税
贷:应付
C凭证 借: 预收
贷:费用
A和B 可以清掉应付暂估
C凭证的产生可以直接同时把应付清掉
这边主要说明C凭证的产生。
FB05是清帐事物代码:
T_FTPOST的值是产生清帐 并生成预收凭证C的 抬头字段和项目字段值:
输入的值如同
FB05的
T_FTCLEAR的值是需要清的凭证,展开如下,是要清掉会计凭证9511007857,如果需要清多个凭证需要填多个
相当于FB05的
点击FB05模拟
SE37里面执行 POSTING_INTERFACE_CLEARING 可以debug看到FB05的界面
注意:给T_FTPOST传值的时候金额需要去前面的空格,千万不要对每一个字段都去空格,不然会带不到FB05的行项目上,这几天由于对每个字段都去空格,测了老半天的错误才查出来,折腾死。
如果生成的清帐凭证是一个没有行项目的凭证:
参数:T_FTCLEAR: 传入的是所要清帐的内容比如清供应商的应付行项目
参数:T_FTPOST 是要生成的SH清帐凭证的抬头
参数:I_AUGLV : UMBUCHNG
I_TCODE: FB05
I_SGFUNCT:C 这边不知道除了传C还可以传什么
这边贴一段代码:清帐产生没有行项目的凭证:
1 FORM frm_create_sh USING p_haeder TYPE zfis011 2 pt_list TYPE zfit009 3 CHANGING pt_return TYPE zfit010. 4 5 DATA: lt_list TYPE zfit009, 6 ls_list TYPE zfis009, 7 wa_list TYPE zfis009, 8 lt_return TYPE zfit010, 9 ls_return TYPE zfis010, 10 lv_itemno TYPE posnr_acc. 11 12 DATA lv_message TYPE bapiret2-message. 13 DATA: lv_msgid LIKE sy-msgid, 14 lv_msgno LIKE sy-msgno, 15 lv_msgty LIKE sy-msgty, 16 lv_msgv1 LIKE sy-msgv1, 17 lv_msgv2 LIKE sy-msgv2, 18 lv_msgv3 LIKE sy-msgv3, 19 lv_msgv4