Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

example with user exit

Former Member
0 Kudos
1,954

hallow

did some one have a exaple (document) how to do user exit?

Regards

1 ACCEPTED SOLUTION

Former Member
0 Kudos
626

Hi

User exits (Function module exits) are exits developed by SAP. The exit is implementerd as a call to a function module. The code for the function module is written by the developer. You are not writing the code directly in the function module, but in the include that is implemented in the function module.

The naming standard of function modules for functionmodule exits is:

EXIT_<program name><3 digit suffix>

The call to a functionmodule exit is implemented as:

CALL CUSTOMER.-FUNCTION ❤️ digit suffix>

To find a Exit.

Goto Transaction -- Find The Package

SMOD >f4>Use the Package here to Find the Exits In the Package.

Else if you Want to search by Application Area wise ,

There is one more tab to find the Exits in the Respective Application Area.

Implementing the Exit-- CMOD Create ProjectsAssgn your Component .

Now Run ur Transaction to Check if it Triggers.

Thats it..

Suppose you need to find out all the user exits related to a tcode.

1. Execute the Tcode.

2. Open the SAP program.

3. Get the Development Class.

4. Execute Tcode SE84.

5. Open the Node 'Envir. -> Exit Techniques -> 'Customer Exits -> Enhancements'

6. Enter the Development class and execute.

Check out this thread..

1. Type the transaction : system->status-> <PROG. NAME>

2 open SE37 , type EXIT<PROG NAME> and press F4 to get the list of function exits available.

3. Open CMOD utilities->SAP enhancements

EDIT->All selections

4.type the function module name obtained in step 2, in fields 'component name' in 'additional selections' block. and execute.

5. The displayed list contains the enhancements names for the transaction You were looking for.

6. Create a project in CMOD and the code in default include->activate.

http://www.erpgenie.com/sap/abap/code/abap26.htm

which gives the list of exits for a tcode

http://help.sap.com/saphelp_nw04/helpdata/en/bf/ec079f5db911d295ae0000e82de14a/frameset.htm

For information on Exits, check these links

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.planetsap.com/userexit_main_page.htm

User-Exits

http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm

http://www.sap-img.com/ab038.htm

http://www.planetsap.com/userexit_main_page.htm

http://www.sap-basis-abap.com/sapab013.htm

http://sap.ittoolbox.com/documents/popular-q-and-a/user-exits-for-the-transaction-code-migo-3283

These links will help you to learn more on user exits.

http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm

http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/frameset.htm

http://www.planetsap.com/userexit_main_page.htm

http://www.allsaplinks.com/user_exit.html

www.sap-img.com/abap/what-is-user-exits.htm

Also please check these threads for more details about user exits.

1. Document on UserExits in FI/CO

http://www.ficoexpertonline.com/downloads/User%20ExitsWPedit.doc

2. Finding User Exits...

http://sap.ionelburlacu.ro/abap/sap2/Other_Useful_Tips.html#Finding_User_Exits

3. List of all User Exits...

http://www.planetsap.com/userexit_main_page.htm

1. Customer exits: Implemented as Function Modules within z includes. Anybody can change it and no access key is required.

2. User Exit: Implemented as subroutines within includes (any include except y or z includes). You need access for the specific include and then you can any subroutine (user exit) within that Include.

BADIs are the enhanced version of user exits where the same logic is implemented via classes and object (OOP)

Enchancement point is the latest once introduces with ECC6.0 . Not very sure about that but you can change it without any access key.

Please go through the following link which will help you understand the exits in a much better way:

http://help.sap.com/saphelp_nw04/helpdata/en/bf/ec07a25db911d295ae0000e82de14a/content.htm

http://www.sap-img.com/abap/what-is-the-difference-between-smod-and-cmod.htm

http://sap.niraj.tripod.com/id21.html

http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/frameset.htm

http://www.sap-img.com/ab038.htm

User Exits.

-


http://www.erpgenie.com/sap/abap/code/abap26.htm

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

customer exits

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f1a7e790-0201-0010-0a8d-f08a4662...

Menu Exit.

http://www.sappoint.com/abap/spmp.pdf

http://www.sappoint.com/abap/userexit.pdf

http://www.sapdevelopment.co.uk/enhance/mod_sapmenu.htm

http://www.sapdevelopment.co.uk/enhance/enhancehome.htm

1. Previously there were only user-exits.

2. Then came the concept of customer-exits.

3. user exits were nothing but subroutines

FORM/PERFORM

called from standard programs.

4. The FORM defintion was placed inside

an empty include file.

5. So It was called EVERYTIME.

and we need to MODIFY/REPAIR the

standard include .

6. Then it came with concept of customer-exit

7. It consists of calling a FUNCTION MODULE,

which is called only if

