BAPI:BAPI_INCOMINGINVOICE_PARK (TCODE:MIR7 – 供應商發票預製)

來源:互聯網
上載者:User

*&---------------------------------------------------------------------*
*&      Form  FRM_INCOMINGINVOICE_PARK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LT_POITEM  text
*      -->P_LT_BAITEM  text
*      -->P_LT_TAITEM  text
*      -->P_LT_MSG  text
*      -->P_LS_HEAD  text
*      <--P_LV_EIND  text
*----------------------------------------------------------------------*
FORM frm_incominginvoice_park  TABLES   tp_poitem STRUCTURE zrmxmms013
                                        tp_baitem STRUCTURE zrmxmms014
                                        tp_taitem STRUCTURE zrmxmms015
                                        tp_msg STRUCTURE zifsret01
                               USING    sp_head LIKE zrmxmms012
                                        sp_ifdataout LIKE zifrmx_dataout_007p01
                               CHANGING vp_eind.

 

  DATA: lt_poitem     TYPE zifrmx_datain_007p01-po_item,
        ls_poitem     TYPE LINE OF zifrmx_datain_007p01-po_item,
        lt_baitem     TYPE zifrmx_datain_007p01-ba_item,
        ls_baitem     TYPE LINE OF zifrmx_datain_007p01-ba_item,
        lt_taitem     TYPE zifrmx_datain_007p01-ta_item,
        ls_taitem     TYPE LINE OF zifrmx_datain_007p01-ta_item,
        ls_msg        TYPE zifsret01,

        ls_headerdata       LIKE bapi_incinv_create_header,
        lt_itemdata         LIKE TABLE OF bapi_incinv_create_item,
        ls_itemdata         LIKE bapi_incinv_create_item,
        lt_materialdata     LIKE TABLE OF bapi_incinv_create_material,
        ls_materialdata     LIKE bapi_incinv_create_material,
        lt_taxdata          LIKE TABLE OF bapi_incinv_create_tax,
        ls_taxdata          LIKE bapi_incinv_create_tax,
        lt_return           LIKE TABLE OF bapiret2,
        ls_return           LIKE bapiret2,
        lv_invoicedocnumber LIKE bapi_incinv_fld-inv_doc_no,
        lv_fiscalyear       LIKE bapi_incinv_fld-fisc_year.

*1/3 invoice_ind='X' db_cr_ind='S' (抬頭),  2/4 invoice_ind='' db_cr_ind='H'  (外部物料相關項目)
*1/2 de_cre_ind =''   ,  3/4 de_cre_ind='X'   (po採購訂單相關項目)

* BAPI賦值
  ls_headerdata-invoice_ind  = sp_head-xrech.    "發票標誌
  ls_headerdata-doc_type     = sp_head-blart.
  ls_headerdata-doc_date     = sp_head-bldat.
  ls_headerdata-pstng_date   = sp_head-budat.
  ls_headerdata-bline_date   = sp_head-zfbdt.    "基準日期/付款計算的起始日期
  ls_headerdata-comp_code    = sp_head-bukrs.
  ls_headerdata-currency     = sp_head-waers.
  ls_headerdata-gross_amount = sp_head-rmwwr.    "總金額
  ls_headerdata-del_costs    = sp_head-beznk.    "未計劃的交貨費
  ls_headerdata-pmnttrms     = sp_head-zterm.    "付款條件
  ls_headerdata-alloc_nmbr   = sp_head-zuonr.    "分配編號/外部發票號碼
  ls_headerdata-diff_inv     = sp_head-lifnr.    "出票方/供應商
  ls_headerdata-ref_doc_no   = sp_head-xblnr.
  ls_headerdata-header_txt   = sp_head-bktxt.
  ls_headerdata-item_text    = sp_head-sgtxt.

  LOOP AT tp_poitem INTO ls_poitem.
    ls_itemdata-invoice_doc_item = ls_poitem-buzei.   "發票行項目號
    ls_itemdata-po_number        = ls_poitem-ebeln.
    ls_itemdata-po_item          = ls_poitem-ebelp.
    ls_itemdata-ref_doc          = ls_poitem-lfbnr.
    ls_itemdata-ref_doc_year     = ls_poitem-lfgja.
    ls_itemdata-ref_doc_it       = ls_poitem-lfpos.
    ls_itemdata-item_amount      = ls_poitem-wrbtr.
    ls_itemdata-quantity         = ls_poitem-menge.
    ls_itemdata-po_unit          = ls_poitem-meins.
    ls_itemdata-tax_code         = ls_poitem-mwskz.
    ls_itemdata-de_cre_ind       = ls_poitem-tbtkz.   "標識:後續借/貸
    ls_itemdata-cond_type        = ls_poitem-kschl.   "條件類型
    ls_itemdata-freight_ven      = ls_poitem-lifnr.   "供應商或債權人的帳號
    APPEND ls_itemdata TO lt_itemdata.
    CLEAR: ls_itemdata.
  ENDLOOP.

  LOOP AT tp_baitem INTO ls_baitem.
    ls_materialdata-invoice_doc_item = ls_baitem-buzei.
    ls_materialdata-material         = ls_baitem-matnr.
    ls_materialdata-val_area         = ls_baitem-bwkey.    "評估範圍/工廠
    ls_materialdata-valuation_type   = ls_baitem-bwtar.    "評估類型
    ls_materialdata-db_cr_ind        = ls_baitem-shkzg.    "借方/貸方標識
    ls_materialdata-item_amount      = ls_baitem-wrbtr.
    ls_materialdata-quantity         = ls_baitem-menge.
    ls_materialdata-base_uom         = ls_baitem-meins.
    ls_materialdata-tax_code         = ls_baitem-mwskz.
    APPEND ls_materialdata TO lt_materialdata.
    CLEAR: ls_materialdata.
  ENDLOOP.

  LOOP AT tp_taitem INTO ls_taitem.
    ls_taxdata-tax_code   = ls_taitem-mwskz.
    ls_taxdata-tax_amount = ls_taitem-wrbtr.
    APPEND ls_taxdata TO lt_taxdata.
    CLEAR: ls_taxdata.
  ENDLOOP.

  CALL FUNCTION 'BAPI_INCOMINGINVOICE_PARK'
    EXPORTING
      headerdata                = ls_headerdata
*     ADDRESSDATA               =
    IMPORTING
      invoicedocnumber          = lv_invoicedocnumber
      fiscalyear                = lv_fiscalyear
    TABLES
      itemdata                  = lt_itemdata
*     ACCOUNTINGDATA            =
*     GLACCOUNTDATA             =
      materialdata              = lt_materialdata
      taxdata                   = lt_taxdata
*     WITHTAXDATA               =
*     VENDORITEMSPLITDATA       =
      return                    = lt_return
            .

  IF lv_invoicedocnumber IS INITIAL OR lv_fiscalyear IS INITIAL.
    vp_eind = 'X'.
  ENDIF.

  IF vp_eind = 'X'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

    LOOP AT lt_return INTO ls_return.
      ls_msg-class   = 'BUS'.
      ls_msg-msgtyp  = ls_return-type.
      ls_msg-msgno   = ls_return-number.
      ls_msg-msgtxt  = ls_return-message.
      APPEND ls_msg TO tp_msg.
      CLEAR ls_msg.
    ENDLOOP.

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

    sp_ifdataout-eblnr = lv_invoicedocnumber.
    sp_ifdataout-gjahr = lv_fiscalyear.

  ENDIF.

ENDFORM.                    " FRM_INCOMINGINVOICE_PARK

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.