2009 Nov 26 5:54 AM
hi,
How can we find a user exit for a specific fields .
as i know Three ways to search user-exits
1. SE80 look includes in a packages with name user-exits
2. by zreport which will fetch user-exit in a T-CODE
3. SMOD
but what if we have to find a user-exit for particular field for e.g bupla(bussiness place) in MIRO.
Please suggest me.
Thanks and Regards ,
Rahul Singh.
2009 Nov 26 5:59 AM
GO to the transaction SE24 u2013 ( Transaction for classes ) .
2. Enter the class name CL_EXITHANDLER.
3. Double-click the method GET_INSTANCE.
5. Set a break-point at command line CASE sy-subrc ( line 25).
6. Execute the transaction that you want to analyse. It will stop at the break-point you have just set on class CL_EXITHANDLER whenever it finds any BADI method/Exit call.
7. On the debug screen, type the field name u2018exit_nameu2019. This field contains the BADI method/Exit name which is being called in the program at that time.
8. Press F8 to see the next calls.
2009 Nov 26 6:19 AM
Dear San. Kumar,
i know about BADI's but i need look for a user-exit for particular field, usually i use to create a break point on found user-exit related to transaction and make the necessary changes and it also work fine but i am not sure whether it is a correct way or not.
regards,
Rahul
2011 Jun 02 8:23 AM
This answer is to find the BADI.
For user exists:
Give paricular tcode->click on system menu->status in that find the program name, and find out the package name.
Give package name through SE80. In that we can find the particular user exists .
Edited by: venkatesh gadi on Jun 2, 2011 9:23 AM
2009 Nov 26 6:56 AM
Hi Rahul,
Here is the procedure to create field exits.
Step by step procedure for creating Field Exits
There are eight steps to creating a field exit:
Step 1: Determine Data Element
Step 2: Go To Field Exit Transaction
Step 3: Create Field Exit
Step 4: Create Function Module
Step 5: Code Function Module
Step 6: Activate Function Module
Step 7: Assign Program/Screen
Step 8: Activate Field Exit
Step 1: Determine Data Element
u2022 Before you can begin adding the functionality for a field exit, you must know the corresponding data element.
Step 2: Go To Field Exit Transaction
u2022 The transaction to create field exits is CMOD.
u2022 You can use the menu path Tools -> ABAP/4 Workbench -> Utilities -> Enhancements -> Project management.
u2022 From the initial screen of transaction CMOD, choose the Text enhancements -> Field exits menu path.
u2022 After choosing this menu path, you will be taken to the field exits screen. From here, you can create a field exit.
NOTE : Even though you use transaction CMOD to maintain field exits, you do not need to create a project to activate field exits.
Step 3: Create Field Exit
u2022 From the field exit screen of transaction CMOD, choose the Field exit -> Create menu path.
u2022 After choosing this menu path, a dialog box will prompt you for the appropriate data element .
u2022 Enter the data element name and click the u2018Continueu2019 pushbutton.
u2022 Now, you will be able to create the function module associated to the data elementu2019s field exit.
Step 4: Create Function Module
u2022 You will automatically be taken to the Function Library (SE37) after entering a data element name and clicking the u2018Continueu2019 pushbutton.
u2022 In the u2018Function moduleu2019 field, a function module name will be defaulted by the system based on the data element specified. This name will have the following convention:
FIELD_EXIT_<data element>
u2022 You can add an identifier (an underscore followed by a single character ).
u2022 The first function module for a data elementu2019s field exit must be created without an identifier.
u2022 To create the function module, click on the u2018Createu2019 pushbutton, choose menu path Function module -> Create, or press u2018F5u2019.
u2022 After choosing to create the function module, you will get the warning: "Function module name is reserved for SAP". This message is just a warning so a developer does not accidentally create a function module in the field exit name range. By pressing u2018Enteru2019, you will be able to go ahead and create the function module.
u2022 Before coding the function module, you will have to specify the function modules attributes -- function group, application, and short text.
Step 5: Code Function Module
u2022 From the function moduleu2019s attributes screen, click on the u2018Source codeu2019 pushbutton or choose the Goto -> Function module menu path to the code of the function module.
u2022 Here you will add your desired functionality for the field exit.
u2022 Remember that field exitu2019s function module will have two parameters -- one importing parameter called "INPUT" and one exporting parameter called "OUTPUT". These parameters will be set up automatically by the system.
u2022 You must remember to assign a value to the OUTPUT field. Even if the value does not change, it must be moved from the INPUT field to the OUTPUT field.
Step 6: Activate Function Module
u2022 After coding the function module, you must remember to activate it.
u2022 Use the Function module -> Activate menu path to activate the function module.
u2022 At this point, you can return to the field exit transaction.
u2022 You should be able to 'green arrow' back to this transaction.
u2022 When you return to the field exit transaction, you will see an entry for the newly created field exit.
u2022 At this point, the field exit is global. That is, it applies to all screens that use a particular data element. On any screen that uses the data element, the corresponding field exit function module will be triggered, once it is active.
u2022 Also, the field exit will not be triggered yet because it is inactive.
Step 7: Assign Program/Screen
u2022 This step is only needed if you want to make a field exit local.
u2022 To make a field exit local, select the field exit and click on the u2018Assign prog./screenu2019 pushbutton.
u2022 In the dialog box , indicate the appropriate program name and screen number.
This information indicates that the field exit is local to the specified screen in the specified program.
u2022 In the dialog box, you determine which function module gets executed for the field exit by specifying the identifier in the u2018Fld. Exitu2019 field.
u2022 If this field is left blank, the function module triggered will be 'FIELD_EXIT_<data element>'.
u2022 If a single-character identifier is entered into the field, the function module triggered will be 'FIELD_EXIT_<data element>_<identifier>'.
Step 8: Activate Field Exit
u2022 The field exit must be active for it to be triggered by the system.
u2022 Activate the field exit by choosing the Field exit -> Activate menu path.
u2022 After assigning the field exit to a change request, its status will change to u2018Activeu2019 and it will be triggered automatically on the appropriate screen(s).
NOTE : In order to activate the field exit the profile parameter abap/fieldexit = YES must be set on all application servers
Execute the transaction SE38 with PROGRAM NAME - RSMODPRF
Then give the Data Element Name for which field you want to create the exit(Just cross check with your field data element) and execute.
then it takes you to SE37 with the function module name FIELD_EXIT_<DATA ELEMENT NAME> and then create the same function module.
and in the coding part, You can write your logic to display the output of that field. and activate it.
once you complete the above,
Again execute SE38 transaction with program RSMODPRF and again click on Execute button without any Data Element Name. Now you select the data element which you have created and click on Assign prog/ Screen button and assign the program name and screen number of the filed and click on the menu Field Exit and Activate.
Hope it helps.
Regards
Radhika
Edited by: Radhika Pande on Nov 26, 2009 7:58 AM
2009 Nov 26 7:00 AM
Hello Rahul,
Well, you can follow the method mentioned above of marking a break-point at the method of class CL_EXITHANDLER, another way to find exits is to run transaction SE84 and give the package name of the transaction; for instance open a transaction for which you want to find exits, then goto System->Status->Program name and then copy the program name; goto SE38, check the attributes and you find the package name. Using the package name, you can find exits going through 2 methods; 1. Run transaction SE84 and click folder Enhancements and then give package name; OR
2. Run transaction SMOD and go for F4 help of enhancements and mention package name, moreover select All Entries and find the exits.
Once you get the exit-names; try them out with their descriptions; hopefully you'll find proper exit.
3. Option is very accurate option to find out Badis and exits of a particular transaction;
Selection Text: P_TCODE: Transaction Code to Search
Text Symbols: 001 - Enter the Transaction Code that you want to search through for a User Exit
REPORT z_find_userexit NO STANDARD PAGE HEADING.
*&---------------------------------------------------------------------*
*& Enter the transaction code that you want to search through in order
*& to find which Standard SAP® User Exits exists.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Tables
*&---------------------------------------------------------------------*
TABLES : tstc, "SAP® Transaction Codes
tadir, "Directory of Repository Objects
modsapt, "SAP® Enhancements - Short Texts
modact, "Modifications
trdir, "System table TRDIR
tfdir, "Function Module
enlfdir, "Additional Attributes for Function Modules
tstct. "Transaction Code Texts
*&---------------------------------------------------------------------*
*& Variables
*&---------------------------------------------------------------------*
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.
*&---------------------------------------------------------------------*
*& Selection Screen Parameters
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK a01.
*&---------------------------------------------------------------------*
*& Start of main program
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* Validate Transaction Code
SELECT SINGLE * FROM tstc
WHERE tcode EQ p_tcode.
* Find Repository Objects for transaction code
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 = enlfdir-area.
MOVE : tadir-devclass TO v_devclass.
ENDIF.
ENDIF.
* Find SAP® Modifications
SELECT * FROM tadir
INTO TABLE jtab
WHERE pgmid = 'R3TR'
AND object = 'SMOD'
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:/(95) sy-uline.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
WRITE:/(95) sy-uline.
LOOP AT jtab.
SELECT SINGLE * FROM modsapt
WHERE sprsl = sy-langu AND
name = jtab-obj_name.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:/1 sy-vline,
2 jtab-obj_name HOTSPOT ON,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
ENDLOOP.
WRITE:/(95) sy-uline.
DESCRIBE TABLE jtab.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No of Exits:' , sy-tfill.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'No User Exit exists'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'Transaction Code Does Not Exist'.
ENDIF.
* Take the user to SMOD for the Exit that was selected.
AT LINE-SELECTION.
GET CURSOR FIELD field1.
CHECK field1(4) EQ 'JTAB'.
SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
I hope it's gonna help you find proper solution.
Kind Regards,
Zahack
2009 Dec 03 9:34 AM
thanks for your replies,
but i need to know about searching a user exit for a specific fields (i.e field-data element) like BUPLA (business place) in MIRO .
2011 Jun 02 9:19 AM
Hi Rahul,
Do you mean a field exit? Or do you mean User_Exit as in "USEREXIT_SAVE_DOCUMENT_PREPARE" sub-routines?
Can you provide more information on your requirement?
Regards,
Chen