正常我们都会在供应商主档和信息记录主档中勾选“基于收货的发票校验”选项,意味着做采购发票校验的时候需要基于收货凭证。

      LS_ITEM-REF_DOC = LT_ZMSEG-MBLNR. 
      LS_ITEM-REF_DOC_YEAR = LT_ZMSEG-MJAHR.
      LS_ITEM-REF_DOC_IT = LT_ZMSEG-ZEILE.

下面分享一个简单的Demo:

1、数据准备

  DATA: LS_HEADER TYPE BAPI_INCINV_CREATE_HEADER.DATA: LT_ITEMS TYPE TABLE OF BAPI_INCINV_CREATE_ITEM.PERFORM FILL_VALUES TABLES LT_ITEMSUSING LS_HEADER.PERFORM RUN_TO_CREATE_IV TABLES LT_ITEMSUSING LS_HEADER.

2、数据填充

*&---------------------------------------------------------------------*
*&      Form  fill_values
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PT_ITEMS   text
*      -->PS_HEADER  text
*----------------------------------------------------------------------*
FORM FILL_VALUES TABLES PT_ITEMS STRUCTURE BAPI_INCINV_CREATE_ITEMUSING PS_HEADER TYPE BAPI_INCINV_CREATE_HEADER.DATA: LS_ITEM LIKE LINE OF PT_ITEMS[].FIELD-SYMBOLS: <LS_ITEM> LIKE LINE OF PT_ITEMS[].DATA: LS_DATA2 LIKE LINE OF GT_DATA2.DATA: LV_AMOUNT(40).DATA: LS_EKPO TYPE EKPO.DATA: LT_ZMSEG LIKE TABLE OF ZMSEG WITH HEADER LINE.DATA: LT_ZMSEG1 LIKE TABLE OF ZMSEG WITH HEADER LINE.DATA: LV_ITEM TYPE N LENGTH 6.DATA: LV_NETWR TYPE ZMJMIMS0023-NETWR."Fill Header dataREAD TABLE GT_DATA2 INTO LS_DATA2 INDEX 1.SELECT SINGLE RETPOFROM EKPOINTO LS_EKPO-RETPOWHERE EBELN = LS_DATA2-EBELNAND EBELP = LS_DATA2-EBELP.IF LS_EKPO-RETPO = 'X'.PS_HEADER-INVOICE_IND = SPACE.ELSE.PS_HEADER-INVOICE_IND = 'X'.ENDIF.PS_HEADER-DOC_TYPE = 'RE'.PS_HEADER-DOC_DATE = ZMCAIMS0021-COMDT.PS_HEADER-PSTNG_DATE = ZMCAIMS0021-BUDAT.PS_HEADER-COMP_CODE = ZMCAIMS0021-BUKRS.PS_HEADER-CURRENCY = ZMCAIMS0021-WAERS.CLEAR: LV_AMOUNT.WRITE ZMCAIMS0021-RMWWR TO LV_AMOUNT CURRENCY ZMCAIMS0021-WAERS.REPLACE ALL OCCURRENCES OF ',' IN LV_AMOUNT WITH ''.PS_HEADER-GROSS_AMOUNT = LV_AMOUNT.PS_HEADER-PMNTTRMS = ZMCAIMS0021-ZTERM.PS_HEADER-BLINE_DATE = ZMCAIMS0021-BUDAT.PS_HEADER-PERSON_EXT = SY-UNAME.PS_HEADER-HEADER_TXT = ZMCAIMS0021-BLENO.PS_HEADER-REF_DOC_NO = ZMCAIMS0021-COMIV.CLEAR :GV_IV,LV_ITEM.SORT GT_DATA2.LOOP AT GT_DATA2 INTO LS_DATA2.REFRESH LT_ZMSEG[].CLEAR : LV_MENGE_TOL,LV_AMOUNT_TOL."合计校验SELECT * FROM ZMSEGINTO TABLE LT_ZMSEGWHERE EBELN = LS_DATA2-EBELNAND EBELP = LS_DATA2-EBELPAND BWART IN ('101','102','161','162')."剔除冲销项目LT_ZMSEG1[] = LT_ZMSEG[].LOOP AT LT_ZMSEG1 WHERE SMBLN IS NOT INITIAL.DELETE LT_ZMSEG WHERE MBLNR = LT_ZMSEG1-SMBLNAND ZEILE = LT_ZMSEG1-SMBLP.ENDLOOP.DELETE LT_ZMSEG WHERE SMBLN IS NOT INITIAL.LOOP AT LT_ZMSEG.CLEAR: LS_ITEM.CHECK LT_ZMSEG-MENGE > 0.LV_ITEM = LV_ITEM + 1.LS_ITEM-INVOICE_DOC_ITEM = LV_ITEM.LS_ITEM-PO_NUMBER = LS_DATA2-EBELN.LS_ITEM-PO_ITEM = LS_DATA2-EBELP.LS_ITEM-REF_DOC = LT_ZMSEG-MBLNR."参照收货凭证LS_ITEM-REF_DOC_YEAR = LT_ZMSEG-MJAHR.LS_ITEM-REF_DOC_IT = LT_ZMSEG-ZEILE.LS_ITEM-TAX_CODE = 'J0'.LS_ITEM-ITEM_TEXT = PS_HEADER-ITEM_TEXT.LS_ITEM-QUANTITY = LT_ZMSEG-MENGE.LS_ITEM-PO_UNIT = LT_ZMSEG-MEINS.CLEAR: LV_NETWR,LV_AMOUNT.LV_NETWR = LT_ZMSEG-MENGE * LS_DATA2-NETPR.WRITE LV_NETWR TO LV_AMOUNT CURRENCY ZMCAIMS0021-WAERS.REPLACE ALL OCCURRENCES OF ',' IN LV_AMOUNT WITH ''.LS_ITEM-ITEM_AMOUNT = LV_AMOUNT.APPEND LS_ITEM TO PT_ITEMS.ENDLOOP.ENDLOOP.ENDFORM.                    "fill_values

