SAP MM01 User exit

SAP MIGO/MB01过账时,这3个BAdI和4个User Exit千万别错过(附实战代码片段) 本文深入解析SAP物料凭证过账(MIGO/MB01)中的3个关键BAdI和4个经典User Exit,提供实战代码片段和应用场景分析。涵盖MB_MIGO_BADI、MB_DOCUMENT_BADI等增强点的使用技巧,帮助开发者解决定制化需求,提升SAP MM模块的运维效率。 阅读详情

*&---------------------------------------------------------------------*
*&  Include           ZXMG0U02
*&---------------------------------------------------------------------*
DATA: WA_MARC TYPE MARC,
      L_MATNR 
TYPE MARA-MATNR,
*      l_str TYPE n LENGTH 2,    "Mark by Lisa wong 02/04/2013
      L_
STR1(1TYPE C,           "Add by Lisa wong 02/04/2013
      L_
STR2(1TYPE C,           "Add by Lisa wong 02/04/2013
      L_
FLAG(1TYPE C,           "Add by Lisa wong 02/04/2013
      L_
CNT TYPE N,               "Add by Lisa Wong 02/04/2013
      L_PEINH 
TYPE MBEW-PEINH,
      CH1 
TYPE CHAR01,
      CH2 
TYPE CHAR01,
      CH3 
TYPE CHAR11,
      CH4 
TYPE CHAR11,
      CH5 
TYPE CHAR03,
      CH6 
TYPE CHAR03,
      L_PSTAT 
TYPE PSTAT_D.

***********************************************  add by jack   Not allow discontinuation date as past
IF WMARC-KZAUS '1' OR WMARC-KZAUS '2' .
  
IF WMARC-AUSDT < SY-DATUM AND WMARC-NFMAT <> SPACE .
    
MESSAGE 'Invalid effective out-date' TYPE 'E' .
  
ENDIF .
ENDIF .
***********************************************

*********************** add by agateliu check exist in table zhscode_01
IF SY-TCODE 'MM01' OR SY-TCODE 'MM02'.
  
DATA: L_ZSTAWN LIKE ZHSCODE_01-ZSTAWN.
  
IF WMARC-WERKS IS NOT INITIAL.
    
SELECT SINGLE ZSTAWN INTO L_ZSTAWN
        
FROM ZHSCODE_01
        
WHERE ZSTAWN WMARC-STAWN+0(4)
         
AND MTVER WMARC-MTVER.
    
IF SY-SUBRC <> 0.
*      message e030(zwf) with wmarc-stawn wmarc-mtver.
    
ENDIF.
  
ENDIF.
ENDIF.

DATA: EXP_AUSP TYPE TABLE OF AUSP.
DATA: WA_AUSP LIKE LINE OF EXP_AUSP.
DATA: L_CUST TYPE KNA1-KUNNR.
DATA: L_PROJ TYPE CHAR20.
DATA: L_OBJ TYPE  AUSP-OBJEK.
DATA: L_ATINN1 LIKE CABN-ATINN,
      L_ATINN2 
LIKE CABN-ATINN.
L_
OBJ WMARA-MATNR.
CALL FUNCTION 'CLFM_GET_AUSP_FROM_BUFFER'
  
EXPORTING
    OBJECT    
L_OBJ
    CLASSYTPE 
'001'
  
TABLES
    EXP_AUSP  
EXP_AUSP.
SELECT SINGLE ATINN INTO L_ATINN1
     
FROM CABN
     
WHERE ATNAM 'ZEND_CUSTOMER'.

SELECT SINGLE ATINN INTO L_ATINN2
   
FROM CABN
  
WHERE ATNAM 'ZPROJ'.

LOOP AT EXP_AUSP INTO WA_AUSP.

  
IF WA_AUSP-ATINN L_ATINN1.    "end_customer
    L_CUST 
WA_AUSP-ATWRT.
  
ENDIF.

  
IF WA_AUSP-ATINN L_ATINN2.
    L_PROJ 
WA_AUSP-ATWRT.        "project
  
ENDIF.
ENDLOOP.

*  IF L_CUST IS INITIAL.
*    MESSAGE E023(zwf).
*  ENDIF .
*
*  if l_proj is initial.
*    message e024(zwf).
*  endif.

***BEGIN ADD BY AGATE  物料状态默认为99
*  Add by Lisa Wong 10/13/2012 start  RESERVE ON 10/15/2012
IF WSTAT-AKTYP 'H'.
  
"If material was created, then do not trigger workflow again.
  
"To avoid copy material to anther plant
  
SELECT SINGLE INTO WA_MARC FROM MARC WHERE MATNR WMARA-MATNR.
  
IF SY-SUBRC <> 0.
    CMARA
-MSTAE '99'.
  
ENDIF.

  
"Logcal group no AVL
  
IF WMARA-MTART 'ZLGP'.
    CMARA
-MFRNR ''.
    CMARA
-MFRPN ''.
  
ENDIF.
ENDIF.

**  Add by Lisa Wong 10/13/2012 End
*** END

***********************************************  add by Ronnie 20120927
*************Request from yuker,need checking the manufact.
IF SY-TCODE 'MM01' OR SY-TCODE 'MM02'.

  
IF WMARA-MFRNR <> ''.
    
DATA:L_KTOKK LIKE LFA1-KTOKK.
    
SELECT SINGLE KTOKK INTO L_KTOKK FROM LFA1
      
WHERE LIFNR WMARA-MFRNR
      
AND KTOKK 'MNFR'.
    
IF SY-SUBRC <> 0.
      
MESSAGE 'Please check manufacturer account group in the purchasing view.' TYPE 'E'.
    
ENDIF.
  
ENDIF.

  
SELECT SINGLE PSTAT INTO L_PSTAT FROM T134 WHERE MTART WMARA-MTART.
  
IF SY-SUBRC 0.
    
IF 'GX' CA L_PSTAT.

      
IF WMARC-WERKS '8101' OR WMARC-WERKS '8191'.
        
IF WMARC-PRCTR <> '0000800010'.
          
MESSAGE 'please check the Profit Center for this plant' TYPE 'E'.
        
ENDIF.
      
ENDIF.

      
IF WMARC-WERKS '8201' OR WMARC-WERKS '8291'.
        
IF WMARC-PRCTR <> '0000800020'.
          
MESSAGE 'please check the Profit Center for this plant' TYPE 'E'.
        
ENDIF.
      
ENDIF.

      
IF WMARC-WERKS '8301' OR WMARC-WERKS '8391'.
        
IF WMARC-PRCTR <> '0000800030'.
          
MESSAGE 'please check the Profit Center for this plant' TYPE 'E'.
        
ENDIF.
      
ENDIF.

    
ENDIF.
  
ENDIF.

ENDIF.
***********************************************

"----------
*********************************************** Add by Wallace
IF SY-TCODE EQ 'MM01' OR SY-TCODE EQ 'MM02'.
  
IF WMARA-MTART EQ'ZRAW' OR
    WMARA
-MTART EQ 'ZCCM' OR
    WMARA
-MTART EQ 'ZSUB' OR
    WMARA
-MTART EQ 'ZPCK' OR
    WMARA
-MTART EQ 'ZNON' OR
    WMARA
-MTART EQ 'ZINT'.
    L_
STRWMARA-MATNR+13(1).   " Lisa 02/04/2013
    L_
STRWMARA-MATNR+14(1).   " Lisa 02/04/2013
    L_
FLAG 'X'.                 " Lisa 02/04/2013
    L_
CNT 0.                    " Lisa 02/04/2013
    
IF L_STR1 >= '0' AND L_STR1 <= '9' AND L_STR2 >= '0' AND L_STR2 <= '9'.    "Lisa 04/03/2013

      
SELECT MATNR INTO L_MATNR FROM MARA
        
WHERE MFRPN WMARA-MFRPN
          
AND MFRNR WMARA-MFRNR
          
AND LVORM ''.
        
IF L_MATNR NE WMARA-MATNR.
          CH1 
L_MATNR+11.
          CH2 
WMARA-MATNR+11.
          CH3 
L_MATNR.
          CH4 
WMARA-MATNR.
          CH5 
L_MATNR+12.
          CH6 
WMARA-MATNR+12.
          L_
STRL_MATNR+13(1).       "Lisa 04/03/2013
          L_
STRL_MATNR+14(1).       "Lisa 04/03/2013
          L_
CNT 1.
          L_
FLAG 'X'.
          
IF CH3 EQ CH4 AND CH5 EQ CH6 AND CH1 NE CH2 OR L_STR1 > '9' AND L_STR2 > '9'.
            L_
FLAG ''.
            L_
CNT 0.
          
ELSE.
            
IF L_STRGE '0' AND L_STRLE '9' OR  L_STRGE '0' AND L_STRLE '9'.
*            MESSAGE 'There is same Mfr Part Number and Manufact. in database' TYPE 'E'.
              
exit.
            
ENDIF.
          
ENDIF.
        
ENDIF.
      
ENDSELECT.
      
IF L_FLAG 'X' AND L_CNT <> 0.
        
MESSAGE 'There is same Mfr Part Number and Manufact. in database' TYPE 'E'.
      
ENDIF.
    
ENDIF.
  
ENDIF.
  
CLEAR L_PEINH.
  
IF WMBEW-MATNR IS INITIAL.
    
SELECT PEINH
      
INTO L_PEINH
      
FROM MBEW
      
WHERE MATNR WMARA-MATNR.
      
IF L_PEINH NE 1000.
        
MESSAGE 'Price unit should be 1000' TYPE 'E'.
      
ENDIF.
    
ENDSELECT.
  
ELSE.
    
IF WMBEW-PEINH NE 1000.
      
MESSAGE 'Price unit should be 1000' TYPE 'E'.
    
ENDIF.
  
ENDIF.
** Add by Lisa wong 01/10/2013  ZVFG/ZOTH/Bukly material not need to check backflush
  
IF WMARA-MTART <> 'ZVFG' AND WMARA-ILOOS <> 'X' AND WMARA-MTART <> 'ZOTH'.
    
IF WMARC-RGEKZ ''.
      
MESSAGE 'Pls input backflush in MRP2' TYPE 'E'.
    
ENDIF.
  
ENDIF.
ENDIF.
**********************************************

 

 

*&---------------------------------------------------------------------*
*&  Include           ZXMG0U04
*&---------------------------------------------------------------------*
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(MMUE1) LIKE  MMUE1 STRUCTURE  MMUE1
*"       CHANGING
*"             VALUE(MATNR) LIKE  MARA-MATNR
*"----------------------------------------------------------------------


Data: int type i.

Int 
strlenmatnr ).

if int < 15.
   
Message 'Material number must be 18 digits long!!' type 'E'.
endif.

不止于财务:解锁SAP确认/替代功能(OB28/GGB0)在全模块的应用实战 本文深入探讨SAP系统中确认/替代功能(OB28/GGB0)的全模块应用,突破传统财务模块限制,实现在采购、销售、人力资源等业务场景的数据质量管控。通过配置而非开发的方式,企业可建立标准化、可复用的预校验机制,显著降低数据错误率并减少定制开发需求。 阅读详情

相关推荐

SAP 增强—第一代增强User exit

增强 是针对SAP标准功能的扩展,关键字:源码、增强点(并不是可以随意增强,而是SAP预留的) 1、基于SAP源代码的增强,第一代增强 对SAP所预留的空的子过程进行编码,用户可以编辑此子过程,并在这个子过程中添加自定义的代码,以增加SAP标准程序的控制功能 2、基于函数的增强,第二代增强 SAP为此类出口提供了相应的函数,依据函数结构指定的传入/传出参数,程序执行时,调用该函数并检查相应的代码 3、SAP BADI(Business Add-in),第三代增强 使用面向对象的方式实现增强

willieyuan的博客 3409

SAP 物料主数据MM01 MM02 出口程序

出口函数:EXIT_SAPLMGMU_001 出口程序:ZXMG0U02 DATA V_FLAG_BRGEW TYPE C . DATA V_FLAG_NTGEW TYPE C . DATA WA_CDPOS LIKE CDPOS . DATA V_OBJECTID LIKE CDPOS-OBJECTID . DATA WA_MARA LIKE MARA . DATA WA_MEINH LIKE SMEINH . DATA WA_MARM LIKE MARM . IF WMBEW-B...

李威威wiwi的博客 1375

SAP财务顾问必备:深入理解Validation与Substitution的底层逻辑与高级用法(含User Exit

本文深入解析SAP财务顾问必备技能Validation与Substitution的底层逻辑与高级用法,包括数据校验和转换的核心架构、实战配置技巧及用户出口开发。通过详细案例和性能优化策略,帮助财务顾问掌握业务规则自动化与数据质量控制的关键技术,提升SAP FI/CO模块的实施效率。

weixin_26965807的博客 322

SAP MM01 User Exit

*&---------------------------------------------------------------------* *&  Include           ZXMG0U02 *&---------------------------------------------------------------------* DATA: WA_MARC TYPE M

695

MM01创建物料主数据屏幕增强

业务场景:MM01/MM02/MM03操作物料主数据时,在基本数据1视图中新增两个字段:旧物料号、基本单位。 1、创建增强2个字段所需的子屏幕 OMT3C(spro->Logistics-General -> Material Master -> Configuring the material master and execute ‘Create Program for Customiz

超人的博客 2983

201702-增强记

1. MM01/MM02/MM03 物料主数据增强 Exit Name Description MGA00001 物料主文档(工业):校验与增强 SMOD MGA00001 INCLUDEZXMG0U02. FUNCTION EXIT_SAPLMGMU_001. *"------------------------------------------------...

anchangong3418的博客 366

MM物料主数据 增强的地方 user-exit MGA00001

MGA00001      物料主文档(工业):校验与增强 *&---------------------------------------------------------------------* *&  包括                ZXMG0U02 *&---------------------------------------------------------

SAP Consultant - Improve myself everyday 每天进步一点 5319

【ABAP系列】SAP VA01屏幕增强(user-exit

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:【MM系列】SAP VA01屏幕增强(user-exit) 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。 正文部分 user-exitEXIT_SAPMV45A_003 转载于:h...

ARICK2014的博客 1074

MM系列】SAP 物料凭证增强

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:【MM系列】在SAP里查看数据的方法 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。 正文部分   BADI:MB_DOCUMENT_BADI   USER-EXIT:MBCF0002   实...

weixin_30892037的博客 811

SAP-MM常用增强之物料凭证

则根据采购订单找到库存地点,讲库存地点描述替代到物料凭证的收货方。检查原始单据工厂和库存地点与物料凭证的工厂和库存地点一致。当参照预留过帐时,检查填入数量是否小于预留数量。,特殊库存标识变成灰,工厂变成灰。实现功能:如果移动类型是。实现功能:如果移动类型是。实现功能:如果移动类型是。的时候,库存地点只能是。时间小于预留需求日期。,特殊库存标识必须是。实现功能:移动类型是。

u012830826的博客 683

ALE 物料主数据字段选择,MAL1、MAL2 与 MM01MM02 背后的控制逻辑

摘要:SAP物料主数据分发(ALE)中最容易被忽视的问题不是IDoc配置错误,而是字段是否可被写入。系统会像标准事务(MM01/MM02)一样执行检查,包括字段状态和必填校验。关键点在于ALE使用独立的事务引用(MAL1/MAL2),与在线维护(MM01/MM02)分离,可分别设置字段控制规则。当WE02显示字段有值但未更新时,需检查接收系统对应事务(MAL1/MAL2)的字段状态配置,而非仅排查IDoc传输。必填字段检查适用于所有维护方式(包括ALE),历史数据可能因新增必填要求而无法传输。

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

MM采购订单的增强user-exit:MM06E005(示例程序是下PO做成本MR21)

MM06E005      在采购凭证中的客户字段 EXIT_SAPMM06E_017 *&---------------------------------------------------------------------* *&  包括                ZXM06U42 *&-------------------------------------------

SAP Consultant - Improve myself everyday 每天进步一点 5497

SAP物料主数据维护避坑指南:为什么你的MM03总显示不全物料组?

本文深入剖析了SAP系统中MM03事务码物料组显示不全的常见原因与系统性排查方法。文章指出,问题根源远不止个人列表收藏,更可能涉及物料类型与物料组的配置关联、物料组主数据状态、搜索帮助配置、用户权限及系统增强等多个层面。通过从用户端到系统端的完整诊断流程,帮助用户精准定位问题,提升SAP物料主数据维护效率。

weixin_29310631的博客 283

cj20n sap 报错未知列的名称_SAP模块常用增强总结

MM模块:采购订单增强:BADI :ME_GUI_PO_CUSTME_PROCESS_PO_CUST物料凭证增强:BADI:MB_DOCUMENT_BADIUSER-EXIT:MBCF0002实现功能1、当参照预留过帐时,检查填入数量是否小于预留数量2、移动类型是***的时候,查看RSNUM是否为空3、检查原始单据工厂和库存地点与物料凭证的工厂和库存地点一致MBCF0009实现功能1、当移动类型是...

weixin_39702714的博客 511

【ABAP系列】SAP ABAP 物料凭证增强

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:【ABAP系列】SAP ABAP 物料凭证增强 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。 正文部分   BADI:MB_DOCUMENT_BADI   USER-EXIT:MBC...

ARICK2014的博客 1078

SAP模块常用增强总结

SPOT是ENHANCEMENT-POINT FUSSZEILE_WE_01 SPOTS ES_SAPMM07M.实现功能:如果移动类型是***,且特殊库存标志是*,库存地点只能是****SPOT是ENHANCEMENT-POINT KONTIERUNG_INIT_01 SPOTS ES_SAPMM07M.实现功能:如果移动类型是***,特殊库存标识变成灰,工厂变成灰。FUNCTION:EXIT_SAPLCNAU_001 PS的权限检查 注意sap_x_actvt这个参数要打。

SAP ABAP开发技能记录分享 838

sap 分摊分配不产生会计凭证的原因_MM 物料凭证没有产生相应的会计凭证...

作者:ChampaignWolf 编辑:SAP全球顾问云之家在物料凭证过账(入出库处理,物料转储处理)时,如果产生了相应借贷金额的变化,系统会自动产生相应的会计凭证。有许多用户发现系统中有时会出现物料凭证产生了会计凭证没有产生,或者是相反会计凭证产生了物料凭证却丢失了的现象。在物料分类总帐被启用的情况下,系统会报错C+048,相关物料的入出库移动因为此错误而不能进行。由此会对业务产...

weixin_39928787的博客 876
上一篇: SAP CC01 User exit
下一篇: SAP初学者如何选择适合自己的模块
yong325
博客等级 码龄15年 104粉丝 372原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值