采购信息记录维护

1、概念

SAP的采购信息记录(Purchase Info Record)是SAP系统中用于管理供应商、物料和采购条件的记录。它包含了与某个特定供应商相关的物料采购的详细信息,如价格、交货条件、折扣、支付条件等。

采购信息记录的主要目的是简化采购订单的创建过程,减少手工输入的工作量,并确保采购订单的一致性和准确性。

采购信息记录包括

  1. 基本信息:

    • 供应商主数据:包括供应商的代码、名称等。
    • 物料主数据:包括物料的代码、描述、规格等。
    • 采购组织:指定采购活动的组织单元。
    • 采购组:负责特定物料或供应商的采购团队。
  2. 价格信息:

    • 净价:不包含税和折扣的物料价格。
    • 税:适用的税种和税率。
    • 总价:包含税和折扣的最终价格。
    • 有效期:价格信息的有效时间段。
  3. 交货条件:

    • 交货地点:物料需要送达的地点。
    • 运输条件:运输方式和相关费用。
    • 交货时间:供应商承诺的交货时间。
  4. 折扣和返利:

    • 数量折扣:根据采购数量的不同,给予不同的折扣。
    • 价值折扣:根据采购金额的不同,给予不同的折扣。
    • 返利:供应商提供的奖励或返点。
  5. 支付条件:

    • 支付条款:如现金支付、信用支付、分期支付等。
    • 信用期限:供应商允许的信用支付期限。
    • 支付方式:如银行转账、支票等。
  6. 附加信息:

    • 最低订购量:供应商要求的最低订购数量。
    • 包装规格:物料的包装方式和数量。
    • 货币:采购交易使用的货币类型。

采购信息记录的主要用途包括:

  • 简化采购订单创建:在创建采购订单时,系统可以直接引用采购信息记录中的内容,自动填充价格、交货条件等信息,减少手工输入错误。
  • 确保采购一致性:通过标准化采购条件,避免因不同人员操作导致的采购条件不一致。
  • 提高采购效率:减少重复性工作,加快采购流程。
  • 供应商评估:通过对采购信息记录的分析,可以评估供应商的绩效,如交货准时率、价格竞争力等。

采购信息记录的维护

为了确保采购信息记录的准确性和有效性,需要定期进行维护,包括:

  • 更新价格和条件:当供应商提供新的价格或条件时,需要及时更新采购信息记录。
  • 审查有效期:检查采购信息记录的有效期,过期的记录需要更新或删除。
  • 校验数据准确性:定期检查数据的准确性,确保与供应商提供的实际情况一致。

通过有效的管理,采购信息记录可以显著提高采购过程的效率和准确性,帮助企业更好地控制采购成本和供应商关系。

2、前台创建

事务代码:ME11

采购信息记录一般数据

采购组织数据

条件

3、参考代码

调用BAPI:ME_INFORECORD_MAINTAIN

"--------------------@斌将军--------------------

DATA: lv_flag      TYPE char1,
      ls_eina      TYPE mewieina,
      ls_eine      TYPE mewieine,
      ls_einax     TYPE mewieinax,
      ls_einex     TYPE mewieinex,
      lt_txt       TYPE mewipirtext_t,
      ls_txt       TYPE mewipirtext,
      lt_validity  TYPE TABLE OF mewivalidity,
      ls_validity  TYPE  mewivalidity,
      lt_condition TYPE TABLE OF mewicondition,
      ls_condition TYPE  mewicondition,
      lt_value     TYPE TABLE OF mewiscaleval,
      ls_value     TYPE  mewiscaleval,
      lt_quan      TYPE TABLE OF mewiscalequan,
      ls_quan      TYPE  mewiscalequan,
      ls_eina1     LIKE mewieina,
      ls_eine1     LIKE mewieine,
      ls_return    TYPE bapireturn,
      lt_return    TYPE mewi_t_return.

DATA: lv_infnr   TYPE infnr,
      lv_check   TYPE char1,
      lv_message TYPE char255.

CLEAR: lv_flag,ls_eina,ls_einax,ls_eine,ls_einex,
       lt_txt,ls_txt,lt_validity,ls_validity,lt_condition,ls_condition,
       lt_value,ls_value,lt_quan,ls_quan,
       ls_eina1,ls_eine1,ls_return,lt_return.

"查询采购信息记录是否存在
SELECT SINGLE
  eina~infnr
INTO lv_infnr
FROM eina
JOIN eine ON eina~infnr = eine~infnr
WHERE eina~lifnr = '0010000792'
  AND eina~matnr = '000000001010008955'
  AND eine~ekorg = '3060'
  AND eine~esokz = '0'
  AND eine~werks = '3060'.
IF sy-subrc <> 0.
  lv_flag = 'I'.

  "查看是否有信息记录基础数据
  SELECT SINGLE
    infnr
  FROM eina
  INTO lv_infnr
  WHERE lifnr = '0010000792'
    AND matnr = '000000001010008955'.
  IF sy-subrc = 0.
    ls_eina-info_rec  = lv_infnr.
  ENDIF.

