采购订单创建、修改、审批增强ME21N/ME22N/ME28/ME29N

本文介绍SAP系统中采购订单处理的增强方法,包括通过POST方法获取订单头信息及行信息,利用CHECK方法实现自定义检查逻辑并展示错误消息,以及如何在订单审批过程中同步数据到外围系统。

1、采购订单保存增强

1.1、POST方法

BADI:ME_PROCESS_PO_CUST

 通过POST方法中的参数im_header,获取对应的数据

订单头

"--------------------@斌将军--------------------
*Get header
  CALL METHOD im_header->get_data
    RECEIVING
      re_data = header.
*获取长文本
  REFRESH ex_textlines.
  CALL METHOD im_header->if_longtexts_mm~get_text
    EXPORTING
      im_tdid      = im_tdid
    IMPORTING
      ex_textlines = ex_textlines.

im_header->set_data( header )."更新修改 
"--------------------@斌将军--------------------

订单行

"--------------------@斌将军--------------------
"获取行
*Get Item
  CALL METHOD im_header->get_items
    RECEIVING
      re_items = items_data.

LOOP AT items_data INTO item_data.
**  First get Item Object, Second fill item data
    "获取行对象
      item_obj = item_data-item.
    "获取行字段值
      CALL METHOD item_obj->get_data
        RECEIVING
          re_data = item.
    "获取行长文本
      REFRESH ex_textlines.
      CALL METHOD item_obj->if_longtexts_mm~get_text
        EXPORTING
          im_tdid      = im_tdid
        IMPORTING
          ex_textlines = ex_textlines.

    item_obj->set_data( item )."更新修改
ENDLOOP.
"--------------------@斌将军--------------------

计划行

"--------------------@斌将军--------------------
"获取计划行
      CALL METHOD item_obj->get_schedules
        RECEIVING
          re_schedules = schedules_data.

      LOOP AT schedules_data INTO schedule_data.
        schedule_obj = schedule_data-schedule.
        CALL METHOD schedule_obj->get_data
          RECEIVING
            re_data = schedule.

schedule_obj->set_data(schedule)."更新修改
ENDLOOP. 
"--------------------@斌将军--------------------

更新字段要注意,存在有不可更新的字段,例如行项目中的不可直接更新字段,使用set_data也更新不了

1.2、CHECK方法

另外还有检查增强,点击页面检查按钮可进入。保存时也可进入。

在检查中可以直接报E类型消息,自定义报错就直接进入前台报错清单中。

另外也可以通过标准的程序,将自定义报错添加到报错清单中

"--------------------@斌将军--------------------
INCLUDE mm_messages_mac.

IF 检查错误.
mmpur_message_forced  'E' 'ZMM002' '011' '' '' '' ''.  "错误消息
ch_failed = 'X'.
ENDIF.
"--------------------@斌将军--------------------

2、采购订单审批同步外围系统增强

函数:ME_PURCHASE_DOCUMENT_DATA_SAVE

 调用接口同步数据到外围系统

"--------------------@斌将军--------------------
ENHANCEMENT 1  ZME28.    "active version
"采购订单审批发送SRM接口
CALL FUNCTION 'Z_XXX' "IN BACKGROUND TASK DESTINATION 'NONE'
  EXPORTING
    i_ekko        = E_EKKO.
ENDENHANCEMENT.
"--------------------@斌将军--------------------

定期更文,欢迎关注