3、Bapi调用

*&---------------------------------------------------------------------*
*&      Form  run_to_create_iv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PT_ITEMS   text
*      -->PS_HEADER  text
*----------------------------------------------------------------------*
FORM RUN_TO_CREATE_IV TABLES PT_ITEMS STRUCTURE BAPI_INCINV_CREATE_ITEMUSING PS_HEADER TYPE BAPI_INCINV_CREATE_HEADER.DATA: LT_RET TYPE TABLE OF BAPIRET2.DATA: LV_INVNO TYPE BAPI_INCINV_FLD-INV_DOC_NO,LV_FYEAR TYPE BAPI_INCINV_FLD-FISC_YEAR.DATA: LS_BKPF TYPE BKPF.CLEAR: LT_RET.CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'EXPORTINGHEADERDATA          = PS_HEADER
*     ADDRESSDATA         =IMPORTINGINVOICEDOCNUMBER    = LV_INVNOFISCALYEAR          = LV_FYEARTABLESITEMDATA            = PT_ITEMS[]
*     ACCOUNTINGDATA      =
*     GLACCOUNTDATA       =
*     MATERIALDATA        =
*     TAXDATA             = lt_taxes
*     WITHTAXDATA         =
*     VENDORITEMSPLITDATA =RETURN              = LT_RET.PERFORM CHECK_BAPI_ERROR USING LT_RET.IF GV_BAPI_ERROR <> 'X'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT          = 'X'
*     IMPORTING
*       RETURN        =.MESSAGE S398(00) WITH 'Invoice document(' ZMCAIMS0021-INVNO ') created'.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
*     IMPORTING
*       RETURN        =.PERFORM SHOW_MESSAGE USING LT_RET.ENDIF.
ENDFORM.                    " run_to_create_iv*&---------------------------------------------------------------------*
*&      Form  show_message
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PT_MSG     text
*----------------------------------------------------------------------*
FORM SHOW_MESSAGE USING PT_MSG TYPE BAPIRET2_T.PERFORM CHECK_BAPI_ERROR USING PT_MSG[].IF GV_BAPI_ERROR = 'X'."오류 메시지가 발생했을 경우CALL FUNCTION 'FB_MESSAGES_DISPLAY_POPUP'EXPORTING
*       IT_SMESG        =
*       ID_SMESG_ZEILE  =IT_RETURN       = PT_MSG[]
*       ID_SEND_IF_ONE  =EXCEPTIONSNO_MESSAGES     = 1POPUP_CANCELLED = 2OTHERS          = 3.ENDIF.
ENDFORM.                    " show_message*&---------------------------------------------------------------------*
*&      Form  check_bapi_error
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PT_BAPI_MSG  text
*----------------------------------------------------------------------*
FORM CHECK_BAPI_ERROR USING PT_BAPI_MSG TYPE BAPIRET2_T.CLEAR: GV_BAPI_ERROR.READ TABLE PT_BAPI_MSG TRANSPORTING NO FIELDS WITH KEY TYPE = 'E'.IF SY-SUBRC = 0.GV_BAPI_ERROR = 'X'.ENDIF.READ TABLE PT_BAPI_MSG TRANSPORTING NO FIELDS WITH KEY TYPE = 'A'.IF SY-SUBRC = 0.GV_BAPI_ERROR = 'X'.ENDIF.
ENDFORM.                    " check_bapi_error