ELSE.
  lv_flag = 'U'.
  ls_eina-info_rec  = lv_infnr.
  ls_eine-info_rec  = lv_infnr.
  ls_einex-info_rec = 'X'.
ENDIF.

*采购信息记录 - 一般数据
ls_eina-vendor    = '0010000792'."gt_tab-lifnr. "供应商
ls_eina-material  = '000000001010008955'."gt_tab-matnr. "物料
ls_eina-po_unit   = 'BOT'."gt_tab-meins. "订单计量单位
*ls_eina-conv_num1 = ''."gt_tab-umrez. "单位转换的分子
*ls_eina-conv_den1 = ''."gt_tab-umren. "单位转换的分母

ls_einax-vendor     = 'X'.
ls_einax-material   = 'X'.
ls_einax-po_unit   = 'X'.
*ls_einax-conv_num1   = 'X'.
*ls_einax-conv_den1   = 'X'.


*采购信息记录 - 采购组织数据
ls_eine-info_type  = '0'."gt_tab-esokz. "信息记录类别
ls_eine-purch_org  = '3060'."gt_tab-ekorg. "采购组织
ls_eine-plant      = '3060'."gt_tab-werks. "工厂
ls_eine-pur_group  = '100'."gt_tab-ekgrp. "采购组
ls_eine-gr_basediv = 'X'."gt_tab-webre. "标识:基于收货的发票验证
ls_eine-nrm_po_qty = '1'."gt_tab-norbm. "标准采购订单数量
ls_eine-min_po_qty = ''."gt_tab-minbm. "最小订单数量
ls_eine-max_po_qty = ''."gt_tab-bstma. "最大订单数量
ls_eine-net_price  = '10'."gt_tab-netpr. "净价
ls_eine-currency   = 'CNY'."gt_tab-waers. "币别
ls_eine-price_unit = '1'."gt_tab-peinh. "价格单位
ls_eine-orderpr_un = 'BOT'."gt_tab-meins. "订单计量单位
ls_eine-conv_num1     = '1'."1. "gt_tab-umrez. "单位转换的分子
ls_eine-conv_den1  = '1'."1. "gt_tab-umren. "单位转换的分母
ls_eine-tax_code   = ''."gt_tab-mwskz. "税码
ls_eine-overdeltol = ''."gt_tab-uebto. "过量交货容差
ls_eine-under_tol  = ''."gt_tab-untto. "交货不足容差
ls_eine-conf_ctrl  = ''."gt_tab-bstae. "确认控制代码
ls_eine-ackn_reqd  = ''."gt_tab-kzabs. "供应商需要确认订单

ls_einex-info_type  = 'X'.
ls_einex-purch_org  = 'X'.
ls_einex-plant      = 'X'.
ls_einex-pur_group  = 'X'.
ls_einex-gr_basediv = 'X'.
ls_einex-nrm_po_qty = 'X'.
ls_einex-min_po_qty = 'X'.
ls_einex-max_po_qty = 'X'.
*ls_einex-net_price = 'X'."此处不能打X
ls_einex-currency   = 'X'.
ls_einex-price_unit = 'X'.
ls_einex-orderpr_un = 'X'.
ls_einex-conv_num1  = 'X'.
ls_einex-conv_den1  = 'X'.
ls_einex-tax_code   = 'X'.
ls_einex-overdeltol = 'X'.
ls_einex-under_tol  = 'X'.
ls_einex-conf_ctrl  = 'X'.
ls_einex-ackn_reqd  = 'X'.

lt_validity = VALUE #( ( plant      = '3060'"gt_tab-werks
                         valid_from = '20240620'"gt_tab-datab
                         valid_to   = '99991231'"gt_tab-datbi
                         ) ).

lt_condition = VALUE #( ( cond_count    = 1
                          cond_type     = 'PB00'"gt_tab-kschl
                          cond_value    = '10'"gt_tab-netpr
                          currency      = 'CNY'"gt_tab-waers
                          cond_p_unt    = '1'"gt_tab-peinh
                          cond_unit     = 'BOT'"gt_tab-meins
                          calctypcon    = 'C'           "计算类型
                          vendor_no     = '0010000792'"gt_tab-lifnr
                          change_id     = lv_flag ) ).

