ABAP BAPI_ACC_DOCUMENT_POST生成预制会计凭证

生成会计凭证一般使用BAPIBAPI_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这个参数未输,为该参数传值即可解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值