乐于分享
好东西不私藏

SAP软件采购发票校验的BAPI使用说明

SAP软件采购发票校验的BAPI使用说明

sap学习、就业、技术问题的探讨和咨询!声明:本文仅代表作者观点和立场,不代表任何公司!仅用于SAP软件应用学习参考。

根据采购订单创建发票校验的常用BAPI是:

1、BAPI_INCOMINGINVOICE_CREATE

2、BAPI_INCOMINGINVOICE_PARK

这两个BAPI函数在SAP系统中用于处理采购发票的校验和创建过程。以下是关于这两个BAPI的详细使用说明:

1、BAPI_INCOMINGINVOICE_CREATE

功能说明:

BAPI_INCOMINGINVOICE_CREATE用于直接创建并校验采购发票,生成相应的会计凭证。这个函数模块会处理发票的头部信息和行项目信息,并返回创建的发票号等结果。

使用方法:

准备输入参数:

headerdata:包含发票的头部信息,如发票类型、凭证日期、公司代码、供应商等。

itemdata:包含发票的行项目信息,如物料、数量、单价等。

taxdata(可选):包含发票的税务信息。

调用BAPI:BAPI_INCOMINGINVOICE_CREATE,并传入准备好的输入参数。(具体参考后面使用例子说明)

处理返回值:

通过返回值可以获取创建的发票号( invoicedocnumber )和其他相关信息。同时,需要检查返回表(如BAPIRET2)中的错误或警告信息。

提交事务:

如果发票成功创建,需要调用BAPI_TRANSACTION_COMMIT来提交事务。

2、BAPI_INCOMINGINVOICE_PARK

功能说明:

BAPI_INCOMINGINVOICE_PARK用于创建或修改待入库的采购发票,但不会立即生成会计凭证。这个函数模块通常用于发票的预制过程。

使用方法:

准备输入参数:

headerdata:包含发票的头部信息。

itemdata:包含发票的行项目信息。

调用BAPI:BAPI_INCOMINGINVOICE_PARK,并传入准备好的输入参数(具体参考后面使用例子说明)

后续处理:

调用成功后,发票将被标记为待入库状态,但不会立即影响库存或生成会计凭证。

后续可以使用BAPI_INCOMINGINVOICE_POST等函数将待入库的发票进行入库操作,并生成相应的会计凭证。

注意事项

在调用这些BAPI之前,请确保采购订单、收货等相关信息已经在系统中正确维护。

BAPI的参数和返回值可能会因SAP系统的不同版本和配置而有所不同,请参考具体的SAP系统文档或咨询SAP支持人员。

在生产环境中使用BAPI之前,请务必在测试环境中进行充分的测试。

下面以发票预制的BAPI使用例子说明参数如何赋值:

BAPI_INCOMINGINVOICE_PARK创建预制发票,一个预制发票包含正常PO和退货PO的发票参数赋值说明:

