本文主要是介绍ABAP BAPI_ACC_DOCUMENT_POST生成预制会计凭证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
生成会计凭证一般使用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这个参数未输,为该参数传值即可解决。
这篇关于ABAP BAPI_ACC_DOCUMENT_POST生成预制会计凭证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!