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: 

enhancements

Former Member
0 Kudos

hi can u tell me what are enhancements?? basically waht are customer exits,user exits, function exits.what is the difference in their implementation.

what is cmod and smod and projects and enhancements etc. basically i have heard some exits are written in form and endform whereas some are wriitten in includess ?? what are this?

thanks in advance

1 ACCEPTED SOLUTION

matt
Active Contributor
0 Kudos

There are many different ways that have arisen over the years, of allowing customer specific coding at certain points within the standard SAP functionality. Enhancements are the latest. Before then were BADIs, and before then were CMOD exits. Before then, there were no standard exit types. Some in FI, like validations and subsitutions, used forms in subroutine pools. Others, as in SD, used forms in the standard program, that the customer put their logic into.

There is extensive documentation covering each type of exit. Just use the little search box at the top right of your browser window.

matt

6 REPLIES 6

matt
Active Contributor
0 Kudos

There are many different ways that have arisen over the years, of allowing customer specific coding at certain points within the standard SAP functionality. Enhancements are the latest. Before then were BADIs, and before then were CMOD exits. Before then, there were no standard exit types. Some in FI, like validations and subsitutions, used forms in subroutine pools. Others, as in SD, used forms in the standard program, that the customer put their logic into.

There is extensive documentation covering each type of exit. Just use the little search box at the top right of your browser window.

matt

Former Member
0 Kudos

Hi jamnun,

Have a look at this link for enhancements,

http://abapprogramming.blogspot.com/search/label/ABAP%20ENHANCEMENTS.

Reward if helpful.

Former Member
0 Kudos

hi jamnun sir,

enhancement is attempted for sap.

tran.code---> SMOD and CMOD.

SMOD--> SAP Enhancement.

CMOD---> Project Enhancement.

it is used for user exists.

thanks and advances,

s.suresh.

reward if useful.

Former Member
0 Kudos

Hi

EXIT s are nothing but the R/3 Enhancements which allows you to add your own functionality to SAP’s standard business applications without having to modify the original applications.

Purpose

To introduce the techniques of enhancement in standard SAP system. SAP creates customer exits for specific programs, screens, and menus within standard R/3 applications. These exits do not contain any functionality. Instead, the customer exits act as hooks. You can hang your own add-on functionality onto these hooks.

Use

They do not affect standard SAP source code.

When you add new functionality to your SAP System using SAP’s exits, you do not alter the source code of standard SAP programs in any way. The code and screens you create are encapsulated as separate objects. These customer objects are linked to standard applications, but exist separately from SAP’s standard software package.

They do not affect software updates.

When you add new functionality to your SAP System using SAP’s exits, your objects (called customer objects) must adhere to strict naming conventions. When it comes time to upgrade a to a new software release, customer objects’ names ensure that they will not be affected by any changes or new additions to the standard software package.

<b>MODIFICATIONS</b>

Any change made to an SAP object in a customer system is called a modification. Customers usually modify their systems for one of two reasons. Either they make changes to the SAP standard in order to adjust the R/3 System to their specific business needs (actual modifications), or they alter individual SAP objects in order to correct an error (as recommended in an SAP error note).

You should only modify the SAP standard if the modifications you want to make are absolutely necessary for optimizing work flow in your company. Be aware that good background knowledge of application structure and flow are important prerequisites for deciding what kind of modifications to make and how these modifications should be designed.

<b>ABAP DICTIONARY</b>

<b>Table Enhancements:</b> There are two ways that you can add additional fields to tables without modifying your system.

Append Structures:

Append structures allow you to enhance tables by adding fields to them that are not part of the standard. With append structures, customers can add their own fields to any table or structure they want.

Append structures are created for use with a specific table. However, a table can have multiple append structures assigned to it.

Customizing Includes:

If customers know in advance that one of the tables or structures delivered to them by SAP needs to have customer-specific fields added to it, an SAP application developer can include these fields in the table using a Customizing include statement.

The same Customizing include can be used in multiple tables or structures. This provides for consistency in these tables and structures whenever the itself include is altered.

Append structures allow you to attach fields to a table without actually having to modify the table itself.

Append structures may only be assigned to a single table. A table may, however, have several append structures attached to it. Whenever a table is activated, the system searches for all active append structures for that table and attaches them to the table. If an append structure is created or changed and then activated, the table it is assigned to is also activated, and all of the changes made to the append structure take effect in the table as well.

You can use append structures in ABAP programs just as you would any other structure.

Note: When you copy tables that have append structures attached to them, the fields that were found in the append structure of the original table become part of the actual body of the target table.

