SAP_ABAP_MM_BAPI清单案例教程——采购发票校验/预制_BAPI_INCOMINGINVOICE_PARK_MIRO

 SAP ABAP 顾问(开发工程师)能力模型_企业数字化建设者的博客-CSDN博客目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提参考ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977

 目标: 掌握SAP MM模块,主要流程相关的BAPI 函数的使用,主要有如下模块:

询价 报价 货源清单 配额安排 采购信息记录 框架协议-合同 框架协议-计划协议 采购订单 采购收货  发票校验 发票过账


一 背景说明

1.1 什么是SAP BAPI.

        BAPI是SAP系统标准函数,比如:采购申请创建函数、采购订单创建函数等等。

1.2 SAP采购模块标准流程

1.2.1 模块导航
 采购信息记录修改 SAP_ABAP_MM_BAPI清单案例教程——采购信息记录_企业数字化建设者的博客-CSDN博客
框架协议-合同创建 SAP_ABAP_MM_BAPI清单案例教程——框架协议-合同_企业数字化建设者的博客-CSDN博客
框架协议-合同修改 SAP_ABAP_MM_BAPI清单案例教程——框架协议-合同_企业数字化建设者的博客-CSDN博客
框架协议-计划协议创建 SAP_ABAP_MM_BAPI清单案例教程——框架协议-计划协议_企业数字化建设者的博客-CSDN博客
采购申请创建 SAP_ABAP_MM_BAPI清单案例教程——采购申请_企业数字化建设者的博客-CSDN博客
采购订单创建 SAP_ABAP_MM_BAPI清单案例教程——采购订单_企业数字化建设者的博客-CSDN博客
采购订单收货创建 SAP_ABAP_MM_BAPI清单案例教程——采购订单收货_企业数字化建设者的博客-CSDN博客
采购发票预制 SAP_ABAP_MM_BAPI清单案例教程——采购发票校验_企业数字化建设者的博客-CSDN博客
采购发票过账 SAP_ABAP_MM_BAPI清单案例教程——采购发票过账_BAPI_INCOMINGINVOICE_POST_MIRO_企业数字化建设者的博客-CSDN博客

1.2.2 BAPI清单
ME_INFORECORD_MAINTAIN  采购信息记录修改
BAPI_CONTRACT_CREATE 框架协议-合同创建
BAPI_CONTRACT_CHANGE 框架协议-合同修改
BAPI_SAG_CREATE 框架协议-计划协议创建
BAPI_PR_CREATE 采购申请创建
BAPI_PO_CREATE1 采购订单创建
BAPI_GOODSMVT_CREATE 采购订单收货创建
BAPI_INCOMINGINVOICE_PARK 采购发票预制
BAPI_INCOMINGINVOICE_POST 采购发票过账

二 代码模板

2.1 采购发票校验代码

2.3.1 创建

2.3.2 修改

2.3.3 删除

采购发票校验,复制代码直接可用

FUNCTION zfm_part.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------

  DATA: ls_headerdata       LIKE bapi_incinv_create_header,
        lt_itemdata         LIKE TABLE OF bapi_incinv_create_item,
        ls_itemdata         LIKE bapi_incinv_create_item,
        lt_return           LIKE TABLE OF bapiret2 WITH HEADER LINE,
        ls_return           TYPE bapiret2,
        lv_invoicedocnumber LIKE bapi_incinv_fld-inv_doc_no,
        lv_year             LIKE bapi_incinv_fld-fisc_year.
  DATA: lt_taxdata LIKE TABLE OF bapi_incinv_create_tax,
        ls_taxdata LIKE bapi_incinv_create_tax.

  DATA: lv_item             TYPE n LENGTH 6.

  DATA:l_msg(255) TYPE c.

  IF  g_flag = 'X'.
    MESSAGE '已预制成功,请勿重复操作!' TYPE 'S' DISPLAY LIKE 'E' .
    RETURN.
  ENDIF.

  IF zsmm011-ye <> '' .
    MESSAGE '余额不为零!' TYPE 'S' DISPLAY LIKE 'E' .
    RETURN.
  ENDIF.

  REFRESH:lt_itemdata,lt_return.
  CLEAR:ls_headerdata,ls_itemdata,ls_return,lv_item,ls_return,lv_invoicedocnumber,l_msg.

