ME51N, ME52N 创建采购申请的一个BADI

ME51N ME52N创建修改采购申请时的一个BADI

(2013-07-11 16:50:58)
转载
怎样找badi不做介绍
无论是类里打断点、或者st05跟踪,或者是spro里找都行
我这个badi比较简单,网上一搜或者群里一问大家都知道
ME_PROCESS_REQ_CUST
这里简单实现里面的check
 

FM内具体代码见最后
 
这里说下不借助其他帮助的时候,怎么找到想要的方法,怎么找到需要的值

 显示参数




双击进入im_header 

 

一般都会有get_data.此处还有个get_tiems 


打开参数

双击查看该结构


就是想要的采购申请号和行项目号,不过描述是:last item number

说明是一条数据,而不是个表

注意看看后面的描述

 

然后看get_items,一般情况这两个方法是常用的


会发现re_itmes是 个内表

而且这个内表参考类型,是个类IF_PURCHASE_REQUISITION_ITEM


一般也会有get_data.

 一层层跟下去,调用的时候定义类对象,调用其方法即可

 

另外:ME53N查看时,点编辑按钮,进入编辑状态,可以在ME_PROCESS_REQ_CUST -- open方法中写逻辑

 

FM内代码:

 

FUNCTION zlm_fm_me52n.

*"----------------------------------------------------------------------

*"*"Local interface:

*"  IMPORTING

*"     VALUE(IM_HEADER) TYPE REF TO  IF_PURCHASE_REQUISITION OPTIONAL

*"  EXPORTING

*"     VALUE(E_ITEM_DATA) TYPE  MEREQ_ITEM

*"  EXCEPTIONS

*"      ERROR

*"----------------------------------------------------------------------

*"*"Local interface:

*"  IMPORTING

*"     VALUE(IM_HEADER) TYPE REF TO  IF_PURCHASE_REQUISITION OPTIONAL

*

*1、  通过Tcode:ME52N进行采购申请修改时,

*     更改行项目物料编码保存时需判断已更换物料是否未冻结物料,

*     如果为冻结物料,则禁止采购申请保存并给与错误提示:行项目XXX新更换物料XXXXXXX已冻结,请选择其他物料。

*2、  冻结物料判断逻辑如下:

*     当物料主数据MARA-MATNR的跨工厂物料状态MARA-MSTAE为非空时表示该物料已经冻结;

*     当物料主数据MARA-MATNR的MARA-LVORM字段为“X”表示该物料已删除

*"----------------------------------------------------------------------

 

  DATA: wa_head     TYPE mereq_header.                           "表头数据:采购申请号等

  DATA: it_item     TYPE mmpur_requisition_items.                "行项目表:采购申请下各行项目

  DATA  wa_item     LIKE LINE OF it_item.                        "行项目工作区

  DATA  cl_item     TYPE REF TO if_purchase_requisition_item.    "获取行项目数据的类

  DATA  l_item_data TYPE mereq_item.                             "行项目中具体值

  DATA: l_matnr     TYPE matnr.

  DATA:

        BEGIN OF str_dongjie,

        mstae     TYPE mstae,

        lvorm     TYPE lvorm,

         END OF str_dongjie,

        wa_dongjie LIKE str_dongjie.

 

  "获取头数据

  CALL METHOD im_header->get_data

    RECEIVING

      re_data = wa_head.

 

  "如果不是ME52N进入,没有采购申请单号,采购申请单号第一位是‘#’,不需要进行后续校验

  IF wa_head-banfn(1) = '#'.

    RETURN.

  ENDIF.

 

  "获取行项目

  CALL METHOD im_header->get_items

    RECEIVING

      re_items = it_item.

 

  "解析行项目

  LOOP AT it_item INTO wa_item.

 

    "获取行项目数据的类

    cl_item = wa_item-item.

 

    "获取行项目值

    CALL METHOD cl_item->get_data

      RECEIVING

        re_data = l_item_data.

 

    CLEAR l_matnr.

 

    "获取采购申请物料号

    SELECT SINGLE matnr

      FROM eban

      INTO l_matnr

      WHERE banfn = wa_head-banfn AND

            bnfpo = l_item_data-bnfpo.

 

    "如果修改了物料,检查更新的物料是否被冻结,冻结则输出物料信息、抛出异常并退出

    IF l_item_data-matnr <> l_matnr.

 

      SELECT SINGLE mstae lvorm

        INTO wa_dongjie

        FROM mara

        WHERE matnr = l_item_data-matnr.

      IF sy-subrc = 0 AND ( wa_dongjie-mstae IS NOT INITIAL OR wa_dongjie-lvorm = 'X'  ) .

        e_item_data = l_item_data.

        RAISE error.

        RETURN.

      ENDIF.

    ENDIF.

  ENDLOOP.

 