【MM】基于收货的发票校验Bapi Demo相关推荐

  1. 【MM】 基于收货的发票校验

    基于收货的发票校验 1.信息记录中采购组织数据视图下面的"基于收货的发票校验". 比如PO数量为100 PC,进行三次收货,分别是10 PC.20 PC和70 PC. 如果勾选了& ...

  2. 基于收货的发票校验(功能)

    启用:采购订单先收货,再发票校验,发票校验带出收货的数量 不启用:发票校验和采购订单收货不分先后,比如订单需要预付款之类的. 当然还是要按实际业务管控的需要进行启用或不启用. 一.供应商层级 在供应商 ...

  3. SAP采购中基于收货的发票校验应用逻辑及控制

    在采购订单中中,有一个基于收货的发票校验选项,采购需要根据业务实际情况来进行选择.该功能是采购中具有重要意义的一项定义.决定财务在做发票校验及结算采购费用时,是否要依据收货情况.比如,采购订单中需要采 ...

  4. SAP_基于收货的发票校验逻辑

    1.用途 在采购订单中中,有一个基于收货的发票校验选项,采购需要根据业务实际情况来进行选择.该功能是采购中具有重要意义的一项定义.决定财务在做发票校验及结算采购费用时,是否要依据收货情况.比如,采购订 ...

  5. SAP中基于收货的发票校验配置过程

    基于实际收货的业务控制需求,在系统中需要将采购订单中的基于收货的发票校验设为必需输入项.记录其配置过程如下: 1.进入后台菜单SPRO--SAP参考IMG 2.找到凭证类型和字段选择关键值的对应关系. ...

  6. SAP 基于收货的发票校验 GR-Based IV

    1.不勾选GR-based IV(基于收货的发票验证) ME21N创建采购订单时不勾选GR-based IV: MIGO先做多笔收货,在做发票:       MIRO发票验证: 由上可知,(1).若不 ...

  7. SAP ERP业务优化之基于收货的发票验证

    http://cio.it168.com/a2012/0301/1319/000001319145.shtml 在ERP项目的过程中,项目上线只是企业信息化管理的一个起点.简单的说,ERP项目就像逆水 ...

  8. SAP 收货与发票校验税码

    1.MIGO.MIRO发票验证时税码确定: (1).若PO中维护了税码,则在MIRO中的行项目会自动带入PO中的税码: MIRO自动带入PO税码: (2).若在MIRO中的行项目有多个,且税码不一样, ...

  9. SAP中采购收退货与发票校验对应关系解读

    在SAP采购及发票校验中业务过程中,需要明确收退货关系.才能正确处理发票校验,避免混乱.这取决于采购端操作收退货业务的规范性.通常情况下,实际业务情形需要在系统中如实体现.比如某笔采购订单己收货100 ...

最新文章

  1. Linux下DNS轮询与Squid反向代理结合
  2. grub shell 错误_GRUB启动故障排除和内核编译
  3. html lt table 设置数据,vue_+_element_ui_动态添加table数据
  4. 拆分一个字符串并把每个字符单独输出
  5. 说下readyState属性是干嘛的,都有哪几个状态
  6. neo4j cypher_Neo4j:使用Cypher生成实时建议
  7. MySQL - cast()函数
  8. 前端笔记-thymeleaf获取及回显select数据(combox)
  9. 栈应用:后缀表达式求值
  10. ES6的Reflect对象
  11. ext2删除文件恢复笔记
  12. IOS 10 微信 ajax readystate=0 status=0 解决方法
  13. 大数据分析的四大趋势有哪些
  14. java聊天室设计_JAVA网络聊天室的设计与实现
  15. 第一篇数模论文——估计出租车的总数
  16. EH集团筹集逾500万瑞士法郎,用于推进其零排放燃料电池技术
  17. 关于前辈RPC学习的经验分享:我的DedSec RPC
  18. SSH2.0编程 ssh协议过程实现(转)
  19. Delphi中实现多线程同步查询
  20. 2021年全球与中国农用拖拉机变速器行业市场规模及发展前景分析

热门文章

  1. C++ 11 笔记 (四) : std::bind
  2. 【DEMO 0074】进程创建与消亡
  3. 根据ip地址获得天气预报
  4. TaskIcon 系统任务栏图标
  5. 为什么产品经理这个行业装逼的人这么多?
  6. 产品策划七:App界面交互设计规范
  7. UGC产品的氛围和秩序
  8. PMCAFF微课堂|猎豹清理大师亿万用户量产品背后的紫牛方法论,傅盛不会说的秘密...
  9. 阿里数据产品经理工作(总结篇):数据PD,做牛做马
  10. 【分析】腾讯年终总结:微信用户一天到晚都在干啥