发票凭证BAPI:BAPI_INCOMINGINVOICE_CREATE

1.定义

DATA: wa_headerdata       TYPE bapi_incinv_create_header,
      wa_invoicedocnumber TYPE bapi_incinv_fld-inv_doc_no,
      wa_fiscalyear       TYPE bapi_incinv_fld-fisc_year,
      it_itemdata         TYPE TABLE OF bapi_incinv_create_item,
      is_itemdata         TYPE bapi_incinv_create_item,
      lt_glaccount        TYPE TABLE OF bapi_incinv_create_gl_account,
      ls_glaccount        TYPE bapi_incinv_create_gl_account,
      lt_taxdata          TYPE TABLE OF bapi_incinv_create_tax,
      ls_taxdata          TYPE bapi_incinv_create_tax,
      it_return           TYPE TABLE OF bapiret2,
      is_return           TYPE bapiret2.

2.抬头

wa_headerdata-doc_date       = input-mt_erp_mm062-bldat.     "发票日期
wa_headerdata-pstng_date     = input-mt_erp_mm062-budat.     "过账日期
wa_headerdata-currency       = input-mt_erp_mm062-waers.     "币种
wa_headerdata-ref_doc_no     = ' '.          "参照
wa_headerdata-header_txt     = input-mt_erp_mm062-sgtxt.     "抬头文本
wa_headerdata-comp_code      =  input-mt_erp_mm062-bukrs.    "公司代码
wa_headerdata-invoice_ind    = 'X'.
*  wa_headerdata-deliv_posting  = 'S'.
*  wa_headerdata-return_posting = 'H'.
*  wa_headerdata-calc_tax_ind = 'X'.
wa_headerdata-gross_amount   = input-mt_erp_mm062-wrbtr.     "含税金额

3.行项目

is_itemdata-invoice_doc_item = lv_itemnum.              "行项目号
is_itemdata-po_number        = ls_item-ebeln.           "采购订单号
is_itemdata-po_item          = ls_item-ebelp.           "采购订单行号

SEARCH ls_item-wrbtrs FOR '-'.
IF sy-subrc = 0.
  is_itemdata-item_amount    = ls_item-wrbtrs * ( -1 ). "金额,需传正数
*      is_itemdata-de_cre_ind = 'H'.
ELSE.
  is_itemdata-item_amount    = ls_item-wrbtrs.          "金额,需传正数
*      is_itemdata-de_cre_ind = 'S'.
ENDIF.

is_itemdata-quantity         = ls_item-menge.           "数量
is_itemdata-po_unit          = ls_item-meins.           "单位
is_itemdata-ref_doc          = ls_item-mblnr.           "物料凭证
is_itemdata-ref_doc_year     = lv_mjahr.                "物料凭证年度
is_itemdata-ref_doc_it       = ls_item-zeile.           "物料凭证行项目

APPEND is_itemdata TO it_itemdata.

4.税额

    ls_taxdata-tax_amount = input-mt_erp_mm062-wmwst.     "抬头税额
    APPEND ls_taxdata TO lt_taxdata.

5.扣款行

ls_glaccount-invoice_doc_item  = lv_itemnum.              "行项目
ls_glaccount-gl_account  = ls_itemh-hkont.                "总账科目

SEARCH ls_itemh-wrbtr FOR '-'.
IF sy-subrc = 0.
  ls_glaccount-item_amount = ls_itemh-wrbtr * ( -1 ).     "凭证货币金额
  ls_glaccount-db_cr_ind   = 'S'.                         "借方/贷方标识
ELSE.
  ls_glaccount-item_amount = ls_itemh-wrbtr.              "凭证货币金额
  ls_glaccount-db_cr_ind   = 'H'.                         "借方/贷方标识
ENDIF.
ls_itemh-shkzg = ls_glaccount-db_cr_ind.
ls_glaccount-comp_code   = input-mt_erp_mm062-bukrs.     "公司代码
ls_glaccount-tax_code    = ls_itemh-mwskz.               "销售/购买税代码
APPEND ls_glaccount TO lt_glaccount.

6.调用BAPI

CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
  EXPORTING
    headerdata       = wa_headerdata
*   ADDRESSDATA      =
  IMPORTING
    invoicedocnumber = wa_invoicedocnumber
    fiscalyear       = wa_fiscalyear
  TABLES
    itemdata         = it_itemdata
*   ACCOUNTINGDATA   =
    glaccountdata    = lt_glaccount
*   MATERIALDATA     =
    taxdata          = lt_taxdata
*   WITHTAXDATA      =
*   VENDORITEMSPLITDATA       =
    return           = it_return
*   EXTENSIONIN      =
*   TM_ITEMDATA      =
  .
IF wa_invoicedocnumber IS NOT INITIAL.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.

  output-mt_erp_mm062_b-statu = 'S'.
  output-mt_erp_mm062_b-belnr = wa_invoicedocnumber.
  output-mt_erp_mm062_b-message = '发票创建成功!'.

ELSE.

  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

  READ TABLE it_return INTO is_return INDEX 1.
  IF sy-subrc = 0.
    output-mt_erp_mm062_b-statu = 'E'.
    output-mt_erp_mm062_b-belnr = ''.
    output-mt_erp_mm062_b-message = is_return-message.
  ENDIF.
ENDIF.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BAPI_INCOMINGINVOICE_CREATE是一个SAP标准的BAPI,用于创建应付账款发票。以下是使用BAPI_INCOMINGINVOICE_CREATE的步骤: 1. 准备输入参数数据:需要创建发票的供应商、发票行项目数据、发票头信息等。 2. 调用BAPI_INCOMINGINVOICE_CREATE:将输入参数传递给BAPI_INCOMINGINVOICE_CREATE,调用该BAPI创建发票。 3. 检查返回值:BAPI返回一个结构体,其中包含了创建发票的结果信息。需要检查返回值,以确定发票是否成功创建。 以下是一个简单的ABAP代码示例,演示如何使用BAPI_INCOMINGINVOICE_CREATE来创建发票: ``` DATA: wa_head LIKE bapi_incinv_create_header, wa_item LIKE bapi_incinv_create_item, it_item TYPE STANDARD TABLE OF bapi_incinv_create_item WITH HEADER LINE. * 准备输入参数数据 wa_head-companycode = '1000'. wa_head-documentdate = sy-datum. wa_head-pstngdate = sy-datum. wa_head-duedate = sy-datum + 30. wa_head-vendor = '10000001'. wa_head-purch_org = '1000'. wa_head-purch_group = '001'. wa_head-currency = 'USD'. wa_item-po_item = '00010'. wa_item-gross_amount = '100.00'. wa_item-currency = 'USD'. wa_item-quantity = 1. wa_item-orderid = '1000'. wa_item-material = 'M-0001'. wa_item-short_text = 'Test item'. APPEND wa_item TO it_item. * 调用BAPI_INCOMINGINVOICE_CREATE CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE' EXPORTING headerdata = wa_head TABLES invoicedata = it_item. * 检查返回值 IF sy-subrc <> 0. MESSAGE 'Failed to create invoice.' TYPE 'E'. ELSE. MESSAGE 'Invoice created successfully.' TYPE 'S'. ENDIF. ``` 在实际使用中,需要根据具体业务需求,调整输入参数数据的内容。同时,还需要注意,BAPI_INCOMINGINVOICE_CREATE可能会抛出多种异常情况,需要对这些异常情况进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值