SAP_ABAP_MM_BAPI清单案例教程——框架协议-合同_BAPI_CONTRACT_CREATE_ME31K

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.3.1 创建

1.3.2 修改

  • 接口参数部分构成:

抬头、抬头条件、抬头时间、增强、行项目、行项目条件

  • bapi名称:

BAPI_CONTRACT_CHANGE

BAPI_CONTRACT_CREATE

  • 代码实现:直接copy 调整参数即可以用
FUNCTION zfm_contract.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------

  DATA:l_flag TYPE c.
  DATA:l_ebeln                TYPE bapimeoutheader-number,  "#EC NEEDED
       ls_ekko                TYPE ekko,

       extensionin            LIKE bapiparex OCCURS 0 WITH HEADER LINE,
       lt_extensionout        TYPE bapiparex_t,

       ls_header              TYPE bapimeoutheader, "抬头数据框架协议
       ls_headerx             TYPE bapimeoutheaderx,

       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,

       ls_item                TYPE bapimeoutitem,    "合同的项目数据
       lt_item                TYPE bapimeout_t_item, "表类型:项目数据框架协议

       ls_itemx               TYPE bapimeoutitemx,
       lt_itemx               TYPE bapimeout_t_itemx,

       ls_item_condition      TYPE  bapimeoutcondition,
       ls_item_conditionx     TYPE  bapimeoutconditionx,
       lt_item_condition      TYPE TABLE OF  bapimeoutcondition,
       lt_item_conditionx     TYPE TABLE OF  bapimeoutconditionx,

       lt_return              TYPE bapiret2_t,
       ls_return              TYPE bapiret2
       .

*--------------------------------------------------------------------*
*   Header赋值
*--------------------------------------------------------------------*
  CLEAR: ls_header,ls_headerx,l_flag.
  REFRESH: lt_return, lt_item, lt_itemx.


  ls_header-number      = ''.  "合同号
  ls_header-vendor      = '0000100234'.  "供应商
  ls_header-doc_type    = 'WK'.  "协议类型
  ls_header-comp_code   = '2010'.  "公司代码
  ls_header-doc_date    = '20230725'.  "协议日期
  ls_header-vper_start  = '20230725'.  "协议起始日期
  ls_header-vper_end    = '20230930'.  "协议截至日期
  ls_header-purch_org   = '2010'.  "采购组织
  ls_header-pur_group   = '100'.  "采购组
  ls_header-acum_value  = '10000'.  "目标值
  ls_header-currency    = 'CNY'.  "货币
  ls_header-langu       = sy-langu. "ABAP 系统字段:文本环境的语言码

  ls_headerx-number     = 'X'.  "合同号
  ls_headerx-vendor     = 'X'.  "供应商
  ls_headerx-doc_type   = 'X'.  "协议类型
  ls_headerx-comp_code  = 'X'.  "公司代码
  ls_headerx-doc_date   = 'X'.  "协议日期
  ls_headerx-vper_start = 'X'. "协议起始日期
  ls_headerx-vper_end   = 'X'. "协议截至日期
  ls_headerx-purch_org  = 'X'. "采购组织
  ls_headerx-pur_group  = 'X'. "采购组
  ls_headerx-acum_value = 'X'. "目标值
  ls_headerx-currency   = 'X'. "货币
  ls_headerx-langu      = 'X'. "ABAP 系统字段:文本环境的语言码

*--------------------------------------------------------------------*
*   Header 自定义字段赋值
*--------------------------------------------------------------------*
***  DATA: ls_bapi_te_meoutheaderx LIKE bapi_te_meoutheaderx,
***        ls_bapi_te_meoutheader  LIKE bapi_te_meoutheader.
***
***  CLEAR extensionin.
***  ls_bapi_te_meoutheader-number = gwa_out-ebeln.
***  ls_bapi_te_meoutheader-zhtnum = gwa_out-zhtnum.  "外部合同号
***  ls_bapi_te_meoutheader-zlotno = gwa_out-zlotno.  "LOT包号
***  ls_bapi_te_meoutheader-zcgblx = gwa_out-zcgblx.  "采购包类型
***  ls_bapi_te_meoutheader-zhtbz  = gwa_out-zhtbz.   "采购立项号
***  ls_bapi_te_meoutheader-zcgnum = gwa_out-zcgnum.  "采购任务
***  extensionin-structure = 'BAPI_TE_MEOUTHEADER'.
***  CALL METHOD cl_abap_container_utilities=>fill_container_c
***    EXPORTING
***      im_value               = ls_bapi_te_meoutheader
***    IMPORTING
***      ex_container           = extensionin-valuepart1
***    EXCEPTIONS
***      illegal_parameter_type = 1
***      OTHERS                 = 2.
***  APPEND extensionin.
***
***  CLEAR extensionin.
***  ls_bapi_te_meoutheaderx-number = gwa_out-ebeln.
***  ls_bapi_te_meoutheaderx-zhtnum = 'X'.  "外部合同号
***  ls_bapi_te_meoutheaderx-zlotno = 'X'.  "LOT包号
***  ls_bapi_te_meoutheaderx-zcgblx = 'X'.  "采购包类型
***  ls_bapi_te_meoutheaderx-zhtbz  = 'X'.   "采购立项号
***  ls_bapi_te_meoutheaderx-zcgnum = 'X'.  "采购任务
***  extensionin-structure = 'BAPI_TE_MEOUTHEADERX'.
***  CALL METHOD cl_abap_container_utilities=>fill_container_c
***    EXPORTING
***      im_value               = ls_bapi_te_meoutheaderx
***    IMPORTING
***      ex_container           = extensionin-valuepart1
***    EXCEPTIONS
***      illegal_parameter_type = 1
***      OTHERS                 = 2.
****  EXTENSIONIN-VALUEPART1 = LS_BAPI_TE_MEOUTHEADERX.
***  APPEND extensionin.