<think>我们正在讨论SAP中ME51N创建采购申请后审批者自动生成的机制。根据用户提供的引用和之前的问题,审批者自动生成通常与工作流和审批策略相关。 关键点: 1. 审批者自动生成是通过SAP的工作流和审批策略配置实现的。 2. 在创建采购申请时,系统会根据预设的审批规则(如金额、物料组、采购组等)自动确定审批者。 步骤: 1. 配置审批策略(Release Strategy): - 事务码:SPRO - 路径:物料管理->采购->采购申请->审批过程->定义采购申请的审批策略 2. 配置审批层次结构(Release Indicator)和审批代码(Release Code): - 定义审批步骤、审批者(可以是具体用户、职位、工作中心等) 3. 配置审批条件(Release Condition): - 使用事务码:ME54N(或ME55)进行测试,但配置在SPRO中 - 条件可以基于采购申请中的字段,如总金额、采购组、工厂等。 当使用ME51N创建采购申请并保存时,系统会: 1. 根据采购申请中的字段值(如采购组、工厂、总金额等)匹配审批策略中的条件。 2. 找到匹配的审批策略后,根据策略中定义的审批步骤和审批者,生成工作流任务,并将任务分配给相应的审批者。 3. 工作流引擎会更新工作流表(如SWWWIHEAD和SWWUSERWI)以记录工作项和分配情况。 具体机制: - 在保存采购申请(表EBAN)时,会触发一个函数模块(如PR_UPDATE_WORK_ITEMS)来创建工作流项。 - 工作流项创建后,会根据审批策略中定义的审批者,将工作项分配给这些用户(记录在SWWUSERWI中)。 因此,审批者的自动生成依赖于审批策略的配置。如果没有配置审批策略,则不会生成审批者。 验证方法: 1. 使用事务码ME53N查看已创建采购申请,在“状态”标签页中,可以看到审批状态和审批步骤。 2. 如果配置了工作流,还可以在工作流监控(事务码SWIA)中查看相关的工作项。 引用说明: - 引用[1]提到采购申请可以设置审批审批通过后转换为采购订单,事务码ME54N用于审批。 - 引用[2]列出了采购申请相关事务码,包括ME55(批量审批)。 - 引用[3]提到了审批策略和BAPI:BAPI_REQUISITION_RELEASE用于审批采购申请。 因此,自动生成审批者的机制是由审批策略配置和工作流共同完成的。 相关问题: 1. 如何配置采购申请的审批策略? 2. 采购申请审批策略的条件设置有哪些选项? 3. 如何将审批者设置为工作中心(职位)而不是具体用户? 4. 采购申请审批工作流的监控和调试方法是什么?</think>在SAP系统中,ME51N创建采购申请后审批者自动生成的机制主要基于**工作流审批策略**和**释放组配置**实现。以下是核心机制和配置逻辑: --- ### 一、审批者自动生成机制 1. **审批策略触发条件** 采购申请保存时,系统根据预设的**审批条件**(如金额、物料组、采购组织等)匹配对应的审批策略: ```sql IF 采购申请总金额 > $10,000 AND 物料组 = "原材料" THEN 触发审批策略"ZRAW_APPROVAL" -- [^3] ``` 2. **审批者确定逻辑** 通过释放组(Release Group)配置审批层级: - **第一层审批者**:采购申请创建者的直接主管(从HR主数据获取) - **第二层审批者**:财务控制员(根据成本中心自动映射) - **特殊审批者**:超过$50,000时需部门总监审批 3. **工作流自动创建** 匹配策略后,系统调用函数: ```abap CALL FUNCTION 'BAPI_REQUISITION_RELEASE' "触发审批工作流[^3] EXPORTING number = pr_number rel_indicator = 'F'. "释放标识 ``` 此函数会: - 更新表`SWWWIHEAD`(创建审批工作项) - 更新表`SWWUSERWI`(分配审批者) --- ### 二、关键配置路径 | 事务码 | 配置路径 | 作用说明 | |--------|--------------------------------------------|------------------------------| | SPRO | 物料管理→采购采购申请→审批过程→定义审批策略 | 配置审批条件与审批层级[^1] | | OME9 | 定义释放组(Release Group) | 指定各层级审批者映射规则 | | PFTC | 维护标准任务TS00008220 | 采购审批工作流模板[^2] | **配置示例**: ```sql 审批策略ZRAW_APPROVAL: 条件: 物料组="RAW" AND 金额>$10,000 审批步骤: 步骤1: 审批者类型="主管" (从创建者HR数据获取) 步骤2: 审批者类型="成本中心负责人" (从成本中心主数据获取) ``` --- ### 三、技术实现流程 ```mermaid graph TD A[ME51N保存采购申请] --> B{检查审批条件} B -->|匹配策略| C[调用BAPI_REQUISITION_RELEASE] C --> D[创建SWWWIHEAD记录] C --> E[分配审批者至SWWUSERWI] E --> F[工作项推送至审批者工作台] ``` --- ### 四、验证方法 1. **查看审批分配** 事务码`ME53N`→输入采购申请号→转到"状态"标签页: - 显示具体审批者和审批状态 - 查看工作流编号(链接到SWWWIHEAD) 2. **跟踪工作流表** 使用ST05跟踪: ```sql SELECT * FROM swwwihead WHERE wi_id = '采购申请工作流ID' -- 显示审批任务状态 SELECT * FROM swwuserwi WHERE wi_id = '采购申请工作流ID' -- 显示分配的审批者 ``` > ⚠️ 注意:审批者自动生成需确保HR主数据(汇报关系)和成本中心负责人配置完整。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值