Some of the tables and structures delivered with the R/3 standard contain special include statements calling Customizing includes. These are often inserted in those standard tables that need to have customer-specific fields added to them.

In contrast to append structures, Customizing includes can be inserted into more than one table. This provides for data consistency throughout the tables and structures affected whenever the include is altered.

Customizing include programs are part of the customer namespace: all of their names begin with 'CI_'. This naming convention guarantees that nonexistent Customizing includes do not lead to errors. No code for Customizing includes is delivered with the R/3 standard.

You create Customizing includes using special Customizing transactions. Some are already part of SAP enhancements and can be created by using project management (see the unit on 'Enhancements using Customer Exits').

The Customizing include field names must lie in the customer namespace just like field names in append structures. These names must all begin with either 'YY' or 'ZZ'.

When adding the fields of a Customizing include to your database, adhere to same rules you would with append structures.

<b>Field Exits:</b>

Field exits take you from a screen field with a data element reference to a function module. Field exits can be either global or local.

Field exit function modules adhere to the following naming convention:

prefix: FIELD_EXIT_

name: <data element name>_

suffix (optional): 0 to 9, A to Z

<b>Text Enhancements:</b>

Possible text enhancements include customer keywords and customer documentation of data elements.

Text enhancements differ from other application enhancements in that they take effect globally in all related SAP applications after activation (global enhancements).

<b>SAP Application Enhancement</b>

Application enhancements allow customers to enhance their application functions. Customer exits are preplanned by SAP and generally consist of several components.

Application enhancements are inactive when delivered and can be completed and activated by customers as they are needed.

Application enhancement characteristics:

Each enhancement provides you with a set of preplanned, precisely defined functions.

Each interface between SAP and customer functions is clearly defined.

As a customer, you do not need in-depth knowledge of how to implement SAP applications.

You do not need to adjust enhancements at upgrade because of new functions that SAP has developed.

SAP application programmers create SAP enhancements in transaction SMOD using function module exits, menu exits, and screen exits.

Customers are given a catalog containing an overview of existing SAP enhancements. They can then combine the SAP enhancements they want into an enhancement project using transaction CMOD.

SAP enhancements are made up of component parts. These components include function module exits, menu exits, and screen exits. A specific component may be used only once in a single SAP enhancement (this guarantees the uniqueness of SAP enhancements).

Customer enhancement projects consist of SAP enhancements. Each individual SAP enhancement may be used only once in a single customer enhancement program (this guarantees the uniqueness of a customer project).

SAP application programmers preplan function module exits, menu exits, and screen exits for their applications and combine them to create useful enhancements for the R/3 System.

Customers create their own enhancement projects for their systems using SAP enhancements. You can customize the individual components of an enhancement project by creating your own include programs (for function module exits), texts (for menu exits), and subscreens (for screen exits).

<b>Customer Exits</b>

Function Module Exits

Menu Exits

Screen Exits

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.

Menu Exits

Menu exits add items to the pull down 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 sub screen areas on a standard R/3 screen and calling a customer sub screen from the standard screen’s flow logic.

<b>Implementation of Enhancement in Customer System</b>

First, use the project management function to choose the SAP enhancements that you want and create an enhancement project.

Next, edit your individual components using the project management function and document the entire enhancement project.

