通过BAPI:BAPI_INCOMINGINVOICE_CREATE创建无采购订单的发票及过账
2024-12-26 15:19 覆盆子 阅读(166) 评论(0) 编辑 收藏 举报本次是计划通过MIRO对应BAPI:BAPI_INCOMINGINVOICE_CREATE来创建无采购订单的发票并对其进行过账
开发中遇到一些参数数据错误导致报错的问题,记录如下
需要注意的是,抬头的汇总金额是需要对PO,物料及总账各自的行项目金额进行汇总所得到的金额,如果有尾差,就需要处理不为0时的税率问题
如下代码主要记录了赋值字段,仅供参考
DATA: ls_headerdata TYPE bapi_incinv_create_header,
lt_itemdata TYPE TABLE OF bapi_incinv_create_item,
ls_itemdata TYPE bapi_incinv_create_item,
lt_taxdata TYPE TABLE OF bapi_incinv_create_tax,
ls_taxdata TYPE bapi_incinv_create_tax,
ls_account TYPE bapi_incinv_create_account,
lt_account TYPE TABLE OF bapi_incinv_create_account,
ls_glaccount TYPE bapi_incinv_create_gl_account,
lt_glaccount TYPE TABLE OF bapi_incinv_create_gl_account,
ls_material TYPE bapi_incinv_create_material,
lt_material TYPE TABLE OF bapi_incinv_create_material,
lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.
DATA: ls_tab LIKE gs_tab,
lv_belnr TYPE bkpf-belnr,
lv_awkey TYPE bkpf-awkey,
lv_number TYPE bapi_incinv_fld-inv_doc_no,
lv_mwskz_mrm TYPE mwskz_mrm VALUE 'J0'.
CHECK gt_tab IS NOT INITIAL.
READ TABLE gt_tab INTO ls_tab INDEX 1.
ls_headerdata-invoice_ind = 'X' . "业务处理类别
ls_headerdata-doc_type = 'RE' . "单据类型(RE表示采购订单)
* ls_headerdata-ref_doc_no = ''. "参照
ls_headerdata-diff_inv = ls_tab-lifnr ."出票方
ls_headerdata-doc_date = ls_tab-budat ."凭证日期
ls_headerdata-comp_code = ls_tab-bukrs ."公司代码
ls_headerdata-pstng_date = ls_tab-budat ."过账日期
ls_headerdata-currency = ls_tab-waers ."币种
* ls_headerdata-calc_tax_ind = 'X'. "自动计算税额
* ls_headerdata-pmnttrms = 'K059' . "付款条件代码
ls_headerdata-bline_date = ls_tab-budat . "发票日期
* ls_headerdata-item_text = ''. "项目文本
ls_headerdata-del_costs_taxc = lv_mwskz_mrm.
LOOP AT gt_tab INTO ls_tab .
CLEAR: ls_material,ls_itemdata ,ls_taxdata,ls_account,ls_glaccount .
lv_ebelp = lv_ebelp + 10 .
IF ls_tab-shkzg = 'H'.
ls_headerdata-gross_amount = ls_headerdata-gross_amount - ls_tab-wrbtr .
ELSEIF ls_tab-shkzg = 'S'.
ls_headerdata-gross_amount = ls_headerdata-gross_amount + ls_tab-wrbtr .
ENDIF.
ls_material-invoice_doc_item = lv_ebelp . "发票行项目号
ls_material-material = ls_tab-matnr. "物料编号
ls_material-db_cr_ind = ls_tab-shkzg. "物料借贷
ls_material-item_amount = ls_tab-wrbtr. "金额
ls_material-quantity = ls_tab-menge. "数量
ls_material-tax_code = lv_mwskz_mrm.
ls_material-base_uom = ls_tab-meins. "单位
ls_material-val_area = ls_tab-werks. "工厂
APPEND ls_material TO lt_material.
* ls_itemdata-invoice_doc_item = lv_ebelp . "发票行项目号
* ls_itemdata-po_number = ls_tab-ebeln . "采购订单号
* ls_itemdata-material = ls_tab-matnr. "物料编号
** ls_itemdata-item_amount = <fs_vbrp2>-netwr .
* ls_itemdata-tax_code = LV_MWSKZ_MRM . "
* ls_itemdata-quantity = ls_tab-menge .
* ls_itemdata-po_unit = ls_tab-meins .