SAP_ABAP_MM_BAPI清单案例教程——采购申请_BAPI_PR_CREATE_ME51N

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清单案例教程——采购发票校验_企业数字化建设者的博客-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 采购发票过账

二 代码模板

1.3.1 创建

1.3.2 修改

1.3.3 删除

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

  DATA: prheader       TYPE bapimereqheader,
        prheaderx      TYPE bapimereqheaderx,
        pritem         TYPE TABLE OF bapimereqitemimp WITH HEADER LINE,
        pritemx        TYPE TABLE OF bapimereqitemx WITH HEADER LINE,
        praccount      TYPE TABLE OF bapimereqaccount WITH HEADER LINE,
        praccountx     TYPE TABLE OF bapimereqaccountx WITH HEADER LINE,
        return         TYPE TABLE OF bapiret2 WITH HEADER LINE,
        lt_extensionin TYPE TABLE OF bapiparex WITH HEADER LINE,

        ls_item_ext    LIKE bapi_te_mereqitem,
        ls_item_extx   LIKE bapi_te_mereqitemx.

  DATA:lv_banfn TYPE eban-banfn.

  "抬头
  prheader-pr_type      = 'NB'. "订单类型(采购)
  "行项目
  DATA(lv_item) = 10.
  pritem-preq_item      = lv_item.
  pritem-mrp_ctrler     = '001'. "物料需求计划控制员 dispo
  pritem-pur_group      = '100'. "采购组 EKGRP
  pritem-purch_org      = '2010'."采购组织
  pritem-plant          = '2012'."工厂 WERKS
  pritem-quantity       = 1.     "采购申请数量 MENGE
  pritem-unit           = 'TAI'. "采购申请计量单位 MEINS
  pritem-del_datcat_ext = 'D'.   "交货日的类别 LPEIN
  pritem-des_vendor     = '0000100009'. "所需供应商
  "pritem-purch_org      = '0000100009'. "固定供应商
  "pritem-material_long  = '3202007000014'." 40位物料编号
  pritem-material       = '000003202007000014'." 40位物料编号
  pritem-preq_price     = '2469'." BAPIs 的货币金额(带有 9 个小数位) PREIS
  pritem-price_unit     = '1'." 价格单位
  "pritem-acctasscat    = 'K'." 科目分配类别
  pritem-deliv_date     = sy-datum." 项目交货日期
  "pritem-preq_name      = '申请人'.
  APPEND pritem.

  prheaderx-pr_type      = 'X'.
  pritemx-preq_item      = lv_item.
  pritemx-mrp_ctrler     = 'X'."物料需求计划控制员
  pritemx-pur_group      = 'X'." 采购组
  pritemx-purch_org      = 'X'." 采购组织
  pritemx-plant          = 'X'." 工厂
  pritemx-quantity       = 'X'." 采购申请数量
  pritemx-unit           = 'X'." 采购申请计量单位
  pritemx-del_datcat_ext = 'X'." 交货日的类别
  pritemx-deliv_date     = 'X'." 项目交货日期
  pritemx-des_vendor     = 'X'." 所需供应商
 "pritemx-purch_org      = 'X'. " 固定供应商
 "pritemx-material_long  = 'X'." 40位物料编号
  pritemx-material       = 'X'." 40位物料编号
  pritemx-preq_price     = 'X'." BAPIs 的货币金额(带有 9 个小数位)
  pritemx-price_unit     = 'X'." 价格单位
  pritemx-acctasscat     = 'X'." 科目分配类别
  "pritemx-preq_name      = 'X'.
  APPEND pritemx.

  praccount-preq_item   = lv_item."采购申请的项目编号
*  praccount-serial_no   = '01' .  "科目分配的序号
  praccount-co_area     = '1000'. "控制范围
  "praccount-gl_account  = ''. "
  "praccount-costcenter  = ''. "
  praccount-cmmt_item   = '1403030000'."承诺项目
  praccount-res_item    = '0'.         "资金储备:凭证项
  APPEND praccount.

  praccountx-preq_item   = lv_item.
