前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP BAPI_ACC_DOCUMENT_POST生成预制会计凭证

ABAP BAPI_ACC_DOCUMENT_POST生成预制会计凭证

作者头像
matinal
发布2020-11-30 09:47:56
1.9K0
发布2020-11-30 09:47:56
举报
文章被收录于专栏:SAP TechnicalSAP Technical

生成会计凭证一般使用BAPI:BAPI_ACC_DOCUMENT_POST。

在使用该BAPI生成预制会计凭证时需要做增强,实例化 BAPI出口ACC_DOCUMENT,实现方法CHANGE:

READ TABLE C_EXTENSION2 INTO LS_EXTE WITH KEY STRUCTURE = 'ZFIDOCEXT'. IF SY-SUBRC = 0. ZEXT_DATA = LS_EXTE-VALUEPART1. MOVE ZEXT_DATA-STATUS TO C_ACCHD-STATUS_NEW.

ENDIF.

其中,ZFIDOCEXT为自定义结构,其中包含行号,记账码,原因代码和一个字符标识:

在程序中,调用BAPI_ACC_DOCUMENT_POST前,将结构ZFIDOCEXT型变量赋值,在预制会计凭证时需要将STATUS赋值为2,即将C_ACCHD-STATUS_NEW赋值为2,然后将ZFIDOCEXT传给BAPI的参数EXTENSION2:

IF SY-TCODE = 'ZFI210'. LW_ZFIDOCEXT-BSCHL = '40'. "记帐码 ELSEIF SY-TCODE = 'ZFI211'. LW_ZFIDOCEXT-BSCHL = '50'. "记帐码

ENDIF.

IF P_PARK = 'X'. "是否创建预制凭证,否则凭证直接过账

LW_ZFIDOCEXT-STATUS = '2'.

ELSE. LT_EXTENSION-STRUCTURE = 'ZFIDOCEXT'.

LT_EXTENSION-VALUEPART1 = LW_ZFIDOCEXT. APPEND LT_EXTENSION. CLEAR LT_EXTENSION,LW_ZFIDOCEXT.

ENDIF.

调用BAPI时将LT_EXTENSION传递给参数EXTENSION2:

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' EXPORTING DOCUMENTHEADER = GD_DOCUMENTHEADER

TABLES * ACCOUNTGL = LT_ACCOUNTGL ACCOUNTRECEIVABLE = LT_ACCOUNTRECEIVABLE

* ACCOUNTPAYABLE = LT_ ACCOUNTPAYABLE

CURRENCYAMOUNT = LT_CURRENCYAMOUNT

RETURN = LT_RETURN

EXTENSION2 = LT_EXTENSION .

该BAPI中的参数ACCOUNTGL为总帐科目项,ACCOUNTRECEIVABLE为客户项目,ACCOUNTPAYABLE为供应商项目,CURRENCYAMOUNT为货币项目,RETURN为返回消息,在使用该BAPI时应注意参数的传递。

PS:实际应用过程中出现了生成的预制会计凭证无法转成正式会计凭证的问题,报错信息如下图:

经查,是因为LT_ACCOUNTRECEIVABLE中的BLINE_DATE这个参数未输,为该参数传值即可解决。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档