Finally, activate the enhancement project (this activates all of the project's component parts).

Former Member
0 Kudos

Hi

SAP designed some standard scenmarios to meet most of the clients requirements. But still it won't suit the clients exact business spcifications, so we ned this enhancements.

it's basically to enhance the Std SAP as per the clients requirements.

An enhancement includes one or more components (function exits, menu enhancements, screen enhancements). For enhancements, you are recommended to observe the following naming convention.

We add fields using the Screen exits, desing menu's using menu exits and Function exits to enhance the std functionality of the programs.

http://help.sap.com/saphelp_nw2004s/helpdata/en/83/43e040e136742ae10000000a155106/frameset.htm

FAQ's

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

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

http://www.easymarketplace.de/userexit.php

http://wiki.ittoolbox.com/index.php/HOWTO:Implement_a_screen_exit_to_a_standard_SAP_transaction

1. what is the defference between enhancement and user-exits?

http://www.sap-img.com/abap/difference-between-badi-and-user-exits.htm

http://searchsap.techtarget.com/expert/KnowledgebaseAnswer/0,289625,sid21_gci1190924_tax299358,00.ht...

2. Difference between CMOD and SMOD?

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

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

http://sap.ittoolbox.com/groups/technical-functional/sap-r3-dev/diff-between-cmod-and-smod-236095

http://sap.ittoolbox.com/groups/technical-functional/sap-r3-dev/diff-between-cmod-and-smod-236107

check these links..

http://www.sapgenie.com/abap/tips_and_tricks.htm

http://www.sap-img.com/abap/field-exits-smod-cmod-questions-and-answers.htm

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

Former Member
0 Kudos

Hi jamnun sir ,

User exits :

1. Introduction:

User exits (Function module exits) are exits developed by SAP. The exit is implementerd as a call to a functionmodule. The code for the function module is writeen 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_SAP Enhancements. Enter the exit name and press enter.

You will now come to a screen that shows the function module exits for the exit.

3. Using Project management of SAP Enhancements, we want to create a project to enahance trasnaction VA01 .

- Go to transaction CMOD

- Create a project called ZVA01

- Choose the Enhancement assign radio button and press the Change button

In the first column enter V45A0002 Predefine sold-to party in sales document.

Note that an enhancement can only be used in 1 project. If the enhancement is already in use, and error message will be displayed

Press Save

Press Components. You can now see that enhancement uses user exit EXIT_SAPMV45A_002. Double click on the exit.

Now the function module is displayed. Double click on include ZXVVAU04 in the function module

Insert the following code into the include: E_KUNNR = '2155'.

Activate the include program. Go back to CMOD and activate the project.

Goto transaction VA01 and craete a salesorder.

Note that Sold-to-party now automatically is "2155"

User exit - A user exit is a three character code that instructs the system to access a program during system processing.

SXX: S is for standard exits that are delivered by SAP. XX represents the 2-digit exit number.

UXX: U is for user exits that are defined by the user. XX represents the 2-digit exit number

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 your needs. ****

        • But in this case, this was wrote as a sample code for reference sake. ****

        • And you can test it. ****

SET SCREEN 100.

LEAVE SCREEN.

ENDCASE.

ENDCASE.

The following web-sites give complete details on enhancements:

User Exit and Enhancement explained in detail .

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

Excellent web-site for user-exits

http://www.abaptalk.com/forum_posts.asp?TID=31&SID=3b18fa1dc8b7b9a1dbdedf36fe3bc2az&PID=56#56

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/208811b0-00b2-2910-c5ac-dd2c7c50...

http://abap4.tripod.com/Other_Useful_Tips.html

Finding User Exits

Procdedure 1:

Valid up to at least SAP release 4.0B

One way to find user exits applicable for a given SAP screen. From the SE38 screen, enter the desired screen main program, and click Utilities > Find In Source Code, and "CUSTOMER-FUNCTION" as the text to search for. This will give you a list of the user exits and where they are called from for all screens in the module pool.

Note: format of ABAP statement is CALL CUSTOMER-FUNCTION '009', for example. This is the statement called by a submodule attached to the main program.

Actual related function is EXIT_SAPLCOIH_009, for example. This example refers to customer function 9 in main program SAPLCOIH. Not all user exit functions are names as such, but this is the usual format.

If you are doing data validation and want to set an error message with a field open, you must be sure that the user exit you are using is linked to a calling module in the PAI section of the screen and the field you wish to be open was in the CHAIN statement which caused the PAI module to be invoked.

If you use a customer function which was invoked by a PBO module to validate data, the "MESSAGE" statement will cause the screen to return with the desired message at the bottom, but with all screen fields closed for input.

When you make changes to the include module for a given customer function, you must regenerate the related function group before you will see the changes included in the screen behaviour.

Procdedure 2:

Need to find user exits module-wise? Suppose we want to see the available sales module user exits. Go to transaction SE81. Click on SD, then click "edit" on the menu bar and choose select subtree. Click on "information system," Open Environment node, customer exits, and enhancements. Press F8 to get all the user exits for that module. In brief: SE81->SD->Select subtree->Information System->Envir->Exit Techniques->Customers exits->enhancements->Execute(F8)

USER EXIT (SAP Enhancement)

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

List of all USER EXIT's (4.6c version)

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

User Exits in FI/CO

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

Excellent web-site for user-exits

http://www.abaptalk.com/forum_posts.asp?TID=31&SID=3b18fa1dc8b7b9a1dbdedf36fe3bc2az&PID=56#56

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/208811b0-00b2-2910-c5ac-dd2c7c50...

Enhancements,Creating a project,Assigning SAP enhancements to a project,Editing enhancement components,Activating a project

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

Find user exits with a TCode

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

SAP User Exits Routine

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

BAdi:

SAP Business Add-Ins (BAdIs) are one of the most important technologies used to adapt SAP software to specific requirements. BAdIs were introduced with Release 4.6 and replace function module exits. This technology is not limited to SAP applications. BAdI calls can be integrated in customer applications. These can then be enhanced by other customer applications. In the various SAP applications, BAdI calls are implemented at places where enhancements are appropriate.Business add-ins are enhancements to the standard version of the system. They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software.

As with customer exits, two different views are available:

· In the definition view, an application programmer defines exit points in a source that allow specific industry sectors, partners, and customers to attach additional coding to standard SAP source code, without having to modify the original object.

· In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard solution, if one is available.

In contrast to customer exits, Business Add-Ins no longer assume a two-level infrastructure (SAP and customer solutions), but instead allow for a multi-level system landscape (SAP, country-specific versions, industry solutions, partner, customer, and so on). You can create definitions and implementations of Business Add-Ins at any level of the system landscape.SAP guarantees the upward compatibility of all Business Add-In interfaces. Release upgrades do not affect enhancement calls from within the standard software nor do they affect the validity of call interfaces. You do not have to register Business Add-Ins in SSCR.

The Business Add-In enhancement technique differentiates between enhancements that can only be implemented once and enhancements that can be used actively by any number of customers at the same time. In addition, Business Add-Ins can be defined according to filter values. This allows you to differentiate between Add-In implementations using the filter Country or other criteria.

The enhancement technique is set up in such a way that it is possible to define interfaces for ABAP soure code, screens, GUI interfaces, and tables. These allow customers to include their own enhancements in the standard. A single Business Add-In contains all of the interfaces necessary to implement a specific task.

BADI is just an object-oriented version of user-exit. Instead of entering program code into some function module (as in customer-exit), you define some class which has to implement predefined methods and those methods are fired at predefined points just like an old user-exit. Some BADI can have multiple independent implementations which is much better for software deployment as several developers can implement the same BADI independently. BADI/UserExists are used to enhance R/3 For customer Needs.

These steps should enable you to find any BADI related to any transaction in a matter of minutes.

Procedure 1:

1) Go to the transaction SE37 to find your function module.

