SAP_ABAP_MM_BAPI清单案例教程——框架协议-计划协议_BAPI_SAG_CREATE_ME31L

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_sag.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
  DATA: ls_header              TYPE bapimeoutheader,
        ls_headerx             TYPE bapimeoutheaderx,

        ls_item                TYPE bapimeoutitem,
        lt_item                TYPE bapimeout_t_item,
        ls_itemx               TYPE bapimeoutitemx,
        lt_itemx               TYPE bapimeout_t_itemx,

        ls_item_con            TYPE bapimeoutcondition,
        lt_item_con            TYPE TABLE OF bapimeoutcondition,
        ls_item_conx           TYPE bapimeoutconditionx,
        lt_item_conx           TYPE TABLE OF bapimeoutconditionx,

        lt_validity            TYPE TABLE OF bapimeoutvalidity,    "条件的有效期间
        ls_validity            TYPE bapimeoutvalidity,
        lt_validityx           TYPE TABLE OF bapimeoutvalidityx, "更改参数 - 条件的有效期间
        ls_validityx           TYPE bapimeoutvalidityx,

        ls_schedule            TYPE bapimeoutschedule,
        lt_schedule            TYPE bapimeout_t_schedule,
        ls_schedulex           TYPE bapimeoutschedulex,
        lt_schedulex           TYPE bapimeout_t_schedulex,

        ls_head_cond_validity  TYPE bapimeoutheadvalidity,
        lt_head_cond_validity  TYPE TABLE OF bapimeoutheadvalidity,
        ls_head_cond_validityx TYPE bapimeoutheadvalidityx,
        lt_head_cond_validityx TYPE TABLE OF bapimeoutheadvalidityx,

        ls_head_condition      TYPE bapimeoutheadercond,
        lt_head_condition      TYPE TABLE OF bapimeoutheadercond,
        ls_head_conditionx     TYPE bapimeoutheadercondx,
        lt_head_conditionx     TYPE TABLE OF bapimeoutheadercondx,

        l_ebeln                TYPE bapimeoutheader-number,
        lt_return              TYPE bapiret2_t,
        ls_return              TYPE bapiret2.

*---------------------------------------------------------------------*
*       Header赋值
*---------------------------------------------------------------------*
  CLEAR: ls_header,ls_headerx.

  "ls_header-our_ref     = 'WTPB00223'.   "我方参考
  ls_header-vendor      = '100234'.   "供应商
  "供应商.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = ls_header-vendor
    IMPORTING
      output = ls_header-vendor.

  ls_header-comp_code   = '2010'.     "公司代码
  ls_header-doc_type    = 'LP'.       "采购凭证类型 协议类型
*  ls_header-pmnttrms    = 'W01'.     "收付条件代码
  ls_header-purch_org   = '2010'.     "采购组织
  ls_header-pur_group   = '100'.      "采购组
  ls_header-currency    = 'CNY'.      "货币码
  ls_header-doc_date    = sy-datum.   "采购凭证日期
  ls_header-vper_start  = sy-datum.   "有效起始日期
  ls_header-vper_end    = '99991231'. "有效截至日期

  ls_headerx-our_ref     = 'X'.   "我方参考
  ls_headerx-vendor      = 'X'.   "供应商
  ls_headerx-comp_code   = 'X'.   "公司代码
  ls_headerx-doc_type    = 'X'.   "采购凭证类型
  ls_headerx-pmnttrms    = 'X'.   "收付条件代码
  ls_headerx-purch_org   = 'X'.   "采购组织
  ls_headerx-pur_group   = 'X'.   "采购组
  ls_headerx-currency    = 'X'.   "货币码
  ls_headerx-doc_date    = 'X'.   "采购凭证日期
  ls_headerx-vper_start  = 'X'.   "有效起始日期
  ls_headerx-vper_end    = 'X'.   "有效截至日期
*---------------------------------------------------------------------*
*       Header赋值 - 条件
*---------------------------------------------------------------------*
  CLEAR:lt_item[],lt_itemx[],lt_schedule[],lt_schedulex[],ls_item_con,lt_item_con[].
  CLEAR:lt_validityx,lt_validity.
  CLEAR:ls_item,ls_itemx.
  ls_item-item_no            = '00010' .    "项目编号
  "ls_item-material_long      = 'A001210'.   "物料编号
  ls_item-material           = '000003005003000051'.   "物料编号

  ls_item-item_cat = ''.
  ls_item-plant              = '2012'.     "工厂
  ls_item-stge_loc           = '3001'.     "存储地点
  ls_item-target_qty         = 1000.        "采购订单数量
  ls_item-net_price          =  10.
  ls_item-tax_code           = 'J1'.       "税代码
