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,
PrasanthTransaction 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,
Rahulhttp://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,
RandyHi 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
DeepikaHi,
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,
KevinI 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...
RajHi
<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,
KishoreHi 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
UmeshHi 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 -
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
SteveDear 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 -
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?
Thankscl_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
-
The screen on my iPhone 4s is not working it's just black & won't reboot?
The screen on my iPhone 4s is not working it's just black & won't reboot?
-
How do I fix the orientation of a desktop background photo?
I have a bunch of photos that I'd like to be able to use as my desktop background - all are saved on my computer with the correct "portrait" orientation, but when I open system preferences they weirdly show up in "landscape" orientation. I've tried
-
HT3529 My iPod touch 4th gen wont receve any picture messages!!!! HELP ME!
My iPod Touch 4th Gen wont recevie any photo messages that are sent to me. I can send photos to someone else but if they send one in retun I dont get it. I dont know whats wrong with it. Please help!? Its a White iPod 4th Gen.
-
Hi, One of our internal web sites certificates expired so it can't be renewed From the "Failed Request" folder: "A required certificate is not within it's validity period when verified..." So I need to issue a new certificate but I can't seem to find
-
Numberfield displaying exponetial format when the num 99999999999999948
Hi, As mentioned in the sub,i am facing the problem with the number field format.If the number is greater than 99999999999999948 (ie 99999999999999948 + 1) then the fiels is display in exponential format(1.2e+005). I want to display the number