*--------------------------------------------------------------------*
*   Item赋值
*--------------------------------------------------------------------*
  CLEAR: ls_item,ls_itemx,lt_item[],lt_itemx[].
  CLEAR: ls_item, ls_itemx.

  ls_item-item_no     = '10'.         "行号
  ls_item-short_text  = '镀锡25mm2 test by zhong1'. "端文本
  ls_item-material    = '000003005003000051'.
  ls_item-matl_group  = '3202007'."物料组
  ls_item-plant       = '2012'.   "工厂
  ls_item-target_qty  = '1000'.   "目标数量
  ls_item-po_unit     = 'KG'.
  ls_item-po_unit_iso = 'KG'.
  ls_item-net_price   = 10.      "净价
  ls_item-price_unit  = '1'.     "价格单位
  ls_item-conv_num1   = '1'.     "订单价格单位转换为订单单位的分子
  ls_item-conv_den1   = '1'.     "订单价格单位转换为订单单位的分母
  ls_item-orderpr_un  = 'KG'.    "订单价格单位(采购)
  ls_item-orderpr_un_iso = 'KG'. "订单价格单位(采购)
*  ls_item-acctasscat     = 'U'. "科目分配类别  U 未知
  "ls_item-item_cat       = 0.   "项目类别
  APPEND ls_item TO lt_item.

  ls_itemx-item_no     = '10'.  "行号
  ls_itemx-item_nox    = 'X'.  "行号
  ls_itemx-short_text  = 'X'.  "端文本
  ls_itemx-material    = 'X'.  "物料号
  ls_itemx-matl_group  = 'X'.  "物料组
  ls_itemx-plant       = 'X'.  "工厂
  ls_itemx-target_qty  = 'X'.  "目标数量
  ls_itemx-po_unit     = 'X'.
  ls_itemx-po_unit_iso = 'X'.
  ls_itemx-net_price   = 'X'.  "净价
  ls_itemx-price_unit  = 'X'.  "价格单位
*  ls_itemx-conv_num1   = 'X'.
*  ls_itemx-conv_den1   = 'X'.
  ls_itemx-orderpr_un  = 'X'.
  ls_itemx-orderpr_un_iso = 'X'.
*  ls_itemx-acctasscat  = 'X'.  "科目分配类别
  "ls_itemx-item_cat    = 'X'.  "项目类别
  APPEND ls_itemx TO lt_itemx.

  ls_item_condition-item_no    = 10."采购凭证的项目编号
  ls_item_condition-cond_type  = 'RA01'."条件类型
  ls_item_condition-cond_value = '-10'."条件金额
  ls_item_condition-cond_p_unt = '-1.0'."条件定价单位
  ls_item_condition-cond_unit  = '%'."条件单位


  APPEND ls_item_condition TO lt_item_condition.
  ls_item_conditionx-item_no    = '10'."采购凭证的项目编号
  ls_item_conditionx-cond_type  = 'X'."条件类型
  ls_item_conditionx-cond_value = 'X'."条件金额
  ls_item_conditionx-cond_p_unt = 'X'."条件定价单位
  ls_item_conditionx-cond_unit  = 'X'."条件单位
  APPEND ls_item_conditionx TO lt_item_conditionx.

  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  = 'X'.
  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-cond_type  = 'RA01'.
  ls_head_condition-cond_count = '01'.
  ls_head_condition-scale_type = 'A'.
  ls_head_condition-calctypcon = 'A'.
  ls_head_condition-cond_value = -10.
  ls_head_condition-currency = '%'.
  APPEND ls_head_condition TO lt_head_condition.

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


*--------------------------------------------------------------------*
*   Create contract
*--------------------------------------------------------------------*
  IF ls_header-number IS INITIAL.
    "无合同号,新建
    CALL FUNCTION 'BAPI_CONTRACT_CREATE'
      EXPORTING
        header              = ls_header
        headerx             = ls_headerx