*  ls_item-firm_zone          = '42'.       "确定的域
*  ls_item-trade_off          = '56'.       "平衡区域
*  ls_item-binding_mrp        = '1'.        "捆绑在MRP.
  APPEND ls_item TO lt_item.

  ls_itemx-item_no            = '00010'.    "项目编号
  "ls_itemx-material_long      = 'X'.              "物料编号
  ls_itemx-material           = 'X'.              "物料编号
  ls_itemx-plant              = 'X'.              "工厂
  ls_itemx-stge_loc           = 'X'.              "存储地点
  ls_itemx-target_qty         = 'X'.              "采购订单数量
  ls_itemx-net_price          = 'X'.              "净价
  ls_itemx-tax_code           = 'X'.              "税代码
*  ls_itemx-firm_zone          = 'X'.              "确定的域
*  ls_itemx-trade_off          = 'X'.              "平衡区域
*  ls_itemx-binding_mrp        = 'X'.              "捆绑在MRP.
  APPEND ls_itemx TO lt_itemx.


*---------------------------------------------------------------------*
*       Item赋值
*---------------------------------------------------------------------*

  ls_head_cond_validity-serial_id  = ''.
  ls_head_cond_validity-valid_from = '20230727'.
  ls_head_cond_validity-valid_to   = '99991231'.
  APPEND ls_head_cond_validity TO lt_head_cond_validity.

  ls_head_cond_validityx-serial_id  = ''.
  ls_head_cond_validityx-valid_from = 'X'.
  ls_head_cond_validityx-valid_to   = 'X'.
  APPEND ls_head_cond_validityx TO lt_head_cond_validityx.

  ls_head_condition-serial_id  = ''.
  ls_head_condition-cond_count = '01'.
  ls_head_condition-cond_type  = 'RA01'.
  ls_head_condition-scale_type = 'A'.
  ls_head_condition-calctypcon = 'A'.
  ls_head_condition-cond_value = -5.
  ls_head_condition-currency   = '%'.
  APPEND ls_head_condition TO lt_head_condition.

  ls_head_conditionx-serial_id  = 'X'.
  ls_head_conditionx-cond_count = 'X'.
  ls_head_conditionx-cond_type  = 'X'.
  ls_head_conditionx-scale_type = 'X'.
  ls_head_conditionx-calctypcon = 'X'.
  ls_head_conditionx-currency   = 'X'.
  ls_head_conditionx-cond_value  = 'X'.
  APPEND ls_head_conditionx TO lt_head_conditionx.

  "调用bipi.
  BREAK-POINT.
  CALL FUNCTION 'BAPI_SAG_CREATE'
    EXPORTING
      header              = ls_header
      headerx             = ls_headerx
*     testrun             = l_testrun
    IMPORTING
      purchasingdocument  = l_ebeln
    TABLES
      return              = lt_return
      item                = lt_item
      itemx               = lt_itemx
      item_condition      = lt_item_con
      item_conditionx     = lt_item_conx
      item_cond_validity  = lt_validity
      item_cond_validityx = lt_validityx
      head_cond_validity  = lt_head_cond_validity
      head_cond_validityx = lt_head_cond_validityx
      head_condition      = lt_head_condition
      head_conditionx     = lt_head_conditionx.
  LOOP AT lt_return INTO ls_return WHERE type CA 'EA'.
    EXIT.
  ENDLOOP.
  IF sy-subrc = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = abap_true.
    WRITE:l_ebeln.
  ENDIF.



ENDFUNCTION.

三 业务理解

3.1 概念理解

        计划协议在SAP MM模块中的作用是为企业提供一种有效的方式来管理按需采购和供应链活动。它们使采购流程更加灵活,有助于优化库存管理,提高供应链的透明度,同时提供了更好的供应商关系管理。这种方法适用于那些需要定期采购相同或类似物料或服务的企业,特别是对于长期供应关系的建立和管理。通过SAP MM模块,企业可以有效地创建、维护和监控计划协议,以支持其采购和供应链策略

  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,MM,SAP,框架协议,BAPI)