the user-exit is ACTIVATED (other wise not called)

In this case, the code in put inside

a pre-defined Z include.

8. Functionality of both is same, howerver

we can note the following important differences

a) Customer exit is called only if activated.

(hence, it does not waste resources)

b) in customer exit, REPAIR does not happen

to the standard include.

Exits are basically the hooks whcih SAP has provided to add your own code. There are two types of Exits:

<b>Reward points for useful Answers</b>

Regards

Anji

7 REPLIES 7

Former Member
0 Kudos
626

Hi,

Please visit the following link:

http://www.sapbrainsonline.com/

Hope it will be useful.

Thanks,

Sandeep.

Former Member

Former Member
0 Kudos
627

Hi

User exits (Function module exits) are exits developed by SAP. The exit is implementerd as a call to a function module. The code for the function module is written by the developer. You are not writing the code directly in the function module, but in the include that is implemented in the function module.

The naming standard of function modules for functionmodule exits is:

EXIT_<program name><3 digit suffix>

The call to a functionmodule exit is implemented as:

CALL CUSTOMER.-FUNCTION ❤️ digit suffix>

To find a Exit.

Goto Transaction -- Find The Package

SMOD >f4>Use the Package here to Find the Exits In the Package.

Else if you Want to search by Application Area wise ,

There is one more tab to find the Exits in the Respective Application Area.

Implementing the Exit-- CMOD Create ProjectsAssgn your Component .

Now Run ur Transaction to Check if it Triggers.

Thats it..

Suppose you need to find out all the user exits related to a tcode.

1. Execute the Tcode.

2. Open the SAP program.

3. Get the Development Class.

4. Execute Tcode SE84.

5. Open the Node 'Envir. -> Exit Techniques -> 'Customer Exits -> Enhancements'

6. Enter the Development class and execute.

Check out this thread..

1. Type the transaction : system->status-> <PROG. NAME>

2 open SE37 , type EXIT<PROG NAME> and press F4 to get the list of function exits available.

3. Open CMOD utilities->SAP enhancements

EDIT->All selections

4.type the function module name obtained in step 2, in fields 'component name' in 'additional selections' block. and execute.

5. The displayed list contains the enhancements names for the transaction You were looking for.

6. Create a project in CMOD and the code in default include->activate.

http://www.erpgenie.com/sap/abap/code/abap26.htm

which gives the list of exits for a tcode

http://help.sap.com/saphelp_nw04/helpdata/en/bf/ec079f5db911d295ae0000e82de14a/frameset.htm

For information on Exits, check these links

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.planetsap.com/userexit_main_page.htm

User-Exits

http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm

http://www.sap-img.com/ab038.htm

http://www.planetsap.com/userexit_main_page.htm

http://www.sap-basis-abap.com/sapab013.htm

http://sap.ittoolbox.com/documents/popular-q-and-a/user-exits-for-the-transaction-code-migo-3283

These links will help you to learn more on user exits.

http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm

http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/frameset.htm

http://www.planetsap.com/userexit_main_page.htm

http://www.allsaplinks.com/user_exit.html

www.sap-img.com/abap/what-is-user-exits.htm

Also please check these threads for more details about user exits.

1. Document on UserExits in FI/CO

http://www.ficoexpertonline.com/downloads/User%20ExitsWPedit.doc

2. Finding User Exits...

http://sap.ionelburlacu.ro/abap/sap2/Other_Useful_Tips.html#Finding_User_Exits

3. List of all User Exits...

http://www.planetsap.com/userexit_main_page.htm

1. Customer exits: Implemented as Function Modules within z includes. Anybody can change it and no access key is required.

2. User Exit: Implemented as subroutines within includes (any include except y or z includes). You need access for the specific include and then you can any subroutine (user exit) within that Include.

BADIs are the enhanced version of user exits where the same logic is implemented via classes and object (OOP)

Enchancement point is the latest once introduces with ECC6.0 . Not very sure about that but you can change it without any access key.

Please go through the following link which will help you understand the exits in a much better way:

http://help.sap.com/saphelp_nw04/helpdata/en/bf/ec07a25db911d295ae0000e82de14a/content.htm

http://www.sap-img.com/abap/what-is-the-difference-between-smod-and-cmod.htm

http://sap.niraj.tripod.com/id21.html

http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/frameset.htm

http://www.sap-img.com/ab038.htm

User Exits.

-


http://www.erpgenie.com/sap/abap/code/abap26.htm

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

customer exits

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f1a7e790-0201-0010-0a8d-f08a4662...

Menu Exit.

http://www.sappoint.com/abap/spmp.pdf

http://www.sappoint.com/abap/userexit.pdf

http://www.sapdevelopment.co.uk/enhance/mod_sapmenu.htm

http://www.sapdevelopment.co.uk/enhance/enhancehome.htm