*       TESTRUN             = PA_TEST
      IMPORTING
        purchasingdocument  = l_ebeln
      TABLES
        return              = lt_return
        item                = lt_item
        itemx               = lt_itemx
        extensionin         = extensionin
*       item_condition      = lt_item_condition
*       item_conditionx     = lt_item_conditionx
        head_cond_validity  = lt_head_cond_validity
        head_cond_validityx = lt_head_cond_validityx
        head_condition      = lt_head_condition
        head_conditionx     = lt_head_conditionx.

    DATA: head_cond_validity TYPE TABLE OF  bapimeoutheadvalidity.
    DATA: head_condition     TYPE TABLE OF  bapimeoutheadercond.

  ELSE.
    " 有合同号,修改
    l_ebeln = ls_header-number.
    CALL FUNCTION 'BAPI_CONTRACT_CHANGE'
      EXPORTING
        purchasingdocument = l_ebeln
        header             = ls_header
        headerx            = ls_headerx
*       TESTRUN            = PA_TEST
      IMPORTING
        exp_header         = ls_header
      TABLES
        return             = lt_return
        item               = lt_item
        itemx              = lt_itemx
        extensionin        = extensionin
        item_condition     = lt_item_condition
        item_conditionx    = lt_item_conditionx.

  ENDIF.

  l_flag = 'S'.
  LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type = 'A'.
    l_flag = 'E'.
    EXIT.
  ENDLOOP.

  IF l_flag EQ 'S'.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ENDIF.


  IF NOT lt_return IS INITIAL.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_structure_name = 'BAPIRET2'
      TABLES
        t_outtab         = lt_return
      EXCEPTIONS
        OTHERS           = 0.
  ENDIF.


ENDFUNCTION.

1.3.3 删除

三 业务理解

3.1 概念理解

        框架协议-合同在SAP MM模块中的业务作用是优化和简化采购管理,提高采购效率,降低采购成本,稳定供应链,同时提供更好的供应商关系管理。这种方法适用于那些需要定期采购相同或类似物料或服务的企业,特别是对于长期供应关系的建立和管理。通过SAP MM模块,企业可以有效地创建、维护和监控框架协议,以支持其采购和供应链策略

  1. 采购计划和管理: 框架协议允许企业与供应商建立长期协议,规定了一段时间内需要采购的物料或服务的数量和条件。这有助于企业更好地规划和管理采购需求。

  2. 减少采购复杂性: 框架协议减少了每次采购交易的繁琐程度。企业无需每次都创建新的采购订单,而是可以使用现有的框架协议来采购所需物料或服务。

  3. 价格协商和稳定性: 框架协议通常包括价格协商,允许企业与供应商协商和锁定一段时间内的物料或服务价格。这有助于稳定采购成本,并提供了价格预测的可行性。

  4. 库存控制: 通过框架协议,企业可以更好地控制物料的库存水平,因为它们可以按计划定期获得物料,而不会因过多或过少的库存而产生成本。

  5. 供应链透明度: 框架协议增强了企业与供应商之间的合作和沟通,使供应链变得更加透明。供应商能够更好地了解客户的需求,客户则可以更好地掌握供应链的进展。

  6. 灵活性: 框架协议通常具有一定程度的灵活性,允许企业根据需求进行一定程度的变更,例如更改交付数量或交货时间。

  7. 合同履行监控: 通过SAP MM模块,企业可以监控和跟踪框架协议的履行情况,包括已交付数量、未交付数量、交付进度等。这有助于确保供应商遵守合同条款。

  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 - 审批

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SAP BASIS运维服务合同是一种契约,旨在确保在SAP系统运行期间提供专业的技术支持和维护。该合同确保了系统稳定性和可靠性,保证系统在正常运行期间不会发生故障。 SAP BASIS运维服务合同通常包括以下内容:首先是服务的范围和目标,也就是明确双方的责任和义务。合同中会列出具体的运维服务内容,比如系统监控、备份和恢复、修复故障等。这些服务目标旨在确保系统的持续可用性和性能最佳化。 其次是服务的工作时间和响应时间。合同中会规定运维服务团队的工作时间,以及响应时间,即在系统发生故障或问题时需要多长时间内做出响应和解决。 合同还包括了报告和沟通机制。合同中规定了每周或每月的报告频率,以及报告的格式和内容。此外,合同还会明确沟通渠道和联络方式,确保双方在问题发生时能及时进行沟通和解决。 最后,合同还规定了费用和支付方式。运维服务合同通常会对服务费用进行详细的说明,包括每项服务的费用以及支付方式和周期。这样可以确保服务提供商按时收取费用,同时也确保服务质量和合同的履行。 总的来说,SAP BASIS运维服务合同对于确保系统的稳定运行、提供及时支持和维护至关重要。通过明确双方的责任和义务、规定服务范围和目标、工作时间和响应时间、报告和沟通机制以及费用和支付方式,可以确保合同的执行和系统的可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Terry谈企业数字化

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

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

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

打赏作者

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

抵扣说明:

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

余额充值