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博客
采购发票付款SAP_ABAP_FI_BAPI清单案例教程——采购付款/销售收款_BAPI_ACC_DOCUMENT_POST_F-02-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采购发票过账
BAPI_ACC_DOCUMENT_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 - 审批

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry谈企业数字化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值