发票校验BAPI BAPI_INCOMINGINVOICE_CREATE demo

发票校验BAPI BAPI_INCOMINGINVOICE_CREATE demo

LOOP AT lt_mseg.
SELECT SINGLE * FROM ekpo
WHERE ebeln = lt_mseg-ebeln AND ebelp = lt_mseg-ebelp.
SELECT SINGLE waers INTO waers FROM ekko
WHERE ebeln = lt_mseg-ebeln.
IF ekpo-repos = ‘X’.
READ TABLE it_item_invoice WITH KEY po_number = lt_mseg-ebeln
po_item = lt_mseg-ebelp
ref_doc_it = lt_mseg-zeile.
IF sy-subrc = 0.
item_amount = lt_mseg-wrbtr.
it_item_invoice-item_amount = it_item_invoice-item_amount + item_amount. "凭证货币金额
it_item_invoice-quantity = it_item_invoice-quantity + lt_mseg-menge. "数量
MODIFY it_item_invoice INDEX sy-tabix.

                    header_amount = header_amount + item_amount.
                  ELSE.
                    num = num + 1.
                    it_item_invoice-invoice_doc_item = num.  "发票凭证中的凭证项目

                    it_item_invoice-po_number        = lt_mseg-ebeln . "订单号
                    it_item_invoice-po_item          = lt_mseg-ebelp.  "项目编号

                    item_amount = lt_mseg-wrbtr.

                    it_item_invoice-item_amount      = item_amount.    "凭证货币金额
                    it_item_invoice-quantity         = lt_mseg-menge.  "数量
                    it_item_invoice-tax_code         = ekpo-mwskz.    "税码
                    it_item_invoice-po_unit          = ekpo-meins.    "单位
                    it_item_invoice-ref_doc          = lt_mseg-mblnr.
                    it_item_invoice-ref_doc_it       = lt_mseg-zeile.
                    it_item_invoice-ref_doc_year     = lt_mseg-mjahr.
                    " 取税码
                    IF ekpo-mwskz <> ''.
                      REFRESH l_ftaxp.CLEAR l_ftaxp.CLEAR p_kbetr.
                      CALL FUNCTION 'GET_TAX_PERCENTAGE'
                        EXPORTING
                          aland   = 'CN'
                          datab   = sy-datum
                          mwskz   = ekpo-mwskz
                          txjcd   = 'TAXCN'
                        TABLES
                          t_ftaxp = l_ftaxp.
                      LOOP AT l_ftaxp WHERE kschl = 'MWVS'.
                        p_kbetr = l_ftaxp-kbetr / 10.
                      ENDLOOP.
                      header_amount1 = header_amount1 + ( it_item_invoice-item_amount + it_item_invoice-item_amount * p_kbetr / 100 ).
                    ELSE.
                      header_amount1 = header_amount1 + item_amount.
                    ENDIF.
                    APPEND it_item_invoice.
                  ENDIF.
                ENDIF.
              ENDLOOP.

              header_amount = header_amount1.

              SELECT SINGLE waers bukrs
                       INTO (it_header_invoice-currency,it_header_invoice-comp_code)  "货币代码,公司代码
                       FROM ekko WHERE ebeln = l_ebeln .

              IF p_date IS NOT INITIAL.
                it_header_invoice-pstng_date = p_date."过账日期
              ELSE.
                it_header_invoice-pstng_date = v_wadat_ist.
              ENDIF.

              IF p_date IS NOT INITIAL.
                it_header_invoice-doc_date   =  p_date.       "凭证中的凭证日期
              ELSE.
                it_header_invoice-doc_date   =  sy-datum.       "凭证中的凭证日期
              ENDIF.
              it_header_invoice-bline_date    =  it_header_invoice-pstng_date.       "基线日期
              it_header_invoice-ref_doc_no    =  p_vbeln_in.        "参照
              it_header_invoice-header_txt    =  ''.          "抬头文本
              it_header_invoice-gross_amount  =  header_amount. "凭证货币的总发票金额
              it_header_invoice-calc_tax_ind  = 'X'.
              it_header_invoice-invoice_ind    =  'X'.            "记账标识
              it_header_invoice-deliv_posting  = 'S'.


              SET UPDATE TASK LOCAL.
              CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
                EXPORTING
                  headerdata       = it_header_invoice
                IMPORTING
                  invoicedocnumber = invoicedocnumber
                TABLES
                  itemdata         = it_item_invoice
                  return           = it_return_invoice.
              IF   invoicedocnumber  IS NOT INITIAL.
                CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                  EXPORTING
                    wait = 'X'.
                v_message = '采购发票检验成功'.
                v_subrc = 'S'.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值