*  praccountx-serial_no   = '01'.
  praccountx-co_area     = 'X' .
  "praccountx-gl_account  = 'X'.
  "praccountx-costcenter  = 'X'.
  praccountx-cmmt_item   = 'X'.
  praccountx-preq_itemx  = 'X'.
  praccountx-res_item    = 'X'.
  APPEND praccountx.


  "*------------------增强字段---------------*
  ls_item_ext-preq_item   = lv_item.
  ls_item_extx-preq_item  = lv_item.

  ls_item_ext-zuser       = 'TEST'.
  ls_item_extx-zuser      = 'X'.

  lt_extensionin-structure = 'BAPI_TE_MEREQITEM'.
  lt_extensionin-valuepart1 = ls_item_ext.
  APPEND lt_extensionin.

  lt_extensionin-structure = 'BAPI_TE_MEREQITEMX'.
  lt_extensionin-valuepart1 = ls_item_extx.
  APPEND lt_extensionin.

  DATA:zflag(1) TYPE c VALUE 'X'.
  EXPORT zflag TO MEMORY ID 'ZFLAG'."标记
  "data:zflag type char1.
  "IMPORT zflag FROM MEMORY ID 'ZFLAG'.

  CALL FUNCTION 'BAPI_PR_CREATE'
    EXPORTING
      prheader    = prheader
      prheaderx   = prheaderx
    IMPORTING
      number      = lv_banfn
    TABLES
      return      = return
      pritem      = pritem
      pritemx     = pritemx
      praccount   = praccount
      praccountx  = praccountx
      extensionin = lt_extensionin.


  READ TABLE return TRANSPORTING NO FIELDS WITH  KEY type = 'E'.
  IF sy-subrc = '0'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.

    IF lv_banfn IS NOT INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    ENDIF.

  ENDIF.

  "清除本次调BAPI的内表
  CLEAR: lv_item,lt_extensionin[],lt_extensionin,
         prheader,prheaderx,return,return[],pritem,pritem[],
         pritemx,pritemx[],praccount,praccount[],praccountx,praccountx[].


ENDFUNCTION.

三 业务理解

3.1 概念理解

        采购申请在SAP MM模块中的作用是管理和控制企业内部的采购需求,确保采购活动与企业的战略和预算一致,并为采购流程提供清晰的起点。采购申请有助于提高采购效率、减少浪费、优化库存和确保采购的合规性。同时,它也为企业提供了对采购活动的跟踪、审计和分析的能力,以支持更好的业务决策。

  1. 需求识别: 采购申请是企业内部对物料或服务需求的表达。员工或部门通常通过采购申请来提出对特定物料或服务的需求,无论是为了生产、维护、办公用品、设备或其他目的。这有助于确保企业只采购所需的物料,从而减少库存成本和浪费。

  2. 内部批准流程: 采购申请通常需要内部批准流程。相关部门、主管或管理层会审查和批准采购申请,以确保采购需求与企业的战略和预算一致。

  3. 供应商选择: 采购申请提供了所需物料或服务的详细信息,包括数量、规格、质量要求等。这些信息有助于采购部门或供应链团队选择合适的供应商。

  4. 采购订单生成: 一旦采购申请经过内部批准并选择了供应商,可以根据采购申请自动生成采购订单。采购订单是向供应商正式提出订购请求的文档。

  5. 库存控制: 采购申请也有助于企业更好地控制库存。它确保物料只在确实需要时才会被采购,从而减少了不必要的库存积压和库存成本。

  6. 采购跟踪和审计: 采购申请和相关的采购订单、交付和发票等文档可以用于跟踪采购活动,以及进行财务审计和供应链分析。这有助于企业确保采购流程的合规性和透明度。

  7. 采购成本分析: 采购申请的信息用于分析采购成本,包括了解不同部门或项目的采购开支以及采购趋势。

四  常用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,MM,BAPI,采购申请)