2) Locate the function SXV_GET_CLIF_BY_NAME.

3) Put a breakpoint there.

4) Now open a new session.

5) Go to your transaction. 6) At that time, it will stop this function.

7) Double click on the function field EXIT_NAME.

😎 That will give you name of the BADI that is provided in your transaction.

Business Add-Ins

Procedure 2:

1) Goto se24 (Display class cl_exithandler)

2) Double click on the method GET_INSTANCE.

3) Put a break point at Line no.25 (CASE sy-subrc).

4) Now Execute SAP standard transaction

5) Press the required button for which you need to write an exit logic, the execution will stop at the break point.

6) Check the values of variable 'exit_name', it will give you the BADI name called at that time.

7) This way you will find all the BADIs called on click of any button in any transaction

Actually there is no transaction to find when and where the BADI

is called.

1. You can see the BADI description to find why it is called.

2. Once you implemented and activated the BADI, put some break points

in the BADI and see "where else used" option to check in what all

programs this BADI is called. In the ITS debug, when you are doing

the operation what exactly the BADI description tells, it will take

to the break points and you have to do manually debug the whole thing.

I know its bit difficult to do manual debug the whole thing, it

takes lot of time, but you have to be very patience when you are

dealing with BADI's.

Transaction SE18 is the BADI equivalent of transaction SMOD

Transaction SE19 is the BADI equivalent of transaction CMOD .

To find the BADI to be implemented and then implement this via SE19.

Check this blogs 2 find a BADI:

How To Define a New BAdI Within the Enhancement Framework (Some Basics About the BAdI,BAdI Commands in ABAP,

When to Use a BAdI?)

/people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series

How to implement a BAdI And How to Use a Filter

/people/thomas.weiss/blog/2006/04/18/how-to-implement-a-badi-and-how-to-use-a-filter--part-4-of-the-series-on-the-new-enhancement-framework

Introducing Business Add-Ins

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f3202186-0601-0010-6591-b832b1a0...

How to implement BAdi in Enhancement Framework

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/d0456c54-0901-0010-f0b3-cd765fb9...

Business Add-Ins

http://help.sap.com/saphelp_47x200/helpdata/en/ee/a1d548892b11d295d60000e82de14a/frameset.htm

BAdI: Customer-Defined Functions in the Formula Builder

http://help.sap.com/saphelp_nw04/helpdata/en/04/f3683c05ea4464e10000000a114084/content.htm

Difference Between BADI and User Exits

http://www.sap-img.com/abap/difference-between-badi-and-user-exits.htm

To Use BADI - Business Add In you need to Understand ABAP OO Interface Concept

http://www.sap-img.com/abap/business-add-in-you-need-to-understand-abap-oo-interface-concept.htm

cheers!

gyanaraj

****Pls reward points if u find this helpful