*--表头数据
  ls_headerdata-invoice_ind    = 'X'."表示正常订单
  ls_headerdata-comp_code      = zsmm011-gsdm."公司代码
  ls_headerdata-doc_date       = zsmm011-pzrq."凭证中的凭证日期
  ls_headerdata-pstng_date     = zsmm011-gzrq."凭证中的过帐日期
  ls_headerdata-ref_doc_no     = zsmm011-ck.."参照
  ls_headerdata-diff_inv       = zsmm011-gys."供应商
  ls_headerdata-gross_amount   = zsmm011-je."抬头金额
  ls_headerdata-del_costs_taxc = zsmm011-sm."抬头税码
  ls_headerdata-item_text      = zsmm011-wb."文本
  ls_headerdata-bline_date     = zsmm011-gzrq."到期日期计算的起算日期
  ls_headerdata-pmnttrms       = zsmm011-fktj."收付条件代码
  ls_headerdata-currency       = zsmm011-hb."货币码
*  LS_HEADERDATA-PYMT_METH = ZSMM011."付款方式
*  LS_HEADERDATA-PMNT_BLOCK = WA_DATA-ZLSPR."收付冻结码
*  LS_HEADERDATA-ALLOC_NMBR = WA_DATA-ZUONR."分配
*  LS_HEADERDATA-HEADER_TXT = WA_DATA-BKTXT."凭证抬头文本
*  LS_HEADERDATA-TAX_EXCH_RATE = ''."税收汇率

  CLEAR: ls_taxdata.
  ls_taxdata-tax_code   = zsmm011-sm."抬头税码
  ls_taxdata-tax_amount = zsmm011-se."抬头税额
  APPEND ls_taxdata TO lt_taxdata.

*--行项目数据
  LOOP AT gt_screen ASSIGNING FIELD-SYMBOL().
    CLEAR ls_itemdata.
    lv_item = lv_item + 1.
    ls_itemdata-invoice_doc_item = lv_item."发票凭证中的凭证项目
    ls_itemdata-po_number        = -ebeln."采购订单号
    ls_itemdata-po_item          = -ebelp."采购凭证的项目号
    ls_itemdata-ref_doc          = -lfbnr."入库物料凭证号
    ls_itemdata-ref_doc_it       = -lfpos."入库物料凭证项次
    ls_itemdata-ref_doc_year     = -lfgja."入库物料凭证财年
    ls_itemdata-tax_code         = -mwskz."税码
    ls_itemdata-item_amount      = -kbetr3."未税金额
    ls_itemdata-quantity         = -menge3."收退货数量
    ls_itemdata-po_unit          = -meins."单位
    ls_itemdata-item_text        = -xblnr."来料单
    APPEND ls_itemdata TO lt_itemdata.
  ENDLOOP.

  CALL FUNCTION 'BAPI_INCOMINGINVOICE_PARK'
    EXPORTING
      headerdata       = ls_headerdata
    IMPORTING
      invoicedocnumber = lv_invoicedocnumber
      fiscalyear       = lv_year
    TABLES
      itemdata         = lt_itemdata
      taxdata          = lt_taxdata
      return           = lt_return.

  IF sy-subrc = 0 AND lv_invoicedocnumber <> ''.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.


    LOOP AT gt_screen.
      gt_screen-light = '3'.
      gt_screen-re_belnr = lv_invoicedocnumber.
      MODIFY gt_all FROM gt_screen TRANSPORTING light re_belnr WHERE lfgja = gt_screen-lfgja AND lfbnr = gt_screen-lfbnr AND lfpos = gt_screen-lfpos.
    ENDLOOP.

    MESSAGE '凭证预制成功!预制凭证号为:' && lv_invoicedocnumber TYPE 'S'.

    g_flag = 'X'.

  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

    LOOP AT lt_return.
      IF l_msg = ''.
        l_msg = lt_return-message.
      ELSE.
        l_msg = l_msg && ';' && lt_return-message.
      ENDIF.
    ENDLOOP.

    LOOP AT gt_screen.
      gt_screen-light = '1'.
      MODIFY gt_all FROM gt_screen TRANSPORTING light WHERE lfgja = gt_screen-lfgja AND lfbnr = gt_screen-lfbnr AND lfpos = gt_screen-lfpos.
    ENDLOOP.

    MESSAGE '凭证预制失败,原因:' && l_msg TYPE 'S' DISPLAY LIKE 'E'.


  ENDFUNCTION.

