BADI in ME21

Can any one tell me what are the BADIs available in ME21 transaction?
I need to do some screen modification in the table control in ME21 .
Regards,
Sujatha.

the BADIs in ME21 are
ME_PROCESS_REQ                          Enhancements for Processing Enjoy PReqs: Internal             
ME_PROCESS_PO_CUST                      Enhancements for Processing Enjoy Purchase Order: Customer    
ME_PROCESS_PO                           Enhancements for Processing Enjoy Purchase Order: Intern.     
ME_PROCESS_COMP                         Processing of Component Default Data at Time of GR: Customer  
ME_PO_SC_SRV                            BAdI: Service Tab Page for Subcontracting                     
ME_HOLD_PO                              Hold Enjoy Purchase Orders: Activation/Deactivation           
ME_GUI_PO_CUST                          Customer's Own Screens in Enjoy Purchase Order                
ME_DEFINE_CALCTYPE                      Control of Pricing Type: Additional Fields                    
ME_COMMTMNT_REQ_RE_C                    Check of Commitment Relevance of Purchase Requisitions        
ME_COMMTMNT_REQ_RELE                    Check of Commitment Relevance of Purchase Requisitions        
ME_PROCESS_REQ_CUST                     Enhancements for Processing Enjoy PReqs: Customer             
ME_PURCHDOC_POSTED                      Purchasing Document Posted                                    
ME_RELEASE_CREATE                       BAdI: Release Creation for Sched. Agreemnts with Rel. Docs    
ME_REQ_OI_EXT                           Commitment Update in the Case of External Requisitions        
ME_REQ_POSTED                           Purchase Requisition Posted                                   
ME_TAX_FROM_ADDRESS                     Tax jurisdiction code taken from address                      
ME_TRIGGER_ATP                          Triggers New ATP for Changes in EKKO, EKPO, EKPV              
MM_EDI_DELFOR_OUT                       Enhancements for IDoc Output of SA Releases: Internal         
MM_EDI_DESADV_IN                        Supplementation of Delivery Interface from Purchase Order     
MM_EDI_ORDERS_OUT                       Enhancements for IDoc Output of Purchase Order: Internal      
SMOD_MRFLB001                           Control Items for Contract Release Order                      
ME_COMMTMNT_PO_REL_C                    Check for Commitment-Relevance of Purchase Orders             
EXTENSION_US_TAXES                      Extended Tax Calculation with Additional Data                 
MEGUI_LAYOUT                            BAdI for Enjoy Purchasing GUI                                 
ME_ACTV_CANCEL_PO                       BAdI for Activating the Cancel Function at Header Level       
ME_BAPI_PR_CHANGE_01                    BAdI: Enjoy BAPIs for Purchase Requisitions (Method Change)   
ME_BAPI_PR_CHANGE_02                    BAdI: Enjoy BAPIs for Purchase Requisitions (Method Change)   
ME_BAPI_PR_CREATE_01                    BAdI: Enjoy BAPIs for Purchase Requisitions                   
ME_BAPI_PR_CREATE_02                    BAdI: Enjoy BAPIs for Purchase Requisitions (Method Create)   
ME_BSART_DET                            Change document type for automatically generated POs          
ME_CCP_ACTIVE_CHECK                     BAdI to check whether CCP process is active                   
ME_CCP_BESWK_AUTH_CH                    BAdI for authorization checks for procuring plant             
ME_CCP_DEL_DURATION                     Calc. of Delivery Duration in CCP Process (Not in Standard)   
ME_CHANGE_CHARACTER                     Customer-Specific Characteristics for Product Allocation
ME_CHECK_ALL_ITEMS                      Run Through Items Again in the Event of Changes in EKKO    
ME_CHECK_SOURCES                        Additional Checks in Source Determination/Checking         
ME_CIN_LEINRF2R                         BADI for CIN India - Delivery charges                      
ME_CIN_LEINRF2V                         BADI for LEINRF03 excise_invoice_details                   
ME_CIN_MM06EFKO                         Copy PO data for use by Country version India              
ME_CIP_ALLOW_CHANGE                     Configuration in Purchasing: Changeability Control         
ME_CIP_REF_CHAR                         Facilitates Reference Characteristics in Purchasing        
ME_COMMITMENT_STO_CH                    BadI for checking if commitments for STOs are active       
ME_COMMTMNT_PO_RELEV                    Check for Commitment-Relevance of Purchase Orders
Hi Also please find the following code useful to find the User Exits and BADIs for a Transaction
TABLES : TSTC,
TADIR,
MODSAPT,
MODACT,
TRDIR,
TFDIR,
ENLFDIR,
SXS_ATTRT ,
TSTCT.
DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA : FIELD1(30).
DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.
PARAMETERS : P_TCODE LIKE TSTC-TCODE,
P_PGMNA LIKE TSTC-PGMNA .
DATA wa_tadir type tadir.
START-OF-SELECTION.
IF NOT P_TCODE IS INITIAL.
SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
ELSEIF NOT P_PGMNA IS INITIAL.
TSTC-PGMNA = P_PGMNA.
ENDIF.
IF SY-SUBRC EQ 0.
SELECT SINGLE * FROM TADIR
WHERE PGMID = 'R3TR'
AND OBJECT = 'PROG'
AND OBJ_NAME = TSTC-PGMNA.
MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
IF SY-SUBRC NE 0.
SELECT SINGLE * FROM TRDIR
WHERE NAME = TSTC-PGMNA.
IF TRDIR-SUBC EQ 'F'.
SELECT SINGLE * FROM TFDIR
WHERE PNAME = TSTC-PGMNA.
SELECT SINGLE * FROM ENLFDIR
WHERE FUNCNAME = TFDIR-FUNCNAME.
SELECT SINGLE * FROM TADIR
WHERE PGMID = 'R3TR'
AND OBJECT = 'FUGR'
AND OBJ_NAME EQ ENLFDIR-AREA.
MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
ENDIF.
ENDIF.
SELECT * FROM TADIR INTO TABLE JTAB
WHERE PGMID = 'R3TR'
AND OBJECT in ('SMOD', 'SXSD')
AND DEVCLASS = V_DEVCLASS.
SELECT SINGLE * FROM TSTCT
WHERE SPRSL EQ SY-LANGU
AND TCODE EQ P_TCODE.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19) 'Transaction Code - ',
20(20) P_TCODE,
45(50) TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL.
WRITE:/(105) SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
Sorting the internal Table
sort jtab by OBJECT.
data : wf_txt(60) type c,
wf_smod type i ,
wf_badi type i ,
wf_object2(30) type C.
clear : wf_smod, wf_badi , wf_object2.
Get the total SMOD.
LOOP AT JTAB into wa_tadir.
at first.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 SY-VLINE,
2 'Enhancement/ Business Add-in',
41 SY-VLINE ,
42 'Description',
105 SY-VLINE.
WRITE:/(105) SY-ULINE.
endat.
clear wf_txt.
at new object.
if wa_tadir-object = 'SMOD'.
wf_object2 = 'Enhancement' .
elseif wa_tadir-object = 'SXSD'.
wf_object2 = ' Business Add-in'.
endif.
FORMAT COLOR COL_GROUP INTENSIFIED ON.
WRITE:/1 SY-VLINE,
2 wf_object2,
105 SY-VLINE.
endat.
case wa_tadir-object.
when 'SMOD'.
wf_smod = wf_smod + 1.
SELECT SINGLE MODTEXT into wf_txt
FROM MODSAPT
WHERE SPRSL = SY-LANGU
AND NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
when 'SXSD'.
For BADis
wf_badi = wf_badi + 1 .
select single TEXT into wf_txt
from SXS_ATTRT
where sprsl = sy-langu
and EXIT_NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
endcase.
WRITE:/1 SY-VLINE,
2 wa_tadir-OBJ_NAME hotspot on,
41 SY-VLINE ,
42 wf_txt,
105 SY-VLINE.
AT END OF object.
write : /(105) sy-ULINE.
ENDAT.
ENDLOOP.
WRITE:/(105) SY-ULINE.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No.of Exits:' , wf_smod.
WRITE:/ 'No.of BADis:' , wf_badi.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'No userexits or BADis exist'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'Transaction does not exist'.
ENDIF.
AT LINE-SELECTION.
data : wf_object type tadir-object.
clear wf_object.
GET CURSOR FIELD FIELD1.
CHECK FIELD1(8) EQ 'WA_TADIR'.
read table jtab with key obj_name = sy-lisel+1(20).
move jtab-object to wf_object.
case wf_object.
when 'SMOD'.
SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
when 'SXSD'.
SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
endcase.