ENDFUNCTION.

转载于:https://www.cnblogs.com/rainysblog/p/3673722.html

金色传说:SAP-MM-ME51N/ME52N采购申请增强 ME51N/ME52N采购申请增强 阅读详情

相关推荐

采购申请ME51N~ME54N屏幕增强

采购申请ME51N~ME54N屏幕增强

weixin_42459695的博客 1782

ME51ME52N创建修改采购申请时的一个BADI_SAP刘梦_新浪博客

怎样找badi不做介绍 无论是类里打断点、或者st05跟踪,或者是spro里找都 我这个badi比较简单,网上一搜或者群里一问大家都知道 ME_PROCESS_REQ_CUST 这里简单实现里面的check FM内具体代码见最后 这里说下不借助其他帮助的时候,怎么找到想要的方法,怎么找到需要的值 显示参数 双击进入im_header 一般都会有get_data....

森林木的博客 2396

不止于ME51N:深入SAP采购申请增强生态,从屏幕增强到BADI与审批流

本文深入解析SAP采购申请(ME51N/ME52N/ME53N)的增强生态,从屏幕增强到BADI与审批流,提供全面的技术选型指南。通过对比分析不同增强技术的适用场景和复杂度,帮助开发顾问构建面向企业复杂业务场景的系统级增强方案,提升采购流程的定制化能力。

weixin_33393017的博客 291

SAP ABAP ME21N ME_CHECK_ALL_ITEMS触发所有项目

抬头或者项目信息更改,触发所有项目更改或者校验。

SAP小趴菜 417

BAdIME_PROCESS_REQ_CUST弹出消息问题

增强场景:创建、修改采购申请me51n、Me52n)时,判断某些字段是否符合条件,不符合则提示系统消息。 使用BAdI增强方式:ME_PROCESS_REQ_CUST,SE19实现此BAdI,在check方法中增加代码,但是有一个问题,这个badi中使用message。。type 'W'或'E',在前台业务操作时都不会有消息出来,可SAVE成功。 查了一下资料,发现这个badi需要使用一个

少年休闲海 6050

不止于ME51N:解锁SAP采购申请增强的更多玩法与BADI应用

在SAP MM模块的日常运维中,采购申请(Purchase Requisition)作为供应链管理的起点,其定制化需求往往超出标准功能的边界。在实际项目中,我们曾遇到一个跨国企业的采购申请增强需求:需要在不同国家的子公司应用差异化的审批规则,同时保持核心字段的全球统一。通过组合使用BADI、User Exit和自定义表配置,最终实现了在单一客户端支持多国业务规则的灵活配置,将原本需要多套解决方案的需求整合为统一的增强框架。屏幕字段扩展只是增强的起点,真正的价值在于对业务规则的精确控制。

weixin_31235909的博客 235

超越ME51N:解锁SAP采购申请增强的3个高阶场景与实战代码

本文深入探讨了SAP采购申请增强的高阶场景,重点解析了ME51N屏幕增强的3个实战技巧:跨事务代码一致性架构、完整数据流设计和可维护增强架构。通过ABAP代码示例展示了状态感知控制、BAdI封装和领域模型等进阶方案,帮助开发者解决复杂业务场景下的采购申请增强挑战,提升系统可维护性和性能。

weixin_30835649的博客 165

SAP ME51N采购申请屏幕增强实战:手把手教你添加自定义页签与字段

本文详细介绍了SAP ME51N采购申请屏幕增强的实战操作,包括如何添加自定义页签与字段。通过MEREQ001二代增强案例,从需求分析、数据结构扩展、屏幕设计到数据持久化与校验逻辑,提供全流程指导。特别适用于需要扩展采购申请功能的SAP开发人员,帮助实现项目信息等自定义字段的高效管理。

weixin_28709649的博客 315

采购申请项目增强 ME51N 自定义字段( ALV项目中展示、编辑 ) && BAPI 传值