1. Previously there were only user-exits.

2. Then came the concept of customer-exits.

3. user exits were nothing but subroutines

FORM/PERFORM

called from standard programs.

4. The FORM defintion was placed inside

an empty include file.

5. So It was called EVERYTIME.

and we need to MODIFY/REPAIR the

standard include .

6. Then it came with concept of customer-exit

7. It consists of calling a FUNCTION MODULE,

which is called only if

the user-exit is ACTIVATED (other wise not called)

In this case, the code in put inside

a pre-defined Z include.

8. Functionality of both is same, howerver

we can note the following important differences

a) Customer exit is called only if activated.

(hence, it does not waste resources)

b) in customer exit, REPAIR does not happen

to the standard include.

Exits are basically the hooks whcih SAP has provided to add your own code. There are two types of Exits:

<b>Reward points for useful Answers</b>

Regards

Anji

Former Member
0 Kudos
626

hi

just refer to the link below <b>step by step procedure with screen shots</b>

http://www.sapmaterial.com/?gclid=CN322K28t4sCFQ-WbgodSGbK2g

regards

ravish

<b>plz dont forget to reward points if helpful</b>

Former Member
0 Kudos
626

Hi

User exits (Function module exits) are exits developed by SAP. The exit is implementerd as a call to a function module. The code for the function module is written by the developer. You are not writing the code directly in the function module, but in the include that is implemented in the function module.

The naming standard of function modules for functionmodule exits is:

EXIT_<program name><3 digit suffix>

The call to a functionmodule exit is implemented as:

CALL CUSTOMER.-FUNCTION ❤️ digit suffix>

To find a Exit.

Goto Transaction -- Find The Package

SMOD >f4>Use the Package here to Find the Exits In the Package.

Else if you Want to search by Application Area wise ,

There is one more tab to find the Exits in the Respective Application Area.

Implementing the Exit-- CMOD Create ProjectsAssgn your Component .

Now Run ur Transaction to Check if it Triggers.

Thats it..

look in txn CMOD or SMOD, check enhancement 0VRF0001. It uses function module EXIT_SAPL0VRF_001. It is used to manipulate route determination for SD.

Here is the code

DATA: ls_xvbpa LIKE xvbpa,

lf_aland LIKE tvst-aland,

lf_azone LIKE tvst-azone,

lf_lland LIKE trolz-lland,

lf_lzone LIKE trolz-lzone,

ls_vbadr LIKE vbadr,

ls_xvbap LIKE xvbap,

ls_tvst LIKE tvst,

lv_route LIKE trolz-route.

LOOP AT xvbap INTO ls_xvbap.

IF NOT ls_xvbap-vstel IS INITIAL.

SELECT SINGLE * FROM tvst

INTO ls_tvst

WHERE vstel EQ ls_xvbap-vstel.

IF sy-subrc = 0.

lf_aland = ls_tvst-aland.

lf_azone = ls_tvst-azone.

ENDIF.

ENDIF.

READ TABLE xvbpa INTO ls_xvbpa WITH KEY vbeln = ls_xvbap-vbeln

posnr = ls_xvbap-posnr

parvw = 'Q1'.

IF sy-subrc = 0.

CALL FUNCTION 'SD_ADDRESS_GET'

EXPORTING

fif_address_number = ls_xvbpa-adrnr

IMPORTING

fes_address = ls_vbadr

EXCEPTIONS

address_not_found = 1

address_type_not_exists = 2

no_person_number = 3

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

lf_lland = ls_vbadr-land1.

lf_lzone = ls_vbadr-lzone.

ENDIF.

ENDIF.

CALL FUNCTION 'SD_ROUTE_DETERMINATION'

EXPORTING

i_aland = lf_aland

i_azone = lf_azone

i_lland = lf_lland

i_lzone = lf_lzone

IMPORTING

e_route = lv_route

EXCEPTIONS

no_route_found = 1

departure_error = 2

destination_error = 3

invalid_generic_key = 4

customer_exit_error = 5

OTHERS = 6.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

ls_xvbap-route = lv_route.

MODIFY xvbap FROM ls_xvbap TRANSPORTING route.

ENDIF.

ENDLOOP.

<b>Reward points</b>

Regards

Former Member
0 Kudos
626

Hi

Types of Exits

There are several different types of user exits. Each of these exits acts as hooks where you can attach or "hang" your own add-ons.

Menu Exits

Menu exits add items to the pulldown menus in standard SAP applications. You can use these menu items to call up your own screens or to trigger entire add-on applications.

SAP creates menu exits by defining special menu items in the Menu Painter. These special entries have function codes that begin with "+" (a plus sign). You specify the menu item’s text when activating the item in an add-on project.

Screen Exits