三 业务理解

3.1 业务概念

        在SAP MM(Materials Management,物料管理)模块中,采购发票预制(Invoice Preprocessing)是一个重要的过程,其作用包括以下几个方面:

  1. 减少手工工作: 采购发票预制过程旨在自动化和简化发票处理。它减少了手工数据输入和处理的工作量,降低了出错的可能性,提高了工作效率。

  2. 数据匹配: 采购发票预制通常包括对采购订单、交货记录和供应商发票的数据进行匹配。系统会自动比较这些文档中的信息,确保它们一致,从而减少了错误和争议。

  3. 异常处理: 如果在匹配过程中出现异常(例如数量或价格差异),系统可以自动将问题标记为例外情况。这使得异常处理更加高效,因为只需处理少量的例外情况。

  4. 审批流程: 在某些情况下,采购发票预制可以与审批流程集成,以确保发票在付款之前经过适当的审批。这有助于确保合规性和财务控制。

  5. 供应商关系管理: 通过采购发票预制,企业能够更好地维护供应商关系,因为它可以更快速、准确地处理发票并按时付款,提高了供应商满意度。

  6. 财务控制: 该过程有助于企业确保采购成本的准确性,避免了不必要的支出。它还提供了对未付款项的跟踪和管理能力。

  7. 自动记账: 采购发票预制过程还可以与财务会计集成,以自动执行会计凭证的生成和记账。这有助于确保财务准确性和及时性。

  8. 数据分析和报告: 通过采购发票预制,企业可以轻松访问和分析与发票处理相关的数据。这有助于进行成本分析、供应商绩效评估和预测未来采购需求。

四  常用Tcode

4.1 基于Tcode的顺序排列

供应商主数据 物料主数据 货源清单 配额安排 采购信息记录 采购订单 框架协议 采购询价/报价 采购申请 订单收货 发票校验 物料需求计划
BP-供应商主数据 MM01 - 物料主数据新增 ME01 - 维护 MEQ1 - 维护 ME11 - 创建 ME21N - 创建 框架协议-合同: 询价: ME51N - 创建采购申请 MIGO - 货物移动 MIRO - 发票校验 MD01 - 联机
XK01 - 创建 MM02 - 物料主数据修改 ME03 - 显示 MEQ3 - 显示 ME12 - 修改 ME22N - 更改 ME31K - 创建 ME41 - 创建 ME52N - 更改采购申请 MB03 - 显示物料凭证 MD04 - 显示库存/需求状况
XK02 - 更改 MM03 - 物料主数据查询 ME0M - 清单查询 MEQ4 - 更改 ME13 - 查询 ME23N - 显示 ME32K - 更改 ME42 - 更改 ME53N - 显示采购申请 MB51 - 物料凭证清单
XK03 - 显示 MM04 - 物料主数据冻结与解冻 ME04 - 修改记录查询 MEQM - 按物料 (清单显示) ME14 - 修改记录查询 ME29N - 审批 ME33K - 显示 ME43 - 显示 ME54N - 批准采购请求 MMBE - 库存总览
XK04 - 修改 MM50 - 扩充物料视图 ME15 - 删除 ME34K - 维护补充 ME44 - 维护补充 ME5A - 清单查询 MB52 - 现有仓库库存清单
XK05 - 冻结 MM06 - 删除物料标记 ME1L - 清单查询 ME35K - 审批 ME45 - 审批
XK06 - 删除标记 MM60 - 物料清单 框架协议-计划协议: 报价:
XK07 - 科目组改变 MM17 - 成批维护 ME31L - 已知供应商 ME47 - 维护
ME37 - 库存传送计划协议 ME48 - 显示
ME32L - 更改 ME49 - 价格比较
ME33L - 显示
ME34L - 维护补充
ME35L - 审批

鸣谢:感谢查阅,请多多指教,有用请收藏、点赞哦 ! 

你可能感兴趣的:(Abap编程,经验分享,ABAP,SAP,MM,发票预制)