"阶梯价
*    IF gt_tab-kstb1 IS NOT INITIAL.
*      CLEAR: lt_condition.
*      lt_condition = VALUE #( ( cond_count    = 1
*                                cond_type     = gt_tab-kschl
*                                scale_type    = 'A'           "等级类型
*                                scale_base_ty = 'C'           "等级基础类型
*                                scale_unit    = gt_tab-meins  "条件等级计量单位
*                                calctypcon    = 'C'           "计算类型
*                                cond_value    = gt_tab-netpr
*                                currency      = gt_tab-waers
*                                cond_p_unt    = gt_tab-peinh
*                                cond_unit     = gt_tab-meins
*                                vendor_no     = gt_tab-lifnr
*                                change_id     = lv_flag ) ).
*
*      ls_quan-cond_count = 1.
*      ls_quan-line_no = 1.
*      ls_quan-scale_base_qty = '1'."gt_tab-kstb1.
*      ls_quan-cond_value = '10'."gt_tab-kbet1.
*      APPEND ls_quan TO lt_quan.
*      CLEAR ls_quan.
*    ENDIF.
*
*    IF gt_tab-kstb2 IS NOT INITIAL.
*      ls_quan-cond_count = 1.
*      ls_quan-line_no = 2.
*      ls_quan-scale_base_qty = gt_tab-kstb2.
*      ls_quan-cond_value = gt_tab-kbet2.
*      APPEND ls_quan TO lt_quan.
*      CLEAR ls_quan.
*    ENDIF.

"BAPI
CALL FUNCTION 'ME_INFORECORD_MAINTAIN'
  EXPORTING
    i_eina        = ls_eina
    i_einax       = ls_einax
    i_eine        = ls_eine
    i_einex       = ls_einex
  IMPORTING
    e_eina        = ls_eina1
    e_eine        = ls_eine1
  TABLES
    txt_lines     = lt_txt
    cond_validity = lt_validity
    condition     = lt_condition
*   cond_scale_value = lt_value
*   cond_scale_quan  = lt_quan
    return        = lt_return.

CLEAR:lv_message.
LOOP AT lt_return INTO ls_return WHERE type CA 'EXA'.
  lv_message = lv_message && '&' && ls_return-message.
ENDLOOP.
IF sy-subrc = 0 OR ls_eina1-info_rec IS INITIAL.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.

  lv_message = '采购信息记录' && ls_eina1-info_rec && '创建成功'.
  WRITE:lv_message.

ENDIF.
"--------------------@斌将军--------------------

### 如何在 SAP 系统中维护采购信息记录 #### 维护采购信息记录的操作概述 在 SAP 中,采购信息记录 (Purchasing Info Record) 是一种重要的工具,用于存储有关供应商及其所提供物料的具体数据。这些记录可以帮助企业优化采购流程并减少重复工作量。通过创建和更新采购信息记录,公司能够更好地管理和跟踪其供应链活动。 为了完成这一任务,通常会在 MM(Material Management)模块下的采购管理子区域执行相应操作。具体来说,可以通过事务码 `ME11` 创建新的采购信息记录或者利用事务码 `ME12` 修改现有的条目[^2]。 #### 步骤说明 以下是基于标准 SAP 功能的一般指导: - **启动事务**: 输入事务码 `ME11` 或者从菜单路径导航至 “Logistics -> Materials Management -> Purchasing -> Info Records -> Create”。这一步将打开初始屏幕以便输入必要的筛选条件。 - **定义关键参数**: 需要指定几个核心字段来唯一识别所要建立的信息记录,比如工厂 (`Plant`)、物料编号 (`Material Number`) 和供应商编码 (`Vendor Code`) 等属性。只有当所有必填项都被正确定义之后才能继续下一步操作[^3]。 - **填写详细资料**: 进入编辑模式后,用户应补充其他重要细节,例如价格条款(`Price Condition`)、货币单位(`Currency Unit`)以及交货时间估计值(`Delivery Time Estimate`)等内容。注意某些数值可能依赖于先前设定好的主数据对象,因此务必确认它们的有效性和准确性[^1]。 - **保存更改**: 完成上述设置以后就可以提交当前状态到数据库里永久保留下来了。如果一切顺利的话,则意味着成功新增了一条有效的采购信息记录;反之则需按照错误提示消息逐一排查问题所在直至彻底解决为止。 另外值得注意的是,在实际应用过程中还可能存在额外的要求或限制因素影响最终实施方案的选择——例如行业特殊需求或者其他集成系统的兼容性考量等方面的影响都需要纳入考虑范围之内。 ```python # 示例 Python 脚本展示如何模拟调用 SAP RFC 接口以自动化处理部分常规任务 import pyrfc def create_info_record(sap_system, plant_id, material_num, vendor_code): try: connection = sap_system.get_connection() result = connection.call('BAPI_INFORECORD_CREATE', PLANT=plant_id, MATERIAL=material_num, VENDOR=vendor_code) return result['RETURN'] except Exception as e: raise RuntimeError(f"Error during info record creation: {e}") if __name__ == "__main__": from my_sap_config import MySAPSystemConfig config = MySAPSystemConfig() response = create_info_record(config, '0001', 'MAT123456', 'VEND789') print(response) ``` 此脚本仅作为概念验证用途,并假设存在适当的安全措施保护敏感信息不被泄露出去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值