d.BADI: ME_PROCESS_REQ_CUST 、 方法:FIELDSELECTION_ITEM。b.程序SAPLMEGUI --屏幕3214、添加自定义字段。c.程序LMEMFSF0Z—FORM: LMEMFSF0Z。a.结构增加自定义字段(也可以插入CI_EBANDB)通过上述语句匹配自定义字段和元数据的关系。

i_o_i的博客 573

从零到一:实战ME5*N采购申请屏幕增强与字段扩展

本文详细介绍了如何在SAP系统中实现ME51N/ME52N/ME53N采购申请屏幕增强与字段扩展。通过二代增强方案(SMOD: MEREQ001),开发者可以安全地添加自定义字段、创建屏幕并实现数据交互,同时确保系统升级兼容性。文章包含技术实现步骤、数据交互逻辑及常见问题解决方案,是SAP开发人员的实用指南。

weixin_29876033的博客 238

SAP MM部分常用增强-ME21N-MIGO-MB1A

BADI-MB_CHECK_LINE_BADI-物料移动过账检查-V1.docx BADI-MB_MIGO_BADI_MIGO-采购订单收货交货单必输-V1.docx BADI-MB_MIGO_BADI-MIGO屏幕增强-V1.docx

星辰大海的博客 9208

SAP采购申请检查增强

实施PROCESS_ITEM方法。

duangww的博客 51

在 SAP S/4HANA Public Cloud 里给采购申请项目一个 Department 字段

摘要:本文探讨在SAP S/4HANA Cloud中为采购申请项目添加部门字段的解决方案。传统ECC系统中通过增强EBAN表的方式不再适用,应采用Cloud Extensibility的Custom Fields功能。关键点包括:部门字段需放在项目而非抬头级别以确保数据粒度;字段类型应选择Code List而非自由文本以避免数据污染;需维护标准化的部门代码表;要正确配置字段在UI、CDS视图和API中的可见性。这种方法符合Clean Core原则,能确保系统升级兼容性,同时满足采购分析、预算控制和审计需

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1465

部分常用BADI

BADI-ADDRESS_UPDATE-CRM服务商主数据字段必输控制增强-V1.docx BADI-ALERT_EXIT_LOCAL_PPF-CRM报价单审批Alert增强-V1.docx BADI-BADI_ACC_DOCUMENT_POST-会计凭证创建BAPI的增强-V1.docx BADI-BADI_CRM_BP_UIU_AUTHORITY-CRM客户主数据权限增强-V1.docx...

昊宇的笔记本 1802

SAP IDES 实战通关指南:从采购到付款流程掌握ERP核心操作

企业资源计划(ERP)系统通过集成业务流程和数据流,实现企业运营的自动化与可视化。其核心原理在于模块化设计,将财务、供应链、销售等职能串联,确保数据一致性。掌握ERP操作对于理解现代企业数字化运营至关重要,是提升业务流程效率的关键技术。在SAP生态中,IDES系统作为官方提供的模拟环境,集成了完整的跨国企业数据模型,为学习者提供了无风险的实战沙盘。通过执标准化的端到端业务流程,例如经典的采购到付款(P2P)流程,学习者可以深入理解事务代码(T-Code)的操作逻辑、前后环节的集成点以及后台数据表的关联。这

weixin_34081595的博客 417

SAP-ABAP:一次关于“交货日期”的增强需求:从复杂增强到标准功能的回归之旅

SAP采购申请交货日期需求的解决之旅:从技术增强到标准功能的回归 摘要:本文记录了一个关于SAP采购申请(PR)交货日期修改需求的全过程。初始方案考虑技术增强(如BADI、用户出口),但深入调查发现标准功能已支持通过物料主数据(MRP2视图中的"计划交货时间")自动计算交货日期。最终解决方案是培训用户维护物料主数据,实现了零代码的完美解决。文章还详细梳理了若需真正增强时可用的4种技术方案(包括推荐BADI ME_PROCESS_REQ_CUST),并总结了核心经验:理解标准逻辑优先于技术实现,增强应是最后选

baidu_35680696的博客 438

SAP MM模块业务流程

SAP MM

ABAPxiaobai的博客 2782
上一篇: SAP-Function_01
下一篇: CALL FUNCTION 'BAPI_PO_CREATE1' 相关报错
anchangong3418
博客等级 码龄10年 51粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值