Similar Messages

  • Query on  User-Exit or  BADI  For  ME21/ME21N

    HI All,
    I am working on purchase order release strategy.Version  4.7E
    The requirement is 'without reference to purchase requestion(PR) Purchase Order should not be created.
    Ifound out one badi-ME_PROCESS_PO_CUST and i have implemented it.
    It is working fine for ME21N transaction.
    But when i create PO through  me21 it is not being triggered.
    Can any body tell me suitable user-exit for this.
    Regards,
    Prasanth

    Transaction Code - ME21                     Create Purchase Order
    Exit Name           Description
    AMPL0001            User subscreen for additional data on AMPL
    LMEDR001            Enhancements to print program
    LMELA002            Adopt batch no. from shipping notification when posting a GR
    LMELA010            Inbound shipping notification: Transfer item data from IDOC
    LMEQR001            User exit for source determination
    LMEXF001            Conditions in Purchasing Documents Without Invoice Receipt
    LWSUS001            Customer-Specific Source Determination in Retail
    M06B0001            Role determination for purchase requisition release
    M06B0002            Changes to comm. structure for purchase requisition release
    M06B0003            Number range and document number
    M06B0004            Number range and document number
    M06B0005            Changes to comm. structure for overall release of requisn.
    M06E0004            Changes to communication structure for release purch. doc.
    M06E0005            Role determination for release of purchasing documents
    ME590001            Grouping of requsitions for PO split in ME59
    MEETA001            Define schedule line type (backlog, immed. req., preview)
    MEFLD004            Determine earliest delivery date f. check w. GR (only PO)
    MELAB001            Gen. forecast delivery schedules: Transfer schedule implem.
    MEQUERY1            Enhancement to Document Overview ME21N/ME51N
    MEVME001            WE default quantity calc. and over/ underdelivery tolerance
    MM06E001            User exits for EDI inbound and outbound purchasing documents
    MM06E003            Number range and document number
    MM06E004            Control import data screens in purchase order
    MM06E005            Customer fields in purchasing document
    MM06E007            Change document for requisitions upon conversion into PO
    MM06E008            Monitoring of contr. target value in case of release orders
    MM06E009            Relevant texts for "Texts exist" indicator
    MM06E010            Field selection for vendor address
    MMAL0001            ALE source list distribution: Outbound processing
    MMAL0002            ALE source list distribution: Inbound processing
    MMAL0003            ALE purcasing info record distribution: Outbound processing
    MMAL0004            ALE purchasing info record distribution: Inbound processing
    MMDA0001            Default delivery addresses
    MMFAB001            User exit for generation of release order
    MRFLB001            Control Items for Contract Release Order
    No of Exits:         35
    Transaction Code - ME21N                    Create Purchase Order
    Exit Name           Description
    AMPL0001            User subscreen for additional data on AMPL
    LMEDR001            Enhancements to print program
    LMELA002            Adopt batch no. from shipping notification when posting a GR
    LMELA010            Inbound shipping notification: Transfer item data from IDOC
    LMEQR001            User exit for source determination
    LMEXF001            Conditions in Purchasing Documents Without Invoice Receipt
    LWSUS001            Customer-Specific Source Determination in Retail
    M06B0001            Role determination for purchase requisition release
    M06B0002            Changes to comm. structure for purchase requisition release
    M06B0003            Number range and document number
    M06B0004            Number range and document number
    M06B0005            Changes to comm. structure for overall release of requisn.
    M06E0004            Changes to communication structure for release purch. doc.
    M06E0005            Role determination for release of purchasing documents
    ME590001            Grouping of requsitions for PO split in ME59
    MEETA001            Define schedule line type (backlog, immed. req., preview)
    MEFLD004            Determine earliest delivery date f. check w. GR (only PO)
    MELAB001            Gen. forecast delivery schedules: Transfer schedule implem.
    MEQUERY1            Enhancement to Document Overview ME21N/ME51N
    MEVME001            WE default quantity calc. and over/ underdelivery tolerance
    MM06E001            User exits for EDI inbound and outbound purchasing documents
    MM06E003            Number range and document number
    MM06E004            Control import data screens in purchase order
    MM06E005            Customer fields in purchasing document
    MM06E007            Change document for requisitions upon conversion into PO
    MM06E008            Monitoring of contr. target value in case of release orders
    MM06E009            Relevant texts for "Texts exist" indicator
    MM06E010            Field selection for vendor address
    MMAL0001            ALE source list distribution: Outbound processing
    MMAL0002            ALE source list distribution: Inbound processing
    MMAL0003            ALE purcasing info record distribution: Outbound processing
    MMAL0004            ALE purchasing info record distribution: Inbound processing
    MMDA0001            Default delivery addresses
    MMFAB001            User exit for generation of release order
    MRFLB001            Control Items for Contract Release Order
    no of Exits:         35
    USER EXIT
    http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm
    http://www.sapgenie.com/abap/code/abap26.htm
    http://www.sap-img.com/abap/what-is-user-exits.htm
    http://wiki.ittoolbox.com/index.php/HOWTO:Implement_a_screen_exit_to_a_standard_SAP_transaction
    http://www.easymarketplace.de/userexit.php
    http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm
    http://www.sappoint.com/abap/userexit.pdfUser-Exit
    http://www.sap-img.com/ab038.htm
    http://help.sap.com/saphelp_46c/helpdata/en/64/72369adc56d11195100060b03c6b76/frameset.htm
    http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm
    http://www.sap-img.com/abap/what-is-user-exits.htm
    http://expertanswercenter.techtarget.com/eac/knowledgebaseAnswer/0,295199,sid63_gci982756,00.html
    Rewards if useful.........
    Minal

  • Exit/badi for ME22 line item change

    hi gurus,
    pls mention any exit/badi for ME22 line item changes......

    Hi,
    Check below thread
    BADI in ME21
    Regards,
    Atish

  • User EXIT, BADI for T-code ME21n, ME21

    Hi Guru's,
    I have rquirement where for some company codes user dont want GR and GR based invoicing if net price for PO is less than 100 GBP as it is very small quantity.
    To achive this we have to uncheck Goods receipt check bax from tab 'Delivery'  and uncheck inv. receipt check box from tab 'Invoice' of item level view at the time of PO creation.
    Now, i am serching for User exit or BADI which will serve this purpose, as T-code ME21n is enjoy transaction for ME21 i dont think we will get any user exit, we have to do it through BADI.
    If anyone has done something like this and have idea how i can achive this please revert back.
    regards,
    Rahul

    http://www.erpgenie.com/sap/abap/code/abap26.htm
    which gives the list of exits for a tcode
    Below code will give a list of BADIs for particular transaction.
    *& Report  ZNEGI16                                                     *
    REPORT  ZNEGI16                                 .
    TABLES : TSTC,
    TADIR,
    MODSAPT,
    MODACT,
    TRDIR,
    TFDIR,
    ENLFDIR,
    SXS_ATTRT ,
    TSTCT.
    DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
    DATA : FIELD1(30).
    DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.
    PARAMETERS : P_TCODE LIKE TSTC-TCODE,
    P_PGMNA LIKE TSTC-PGMNA .
    DATA wa_tadir type tadir.
    START-OF-SELECTION.
    IF NOT P_TCODE IS INITIAL.
    SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
    ELSEIF NOT P_PGMNA IS INITIAL.
    TSTC-PGMNA = P_PGMNA.
    ENDIF.
    IF SY-SUBRC EQ 0.
    SELECT SINGLE * FROM TADIR
    WHERE PGMID = 'R3TR'
    AND OBJECT = 'PROG'
    AND OBJ_NAME = TSTC-PGMNA.
    MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
    IF SY-SUBRC NE 0.
    SELECT SINGLE * FROM TRDIR
    WHERE NAME = TSTC-PGMNA.
    IF TRDIR-SUBC EQ 'F'.
    SELECT SINGLE * FROM TFDIR
    WHERE PNAME = TSTC-PGMNA.
    SELECT SINGLE * FROM ENLFDIR
    WHERE FUNCNAME = TFDIR-FUNCNAME.
    SELECT SINGLE * FROM TADIR
    WHERE PGMID = 'R3TR'
    AND OBJECT = 'FUGR'
    AND OBJ_NAME EQ ENLFDIR-AREA.
    MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
    ENDIF.
    ENDIF.
    SELECT * FROM TADIR INTO TABLE JTAB
    WHERE PGMID = 'R3TR'
    AND OBJECT in ('SMOD', 'SXSD')
    AND DEVCLASS = V_DEVCLASS.
    SELECT SINGLE * FROM TSTCT
    WHERE SPRSL EQ SY-LANGU
    AND TCODE EQ P_TCODE.
    FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
    WRITE:/(19) 'Transaction Code - ',
    20(20) P_TCODE,
    45(50) TSTCT-TTEXT.
    SKIP.
    IF NOT JTAB[] IS INITIAL.
    WRITE:/(105) SY-ULINE.
    FORMAT COLOR COL_HEADING INTENSIFIED ON.
    Sorting the internal Table
    sort jtab by OBJECT.
    data : wf_txt(60) type c,
    wf_smod type i ,
    wf_badi type i ,
    wf_object2(30) type C.
    clear : wf_smod, wf_badi , wf_object2.
    Get the total SMOD.
    LOOP AT JTAB into wa_tadir.
    at first.
    FORMAT COLOR COL_HEADING INTENSIFIED ON.
    WRITE:/1 SY-VLINE,
    2 'Enhancement/ Business Add-in',
    41 SY-VLINE ,
    42 'Description',
    105 SY-VLINE.
    WRITE:/(105) SY-ULINE.
    endat.
    clear wf_txt.
    at new object.
    if wa_tadir-object = 'SMOD'.
    wf_object2 = 'Enhancement' .
    elseif wa_tadir-object = 'SXSD'.
    wf_object2 = ' Business Add-in'.
    endif.
    FORMAT COLOR COL_GROUP INTENSIFIED ON.
    WRITE:/1 SY-VLINE,
    2 wf_object2,
    105 SY-VLINE.
    endat.
    case wa_tadir-object.
    when 'SMOD'.
    wf_smod = wf_smod + 1.
    SELECT SINGLE MODTEXT into wf_txt
    FROM MODSAPT
    WHERE SPRSL = SY-LANGU
    AND NAME = wa_tadir-OBJ_NAME.
    FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    when 'SXSD'.
    For BADis
    wf_badi = wf_badi + 1 .
    select single TEXT into wf_txt
    from SXS_ATTRT
    where sprsl = sy-langu
    and EXIT_NAME = wa_tadir-OBJ_NAME.
    FORMAT COLOR COL_NORMAL INTENSIFIED ON.
    endcase.
    WRITE:/1 SY-VLINE,
    2 wa_tadir-OBJ_NAME hotspot on,
    41 SY-VLINE ,
    42 wf_txt,
    105 SY-VLINE.
    AT END OF object.
    write : /(105) sy-ULINE.
    ENDAT.
    ENDLOOP.
    WRITE:/(105) SY-ULINE.
    SKIP.
    FORMAT COLOR COL_TOTAL INTENSIFIED ON.
    WRITE:/ 'No.of Exits:' , wf_smod.
    WRITE:/ 'No.of BADis:' , wf_badi.
    ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(105) 'No userexits or BADis exist'.
    ENDIF.
    ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(105) 'Transaction does not exist'.
    ENDIF.
    AT LINE-SELECTION.
    data : wf_object type tadir-object.
    clear wf_object.
    GET CURSOR FIELD FIELD1.
    CHECK FIELD1(8) EQ 'WA_TADIR'.
    read table jtab with key obj_name = sy-lisel+1(20).
    move jtab-object to wf_object.
    case wf_object.
    when 'SMOD'.
    SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
    CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
    when 'SXSD'.
    SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
    CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
    endcase.
    It may help you.
    Best Regards,
    Vibha
    *Please mark all the helpful answers

  • User-exit or BADI in ME51 and ME21

    Hi Experts,
    Thanks for your interest in this question. I'd like to ask for your help in looking all possible user-exit and BADI triggered using transaction ME51 and ME21. Thanks again for your help!
    Best Regards,
    Randy

    Hi Randy,
    Copy this program in SE38 and execute. Will get all list of existing Exits and
    Badis for a particular Transaction code.
    very useful program
    Below code will give a list of BADIs for particular transaction.
    *& Report ZNEGI16 *
    REPORT ZNEGI16 .
    TABLES : TSTC,
    TADIR,
    MODSAPT,
    MODACT,
    TRDIR,
    TFDIR,
    ENLFDIR,
    SXS_ATTRT ,
    TSTCT.
    DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
    DATA : FIELD1(30).
    DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.
    PARAMETERS : P_TCODE LIKE TSTC-TCODE,
    P_PGMNA LIKE TSTC-PGMNA .
    DATA wa_tadir type tadir.
    START-OF-SELECTION.
    IF NOT P_TCODE IS INITIAL.
    SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
    ELSEIF NOT P_PGMNA IS INITIAL.
    TSTC-PGMNA = P_PGMNA.
    ENDIF.
    IF SY-SUBRC EQ 0.
    SELECT SINGLE * FROM TADIR
    WHERE PGMID = 'R3TR'
    AND OBJECT = 'PROG'
    AND OBJ_NAME = TSTC-PGMNA.
    MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
    IF SY-SUBRC NE 0.
    SELECT SINGLE * FROM TRDIR
    WHERE NAME = TSTC-PGMNA.
    IF TRDIR-SUBC EQ 'F'.
    SELECT SINGLE * FROM TFDIR
    WHERE PNAME = TSTC-PGMNA.
    SELECT SINGLE * FROM ENLFDIR
    WHERE FUNCNAME = TFDIR-FUNCNAME.
    SELECT SINGLE * FROM TADIR
    WHERE PGMID = 'R3TR'
    AND OBJECT = 'FUGR'
    AND OBJ_NAME EQ ENLFDIR-AREA.
    MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
    ENDIF.
    ENDIF.
    SELECT * FROM TADIR INTO TABLE JTAB
    WHERE PGMID = 'R3TR'
    AND OBJECT in ('SMOD', 'SXSD')
    AND DEVCLASS = V_DEVCLASS.
    SELECT SINGLE * FROM TSTCT
    WHERE SPRSL EQ SY-LANGU
    AND TCODE EQ P_TCODE.
    FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
    WRITE:/(19) 'Transaction Code - ',
    20(20) P_TCODE,
    45(50) TSTCT-TTEXT.
    SKIP.
    IF NOT JTAB[] IS INITIAL.
    WRITE:/(105) SY-ULINE.
    FORMAT COLOR COL_HEADING INTENSIFIED ON.
    Sorting the internal Table
    sort jtab by OBJECT.
    data : wf_txt(60) type c,
    wf_smod type i ,
    wf_badi type i ,
    wf_object2(30) type C.
    clear : wf_smod, wf_badi , wf_object2.
    Get the total SMOD.
    LOOP AT JTAB into wa_tadir.
    at first.
    FORMAT COLOR COL_HEADING INTENSIFIED ON.
    WRITE:/1 SY-VLINE,
    2 'Enhancement/ Business Add-in',
    41 SY-VLINE ,
    42 'Description',
    105 SY-VLINE.
    WRITE:/(105) SY-ULINE.
    endat.
    clear wf_txt.
    at new object.
    if wa_tadir-object = 'SMOD'.
    wf_object2 = 'Enhancement' .
    elseif wa_tadir-object = 'SXSD'.
    wf_object2 = ' Business Add-in'.
    endif.
    FORMAT COLOR COL_GROUP INTENSIFIED ON.
    WRITE:/1 SY-VLINE,
    2 wf_object2,
    105 SY-VLINE.
    endat.
    case wa_tadir-object.
    when 'SMOD'.
    wf_smod = wf_smod + 1.
    SELECT SINGLE MODTEXT into wf_txt
    FROM MODSAPT
    WHERE SPRSL = SY-LANGU
    AND NAME = wa_tadir-OBJ_NAME.
    FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    when 'SXSD'.
    For BADis
    wf_badi = wf_badi + 1 .
    select single TEXT into wf_txt
    from SXS_ATTRT
    where sprsl = sy-langu
    and EXIT_NAME = wa_tadir-OBJ_NAME.
    FORMAT COLOR COL_NORMAL INTENSIFIED ON.
    endcase.
    WRITE:/1 SY-VLINE,
    2 wa_tadir-OBJ_NAME hotspot on,
    41 SY-VLINE ,
    42 wf_txt,
    105 SY-VLINE.
    AT END OF object.
    write : /(105) sy-ULINE.
    ENDAT.
    ENDLOOP.
    WRITE:/(105) SY-ULINE.
    SKIP.
    FORMAT COLOR COL_TOTAL INTENSIFIED ON.
    WRITE:/ 'No.of Exits:' , wf_smod.
    WRITE:/ 'No.of BADis:' , wf_badi.
    ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(105) 'No userexits or BADis exist'.
    ENDIF.
    ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(105) 'Transaction does not exist'.
    ENDIF.
    AT LINE-SELECTION.
    data : wf_object type tadir-object.
    clear wf_object.
    GET CURSOR FIELD FIELD1.
    CHECK FIELD1(8) EQ 'WA_TADIR'.
    read table jtab with key obj_name = sy-lisel+1(20).
    move jtab-object to wf_object.
    case wf_object.
    when 'SMOD'.
    SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
    CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
    when 'SXSD'.
    SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
    CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
    endcase.
    <b>Reward points if this helps.
    Manish</b>

  • Exit/badi for Material group validation on service POs

    Hi Gurus,
    The requirement is to put validation on 'MATERIAL GROUP' at item level as well as service sub line item level.I have used EXIT_SAPMM06E_017 for line level validation.
    For service sub line level 'MATERIAL GROUP' i tried using EXIT_SAPLMLSP_030 but validation is not working properly as
    EXIT_SAPLMLSP_030 is triggered before EXIT_SAPMM06E_017.
    Kindly suggest any alternatives.
    Thanks in advance
    Deepika

    Hi,
    I had finally used BADI ME_PROCESS_PO_CUST method CHECK and PROCESS_ITEM for enjoy transactions i.e ME21N ME22N ME23N and written code in EXIT EXIT_SAPLMLSP_030 for service item validations.
    IF sy-tcode = 'ME21N' OR sy-tcode = 'ME22N' OR sy-tcode = 'ME23N' OR sy-tcode = 'MASS' OR sy-tcode = 'ME29N'.
        DATA: wa_zmm_mat_grp TYPE zmm_mat_grp.
        EXPORT header_data-aedat FROM header_data-aedat TO MEMORY ID 'ZDAT24933'.
        EXPORT header_data-bsart FROM header_data-bsart TO MEMORY ID 'ZBRT24933'.
        IF header_data-aedat GE '20090810'.         " Material group mandatory appplicable date.
          IF ( header_data-bsart = 'SRV' OR header_data-bsart = 'SRVF' OR header_data-bsart = 'SRVI') AND ( header_data-bsart NE ' ')  AND
             ( re_data-loekz EQ 'S' OR re_data-loekz EQ ' ' ).
            SELECT SINGLE  *  FROM zmm_mat_grp INTO wa_zmm_mat_grp WHERE matkl = re_data-matkl AND
                                                                         bsart = header_data-bsart.
            IF sy-subrc NE 0.
              MESSAGE e005(ze1).
            ENDIF.
          ENDIF.
          IF header_data-bsart IS NOT INITIAL.
            IF ( header_data-bsart NE 'SRV') AND ( header_data-bsart NE 'SRVF') AND ( header_data-bsart NE 'SRVI') AND
               ( re_data-loekz EQ 'S' OR re_data-loekz EQ ' ' ).
              SELECT SINGLE  *  FROM zmm_mat_grp INTO wa_zmm_mat_grp WHERE matkl = re_data-matkl.
              IF sy-subrc EQ 0.
                MESSAGE e006(ze1).
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    For service subline item following code:
    DATA: wa_zmm_mat_grp TYPE zmm_mat_grp,
          v_bsart TYPE ekko-bsart,
          v_packno TYPE esll-packno,
          v_ebeln TYPE ekpo-ebeln,
          v_aedat TYPE ekko-aedat.
    IF sy-tcode = 'ME21N' OR sy-tcode = 'ME22N' OR sy-tcode = 'ME23N' OR sy-tcode = 'MASS' OR sy-tcode = 'ME29N'.
      IF srv_esll-matkl IS NOT INITIAL.
        IMPORT header_data-bsart TO v_bsart FROM MEMORY ID 'ZBRT24933'.
        IMPORT header_data-aedat TO v_aedat FROM MEMORY ID 'ZDAT24933'.
        IMPORT re_data-bsart TO v_bsart FROM MEMORY ID 'ZBRT24933'.
        IMPORT re_data-aedat TO v_aedat FROM MEMORY ID 'ZDAT24933'.
        IF v_bsart IS INITIAL OR v_aedat IS INITIAL.
          SELECT SINGLE packno FROM esll INTO v_packno WHERE sub_packno = srv_esll-packno.
          IF sy-subrc EQ 0.
            SELECT SINGLE ebeln FROM ekpo INTO v_ebeln WHERE packno = v_packno.
            IF sy-subrc EQ 0.
              SELECT SINGLE bsart aedat FROM ekko INTO (v_bsart, v_aedat) WHERE ebeln = v_ebeln.
            ENDIF.
          ENDIF.
        ENDIF.
        IF v_aedat GE '20090810'.         " Material group mandatory appplicable date.
          IF ( v_bsart EQ 'SRV' ) OR ( v_bsart EQ 'SRVI' ) OR ( v_bsart EQ 'SRVF' ) AND ( v_bsart NE ' ' )
          AND srv_esll-del = ' '.
            SELECT SINGLE  *  FROM zmm_mat_grp INTO wa_zmm_mat_grp WHERE matkl = srv_esll-matkl AND
                                                                         bsart = v_bsart.
            IF sy-subrc NE 0.
              MESSAGE e005(ze1).
            ENDIF.
          ENDIF.
          IF ( v_bsart NE 'SRV' ) AND ( v_bsart NE 'SRVI' ) AND ( v_bsart NE 'SRVF' ) AND ( v_bsart NE ' ' )
          AND ( srv_esll-del = ' ').
            SELECT SINGLE  *  FROM zmm_mat_grp INTO wa_zmm_mat_grp WHERE matkl = srv_esll-matkl .
            IF sy-subrc EQ 0.
              MESSAGE e006(ze1).
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    ELSEIF sy-tcode = 'ME21' OR sy-tcode = 'ME22' OR sy-tcode = 'ME23'.
      IF srv_esll-matkl IS NOT INITIAL.
        IMPORT i_ekko-bsart TO v_bsart FROM MEMORY ID 'ZPOT24933'.
        IMPORT i_ekko-aedat TO v_aedat FROM MEMORY ID 'ZDTA24933'.
        IF v_bsart IS INITIAL OR v_aedat IS INITIAL.
          SELECT SINGLE packno FROM esll INTO v_packno WHERE sub_packno = srv_esll-packno.
          IF sy-subrc EQ 0.
            SELECT SINGLE ebeln FROM ekpo INTO v_ebeln WHERE packno = v_packno.
            IF sy-subrc EQ 0.
              SELECT SINGLE bsart aedat FROM ekko INTO (v_bsart, v_aedat) WHERE ebeln = v_ebeln.
            ENDIF.
          ENDIF.
        ENDIF.
        IF v_aedat GE '20090810'.         " Material group mandatory appplicable date.
          IF ( v_bsart EQ 'SRV' ) OR ( v_bsart EQ 'SRVI' ) OR ( v_bsart EQ 'SRVF' ) AND ( v_bsart NE ' ' )
          AND srv_esll-del = ' '.
            SELECT SINGLE  *  FROM zmm_mat_grp INTO wa_zmm_mat_grp WHERE matkl = srv_esll-matkl AND
                                                                         bsart = v_bsart.
            IF sy-subrc NE 0.
              MESSAGE e005(ze1).
            ENDIF.
          ENDIF.
          IF ( v_bsart NE 'SRV' ) AND ( v_bsart NE 'SRVI' ) AND ( v_bsart NE 'SRVF' ) AND ( v_bsart NE ' ' )
          AND ( srv_esll-del = ' ').
            SELECT SINGLE  *  FROM zmm_mat_grp INTO wa_zmm_mat_grp WHERE matkl = srv_esll-matkl .
            IF sy-subrc EQ 0.
              MESSAGE e006(ze1).
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.
    hope this will help u.

  • BAPI Check in BADI Implementation

    Dear All,
    We have made an enhancement through BADI in ME21N / ME22N transaction like validating certain entries, in that I am checking the t-codes ME21, ME21N, ME22 and ME22N. If it fails then PO wonu2019t create and populate some messages.
    Now there is one custom program which creating POu2019s through calling BAPI in the program and itu2019s not validating the above as its calling through custom program.
    (i.e  SY-TCODE eq SE38)
    Now how I should put a condition on BAPI in my BADI implementation?? If it is normal user exit, we can use runtime structure T158 and check the TCODE in that. But as I am using the BADI ME_PROCESS_PO_CUST with the method CHECK doesnu2019t have any transaction code info.
    And currently I have an idea of using the GET / SET Parameters and need to set in the custom program and get that info in BADI? But I donu2019t know whether this idea good or not?? If anyone has any idea please let me know?
    Thanks,
    Raghu.

    Hi Raghu,
    If sy-tcode ne 'ME21'
    and sy-tcode ne 'ME21N'...
    IMPORT lv_data ....
    do processing...
    endif.
    Best regards,
    Prashant

  • I want to enhance screen using BADI

    hello sap guru
    i want to enhance screen using BADI.can i enhace screen with out using SPRO transaction? is abap consultant have authorization for SPRO trasaction?

    Hi Swamy,
    You can do the same without SPRO configuration.
    For example for purchase order screen exit there will be no configuration required in SPRO.
    Basically the main difference in scenarios come depending on the type of transactions using.
    For example when using master data transactions such as MM01,XD01 etc we do have configurations do be done in SPRO.
    But while using transactional data transactions such as VA01,ME21 etc we can do directly without any configurations by using customer exits such as MM06E005(for me21n).
    Why this difference occurs i also dont know.I thought it would be of some useful to you to some extent.Do share if you find why this difference occurs.
    Have a nice day.
    Thanks,
    Surya

  • BADI deactivation in ECC6.0

    Hi, I have a badi based on the definition 'ME_PROCESS_PO_CUST' in ECC6.0.  I had to migrate it to the new enhancement point during our recent upgrade from 4.7.  The BADI is called correctly and all our code contained within works well.  However, when I deactivated it, which it did without an issue, it is still called from the SAP transaction in question, in this case ME21/2n.  The enhancement implementation says it's inactive, the runtime behaviour tab says it's inactive however the badi is executed every time that part of the code is called.  Does anyone know why this is happening?
    Thanks,
    Kevin

    I solved this one on my own.  In ECC6.0 it seems that in addition to deactivating your own implementation in SE19 it is also necessary to do the same in SE18 under the enhancement implementations.
    Kevin

  • Suitable Exit/BADI for populating Requirement Tracking Number in PO and PR

    Hi all,
    I need help from you all. I need a single exit or badi which will trigger before saving any PO or PR while creating.
    For PO, it should handle 3 possible cases.
    1. Tcode : ME21
    2. Tcode : ME21N
    3. BAPI function module (Ex: BAPI_PO_CREATE1)
    For PR, it should also handle 3 possible cases
      1. Tcode : ME51
      2. Tcode : ME51N
      3. BAPI function module (Ex: BAPI_PR_CREATE)
    I need to populate Requirement Tracking Number (BEDNR) field in the line item from a custom number range object and also have to update a custom table.
    Please suggest...
    Raj

    Hi
    <b>At runtime, you will get the GUID in the BADI Interface.</b>
    Incase this BADI does not help, go for another BADI
    1) <u>BBP_SEND_MEDIUM_MODE</u>     
    (Determines the Default Settings for the Send Medium)
    2) '<u>BBP_OUTPUT_CHANGE_SF'</u>.
    <u>Here are some related links -></u>
    Re: PO output medium issue
    Re: SRM PO SMARTFORM
    Re: Control PO output to vendor
    Re: Add a Printer ?  -> LP01
    Hope this will help.
    Regards
    - Atul

  • Need a Exit to default price data for ME21/ME21N

    Hi Experts,
    I need a exit for tcodes ME21/ME21N to default item price data when they create a Purchase order and pop-up a error message if they manually change the price and try to save the purchase order.
    I tried to find a exit using SMOD but couldn't figure out which one would be suitable.
    Please  give your valuable suggestions.
    Thanks in advance,
    Kishore

    Hi Asik,
    Thanks for your reply.
    I am working in version 4.7 and i am not able to view the badi in SE18 is it because of the version difference...which i am not sure abt.
    Can u suggest me any exits if available for my requirement.
    Regards,
    Kishore

  • Error in ME21  (by User Exit MM06E005 in ME21N)

    Hi All,
      I am implimenting '<b>MM06E005</b>' User-Exit in <b>ME21N</b>.
    I am using "<b>EXIT_SAPMM06E_006</b>" Function Exit.
    I write following code in it:-
    *&  Include           ZXM06U36
    IF SY-TCODE = 'ME21N'.
    LOOP AT TEKPO.
      IF TEKPO-KNTTP = 'A'.
       IF TEKPO-MENGE <> '1'.
        MESSAGE 'Correct Quantity to 1' TYPE 'E'.
       ENDIF.
      ENDIF.
    ENDLOOP.
    ENDIF.
    I do not want to impliment SAPMM06E Screen Exit. This is activated when above Exit is activate.
    Now when i use T.Code ME21N , I get correct results.
    <b>But when i use T.Code ME21, after entring data in first screen & press enter , i get  "<u>Runtime error DYNPRO_NOT_FOUND has occurred</u>" error.</b>
    <u>If i deactivate the above user exit, then there is no error in ME21.</u>
    <b>Please guide me how i impliment this exit or other exit for ME21N so that i will not get any error in ME21.</b>
    Regards
    Umesh

    Hi Umesh!
    Try to implement BADI ME_PROCESS_PO_CUST instead. This is for enhancements of the enjoy transaction. I fear, the old exits aren't called under every circumstance.
    If you need exits in both transactions, then implement SMOD exits, too - but a different one (without dynpro extension).
    Regards,
    Christian

  • Holding a PO in ME21

    Hi!
    Please look at the following business scenario.
    A PO is created using the transaction ME21. Now if a particular check fails for any item in the purchase order, I am supposed to put the PO on hold status/ block it somehow and update a custom table with the held PO number.
    Now here is my issue.
    After hunting around for quite a bit, I found out that  in ME21N the PO can be held using the check method of the badi ME_PROCESS_CUST by setting the ch_failed flag. However, I am supposed to use ME21 transaction and not the enjoy transaction, as it is a third party order. In case of ME21 this badi will not be triggered at all. I have looked around for quite some time and I am not able to find it.
    Can someone tell me of any user exit/ badi/ form exit for me to achieve the same? Please not that a PO number must be generated and I should not simply throw an error message to the user.

    Hi,
    Try this code..I have used memory pointers....
    In the userexit EXIT_SAPMM06E_012
    DATA lwa_ekpo LIKE bekpo.
    data lw_field(50).
    FIELD-SYMBOLS <t_xekpo> TYPE STANDARD TABLE.
    IF sy-tcode = 'ME21'.
      lw_field = '(SAPLMEPO)POT[]'.
      ASSIGN (lw_field) TO <t_xekpo>.
      if sy-subrc ne 0.
        lw_field = '(SAPMM06E)POT[]'.
        ASSIGN (lw_field) TO <t_xekpo>.
       if sy-subrc <> 0.
         message e208(00) 'Couldn't find POT'.
       endif.
      endif.
      loop at <t_xekpo> into lwa_ekpo.
    Check the conditions..
    example..
    <b>    if lwa_ekpo-menge > '100.000'.
    Block the PO line item..
          lwa_ekpo-loekz = 'S'.
          MODIFY <t_xekpo> from lwa_ekpo transporting loekz.
        endif.</b>
      endloop.
    ENDIF.
    Hope this helps..
    Thanks,
    Naren

  • ME21 User Exit to check/validate WEPOS field

    We want to use ME21 transaction for simple purchasing
    We want to build a small enhancement to check the GR indicator (WEPOS) based upon a threshold order value
    Does anyone know a user exit, badi or alternative that will allow us to import and export this value?
    Thanks
    Steve

    Dear Steve,
    If there's a requirement to change the indicator agains a specific condition, you can define the condition in the exit, then create a Z* program that contrain a BDC of change PO (ME22), and in the Z* program you can check to the exit condition, if its meet than the GR indicator can be unticked, cause you'll need also to check , whether GR has take place for the PO or not and other condition, so you need to things to do.
    1. add condition logic in the exit
    2. create a Z* program to change the WEPOS flag(using BDC code ME22--> its more recommend cause you use the standard SAP trx) and you can schedule the Z* program to run background.
    Regards,
    w1n

  • Address_subscreen badi

    hi everybody,
    i wan't to put in not editable state the e-mail field of the vendor address in the me21 transaction.
    i think i have to develop the address_subscreen badi, but when i try to activate the new implementation it says that there are already implementacions for these filter values.
    if i go to the se80 i can see that there's a class called cl_def_im_address_subscreen that implements this badi.
    Here is my doubt.
    ¿Do i have to modify the standard to develop this functionality?
    Thanks

    cl_def_im_address_subscreen is only a sap default class that you can use for creating your own implementation. If you want to see the existing implementations, transaction SE18, enter Classic BAdI ADDRESS_SUBSCREEN and click menu enhancement implementation, overview. Check if the existing implementation corresponds to a custom implementation (then you can modify it), or to a sap or partner product (then you can't modify it, or you can use the enhancement framework to enhance it).

Maybe you are looking for