Screen exits add fields to screens in R/3 applications. SAP creates screen exits by placing special subscreen areas on a standard R/3 screen and calling a customer subscreen from the standard screen’s flow logic.

Function Module Exits

Function module exits add functions to R/3 applications. Function module exits play a role in both menu and screen exits.

When you add a new menu item to a standard pull down menu, you use a function module exit to define the actions that should take place once your menu is activated.

Function module exits also control the data flow between standard programs and screen exit fields. SAP application developers create function module exits by writing calls to customer functions into the source code of standard R/3 programs.

These calls have the following syntax:

CALL CUSTOMER-FUNCTION ‘001’.

Field Exits

Field exits allow you to create your own programming logic for any data element in the Dictionary. You can use this logic to carry out checks, conversions, or business-related processing for any screen field. Example: The data element BBBNR identifies a company’s international location number. You might want to set up your R/3 System so that all international location numbers are larger than 100.

The field exit concept lets you create a special function module that contains this logic.

You assign the special function module to the data element BBBNR. You then assign the module to any programs and screens in which users can add new international location numbers. When you activate your field exit, the system automatically triggers your special routine whenever a user enters a company location number.

In 4.6c, you can use "RSMODPRF" program to create field exits.

An example of a user exits :-



MODULE user_exit_0001 INPUT  
    CASE okcode. 
        WHEN 'BACK OR EXIT'. 
            CASE sy-dynnr. 
                    WHEN '100'. 
                         SET SCREEN 0. 
                         LEAVE SCREEN. 
                    WHEN '200'. 
****************************************************************************** 
**** Note that you can write any code that satisfy youer needs   **** 
**** But in this case, this was wrote as a sample code for ref.     **** 
**** And you can test                                                              **** 
******************************************************************************  
                         SET SCREEN 100. 
                         LEAVE SCREEN. 
             ENDCASE. 
      ENDCASE.

and another detailed descriptionActivateThis will now be active for all instances of this data element, but you can assign specific program and screen combinations by pressing the ‘Assign prog./screen’ button. You can also change the code you entered in the field exit function module by pressing the ‘Edit FM’ button.Access values outside the customer exit

When implementing a customer exit (i.e. field, user etc) have you ever wanted to be able to read additional field values available in the main SAP program but not available in your exit. Now with the use of field-symbols you can have access to any field available in the main SAP program. The code below demonstrates how this is done within a field exit on BSTNR which can be tested using transactionME21. Information on creating field exits can be found here.

FUNCTION field_exit_bstnr.*"----


""Local interface:" IMPORTING" REFERENCE(INPUT)" EXPORTING" REFERENCE(OUTPUT)*"----

-


  • create field symbol FIELD-SYMBOLS: <status>.* Assign value of variable from calling prog to field symbol ASSIGN ('(SAPMM06E)RM06E-BSART') TO <status>.* Display value retrieved in message* Note: Messages of type i and w are not allowed IF sy-subrc = 0. MESSAGE e003(zr) WITH <status> 'kkk'. ENDIF.ENDFUNCTION.

Adding fields to standard Infotype


SAP allows you to add additional fields to any standard Infotype. Step 1Using transaction PM01 chose the 'Enhance Infotype tab' and press the create 'All' button. Step 2The following screen will appear allowing you to enter the new fields you wish to add to the Infotype. i.e. ZZSPINST and ZZBACS Step 3Once saved and activated the new fields will appear in the Infotype screen and database table (See below)Infotype screen(PA20) Infotype database table
Modifying Standard SAP ‘System’ and ‘help’ Menu options · Use Menu Painter (Transaction SE41), enter program MENUSYST, status MEN and click change. · Modify SAP Standard by adding function codes: · For each of the function codes click on Extras and choose ‘Active functions in multiple statuses’.


Implementing Business Add-Ins (BADI)

The use of object orientated code within SAP has lead to new method of enhancing standard SAP code called Business Add-Ins or BADI's for short. Although the implementation concept is based on classes, methods and inheritance you do not really have to understand this fully to implement a BADI. Simply think of methods as a function module with the same import and export parameters and follow the simple instructions below.
Steps:1. Execute Business Add-In(BADI) transaction SE182. Enter BADI name i.e. HRPBSGB_HESA_NISR and press the display button 3. Select menu option Implementation->Create4. Give implementation a name such as Z_HRPBSGB_HESA_NISR5. You can now make any changes you require to the BADI within this implementation, for example choose the Interface tab6. Double click on the method you want to change, you can now enter any code you require.7. Please note to find out what import and export parameters a method has got return the original BADI definition (i.e. HRPBSGB_HESA_NISR) and double click on the method name for example within HRPBSGB_HESA_NISR contract is a method8. When changes have been made activate the implementation

Reward pts for usefull answers

regards

Sathish