REPORT  ZZMIR7.DATA:LS_HEADERDATA       TYPE BAPI_INCINV_CREATE_HEADER,     LV_INVOICEDOCNUMBER LIKE BAPI_INCINV_FLD-INV_DOC_NO,     LV_FISCALYEAR       LIKE BAPI_INCINV_FLD-FISC_YEAR,     LT_ITEMDATA         TYPE STANDARD TABLE OF BAPI_INCINV_CREATE_ITEM,     LS_ITEMDATA         TYPE BAPI_INCINV_CREATE_ITEM,     LT_TAXDATA          LIKE TABLE OF BAPI_INCINV_CREATE_TAX,     LS_TAXDATA          LIKE BAPI_INCINV_CREATE_TAX,     LT_RETURN           TYPE STANDARD TABLE OF BAPIRET2,     LS_RETURN           TYPE BAPIRET2.DATA:LV_ITEM    TYPE BAPI_INCINV_CREATE_ITEM-INVOICE_DOC_ITEM,     LV_CHECK   TYPE CHAR1,     LV_MESSAGE TYPE CHAR200.CLEAR:LS_HEADERDATA.LS_HEADERDATA-INVOICE_IND = 'X'"标识: 记帐发票*存在退货和普通的凭证 如下2参数需要赋值LS_HEADERDATA-DELIV_POSTING  = 'S'.LS_HEADERDATA-RETURN_POSTING = 'H'.LS_HEADERDATA-DOC_TYPE = 'RE'."凭证类型LS_HEADERDATA-DOC_DATE = SY-DATUM."凭证中的凭证日期LS_HEADERDATA-PSTNG_DATE = SY-DATUM."凭证中的过账日期LS_HEADERDATA-COMP_CODE = '1000'."公司代码LS_HEADERDATA-CURRENCY = 'CNY'."货币码LS_HEADERDATA-BLINE_DATE = SY-DATUM."用于到期日计算的基准日期LS_HEADERDATA-REF_DOC_NO = '20260615001'.LS_HEADERDATA-GROSS_AMOUNT = '9040' .LS_HEADERDATA-CALC_TAX_IND = 'X'."自动计算税*正常PO:4500009782CLEAR LS_ITEMDATA.LV_ITEM = LV_ITEM + 1.LS_ITEMDATA-INVOICE_DOC_ITEM = LV_ITEM."发票凭证中的凭证项目LS_ITEMDATA-PO_NUMBER = '4500009782'."采购凭证号LS_ITEMDATA-PO_ITEM = '10'."采购凭证的项目编号LS_ITEMDATA-ITEM_AMOUNT = '10000'."凭证货币金额LS_ITEMDATA-QUANTITY = '100'."数量 'LS_ITEMDATA-PO_UNIT = 'EA'."订单单位LS_ITEMDATA-TAX_CODE = 'J2'."销售/购买税代码LS_ITEMDATA-REF_DOC = '5000009358'."参考凭证号LS_ITEMDATA-REF_DOC_IT = '1'."发票凭证中的凭证项目LS_ITEMDATA-REF_DOC_YEAR = '2026'."会计年度APPEND LS_ITEMDATA TO LT_ITEMDATA.*退货PO :4500009783CLEAR LS_ITEMDATA.LV_ITEM = LV_ITEM + 1.LS_ITEMDATA-INVOICE_DOC_ITEM = LV_ITEM."发票凭证中的凭证项目LS_ITEMDATA-PO_NUMBER = '4500009783'."采购凭证号LS_ITEMDATA-PO_ITEM = '10'."采购凭证的项目编号LS_ITEMDATA-ITEM_AMOUNT = '2000'."凭证货币金额 -80LS_ITEMDATA-QUANTITY = '10'."数量LS_ITEMDATA-PO_UNIT = 'EA'."订单单位LS_ITEMDATA-TAX_CODE = 'J2'."销售/购买税代码LS_ITEMDATA-REF_DOC = '5000009359'."参考凭证号LS_ITEMDATA-REF_DOC_IT = '1'."发票凭证中的凭证项目LS_ITEMDATA-REF_DOC_YEAR = '2026'."会计年度APPEND LS_ITEMDATA TO LT_ITEMDATA.*CLEAR:LS_TAXDATA.                " 如果不勾选自动计算税 这里可以给说金额*LS_TAXDATA-TAX_CODE   = 'J4'.*LS_TAXDATA-TAX_AMOUNT = 26.*APPEND LS_TAXDATA TO LT_TAXDATA.CALL FUNCTION 'BAPI_INCOMINGINVOICE_PARK'  EXPORTING    HEADERDATA       = LS_HEADERDATA  IMPORTING    INVOICEDOCNUMBER = LV_INVOICEDOCNUMBER    FISCALYEAR       = LV_FISCALYEAR  TABLES    ITEMDATA         = LT_ITEMDATA*    TAXDATA          = LT_TAXDATA    RETURN           = LT_RETURN.CLEAR:LV_CHECK,LV_MESSAGE.LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE CA 'AEX'.  LV_CHECK = 'E'.  CONCATENATE LV_MESSAGE LS_RETURN-MESSAGE INTO LV_MESSAGE .*  lv_message = lv_message && ls_return-message.ENDLOOP.IF LV_CHECK = 'E'.  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ELSE.  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'    EXPORTING      WAIT = 'X'.ENDIF.
备注:SAP ECC老版本此BAPI可能没有DELIV_POSTING和RETURN_POSTING 参数,需要打notes,参考如下:
https://launchpad.support.sap.com/#/notes/1566950
附录:SAP 专业术语注解
  1. Incoming invoice:供应商应付发票
  2. Credit memo:贷项凭证(冲销采购的红字发票)
  3. delivery item:交货单行项目
  4. returns item:退货单行项目
  5. debit/credit indicator:借贷记账标识(S = 借方,H = 贷方)