ABAP BAPI_INCOMINGINVOICE_CREATE dump

在执行BAPI_INCOMINGINVOICE_CREATE 之后,正常生成了发票号,但是系统会dump

数据会回滚

dump如下

查阅后得知相关note:1894901

原因是在填写税行的时候,输入了多行,将数据合并为一行后即可

代码如下:


  ls_headerdata-invoice_ind  = 'X'.
  ls_headerdata-doc_type     = 'RE'.
  ls_headerdata-doc_date     = sy-datum.
  ls_headerdata-pstng_date   = sy-datum.
  ls_headerdata-bline_date   = sy-datum.
  ls_headerdata-comp_code    = 'CV01'.
  ls_headerdata-currency     = 'CNY'.
  ls_headerdata-del_costs_taxc     = 'J2'.


  SELECT  * INTO TABLE lt_ekpo
  FROM ekpo
  WHERE ebeln = cs_head-ebeln_cv01.
  IF sy-subrc = 0.
    LOOP AT lt_ekpo INTO ls_ekpo.
      CLEAR:lv_tax_amount.

      lv_item = lv_item + 10.   "发票行项目号

      PERFORM frm_get_tax_by_net_amount USING 'CV01' 'J2' 'CNY' ls_ekpo-netwr
                                        CHANGING lv_tax_amount.


      ls_headerdata-gross_amount = ls_headerdata-gross_amount + ls_ekpo-netwr + lv_tax_amount.

      lw_itemdata-invoice_doc_item = lv_item.
      lw_itemdata-po_number        = ls_ekpo-ebeln.
      lw_itemdata-po_item          = ls_ekpo-ebelp.
      lw_itemdata-po_unit          = ls_ekpo-meins.
      lw_itemdata-quantity         = ls_ekpo-menge.
      lw_itemdata-item_amount      = ls_ekpo-netwr.

      lw_itemdata-ref_doc          = cs_head-mblnr_cv01.
      lw_itemdata-ref_doc_year     = cs_head-mjahr_cv01.
      lw_itemdata-ref_doc_it       = ls_ekpo-ebelp+0(4).


      APPEND lw_itemdata TO lt_itemdata[].


* fill tax data
      lw_taxdata-tax_code          = 'J2'.
      lw_taxdata-tax_amount        = lw_taxdata-tax_amount + lv_tax_amount.
      lw_taxdata-tax_base_amount   = lw_taxdata-tax_base_amount + ls_ekpo-netwr.

    ENDLOOP.

    APPEND lw_taxdata TO lt_taxdata.
  ENDIF.









CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
    EXPORTING
      headerdata       = ls_headerdata
    IMPORTING
      invoicedocnumber = lv_invoicedocnumber
      fiscalyear       = lv_fiscalyear
    TABLES
      itemdata         = lt_itemdata[]
      taxdata          = lt_taxdata[]
      return           = lt_return[].

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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可能会抛出多种异常情况,需要对这些异常情况进行处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值