<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: User Exits in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520156#M846632</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;User exit - A user exit is a three character code that instructs the system to access a program during system processing. &lt;/P&gt;&lt;P&gt;SXX: S is for standard exits that are delivered by SAP. XX represents the 2-digit exit number. &lt;/P&gt;&lt;P&gt;UXX: U is for user exits that are defined by the user. XX represents the 2-digit exit number &lt;/P&gt;&lt;P&gt;Customer exit - The R/3 enhancement concept allows you to add your own functionality to SAP&amp;#146;s standard business applications without having to modify the original applications. 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. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The program for transaction VA01 Create salesorder is SAPMV45A &lt;/P&gt;&lt;P&gt;If you search for CALL CUSTOMER-FUNCTION i program &lt;/P&gt;&lt;P&gt;SAPMV45A you will find ( Among other user exits): &lt;/P&gt;&lt;P&gt;CALL CUSTOMER-FUNCTION '003' &lt;/P&gt;&lt;P&gt;exporting &lt;/P&gt;&lt;P&gt;xvbak = vbak &lt;/P&gt;&lt;P&gt;xvbuk = vbuk &lt;/P&gt;&lt;P&gt;xkomk = tkomk &lt;/P&gt;&lt;P&gt;importing &lt;/P&gt;&lt;P&gt;lvf_subrc = lvf_subrc &lt;/P&gt;&lt;P&gt;tables &lt;/P&gt;&lt;P&gt;xvbfa = xvbfa &lt;/P&gt;&lt;P&gt;xvbap = xvbap &lt;/P&gt;&lt;P&gt;xvbup = xvbup. &lt;/P&gt;&lt;P&gt;The exit calls function module EXIT_SAPMV45A_003 &lt;/P&gt;&lt;P&gt;Development&lt;/P&gt;&lt;P&gt;Creating a Project to include the enhancement&lt;/P&gt;&lt;P&gt;1. Go to transaction CMOD and create a project. &lt;/P&gt;&lt;P&gt;2. Enter a description for the project. Then, click on the pushbutton &amp;#145;Enhancement Assignments&amp;#146; in the Application Toolbar. &lt;/P&gt;&lt;P&gt;3. Enter the name of the enhancement and Save. &lt;/P&gt;&lt;P&gt;4. Go to &amp;#145;Components&amp;#146;. &lt;/P&gt;&lt;P&gt;Creating Custom Include for ANLU&lt;/P&gt;&lt;P&gt;The screen shown below will appear, showing all the enhancement components under the assignment AIST0002. Double-click on the name of the Include Structure to create it. &lt;/P&gt;&lt;P&gt;Create the include structure with three new fields, as required. Then, save and activate it. &lt;/P&gt;&lt;P&gt;Develop the subscreen and the program&lt;/P&gt;&lt;P&gt;Go to transaction SE80. For the function group XAIS, create a new subscreen 9000. &lt;/P&gt;&lt;P&gt;Create it as subscreen. &lt;/P&gt;&lt;P&gt;Then, go to the Layout of the screen and create three new fields from Database table ANLU. &lt;/P&gt;&lt;P&gt;Drag the fields in the screen body and place them. &lt;/P&gt;&lt;P&gt;Then, save and activate the screen and come back to screen flow editor. &lt;/P&gt;&lt;P&gt;Create the PAI module to add validation for field &amp;#147;Location 2&amp;#148;, as required . &lt;/P&gt;&lt;P&gt;Activate the whole function group and come out. &lt;/P&gt;&lt;P&gt;Write code in the Function Exits to synchronize the programs&lt;/P&gt;&lt;P&gt;Now, code has to be written in the function modules EXIT_SAPLAIST_002 and EXIT_SAPLAIST_003 so that data flows to and fro between the main SAP program and custom subscreen program. For that, go back to transaction CMOD and change the function exits. &lt;/P&gt;&lt;P&gt;Write code in the function module EXIT_SAPLAIST_002 called once at the beginning of the transaction: &lt;/P&gt;&lt;P&gt;Write code in EXIT_SAPLAIST_003 to pass the data from the subscreen to SAP main program. &lt;/P&gt;&lt;P&gt;Then, activate everything &amp;#150; the whole project and come out. &lt;/P&gt;&lt;P&gt;Complete the configuration to link the subscreen&lt;/P&gt;&lt;P&gt;The development portion is complete. Now, linking of the subscreen has to be done with the subscreen area of the main program. In most of the cases, this linking can be done in the enhancement itself. But, here, requirement is a bit different. It is done by configuration using SPRO. &lt;/P&gt;&lt;P&gt;Assets are created under Asset class. And for each asset class, there is a layout assigned to it. For a layout, there are multiple tab pages assigned to it. And, for each tab page, there are multiple screen groups/field groups assigned. &lt;/P&gt;&lt;P&gt;Here, the requirement is to create these three custom fields in the tab page &amp;#145;General&amp;#146; of asset master screen ( AS01/AS02/AS03/AS91). &lt;/P&gt;&lt;P&gt;Determine the Layout&lt;/P&gt;&lt;P&gt;To achieve this, first of all, we need to find out which layout is assigned to asset class 1000.For that, go to transaction AOLK( information has to be obtained from functional consultant).Select the Asset Class &amp;#145;1000&amp;#146; and click on folder &amp;#145;General Assignment of Layout&amp;#146;. &lt;/P&gt;&lt;P&gt;Here, for Asset class 1000, for all the user groups, tab layout SAP is assigned. Since layout &amp;#145;SAP&amp;#146; cannot be changed, it has to be copied and manipulated to include our screen group. Later, the new layout has to be assigned over here. &lt;/P&gt;&lt;P&gt;Create new tab layout&lt;/P&gt;&lt;P&gt;Go to transaction AOLA. Copy the tab layout &amp;#145;SAP&amp;#146; to create another layout, say, YSUB. &lt;/P&gt;&lt;P&gt;System will copy all the settings and will inform you about that. &lt;/P&gt;&lt;P&gt;Select your newly created layout and double-click on the folder &amp;#145;Tab page titles&amp;#146;. &lt;/P&gt;&lt;P&gt;You want to put your custom fields in the tab page &amp;#147;General&amp;#148;. So, select this tab page entry and double-click on the folder "Position of Groups". &lt;/P&gt;&lt;P&gt;Here, all the field groups currently residing in the tab-page &amp;#147;General&amp;#148; are shown. Add an entry for your newly created fields. &lt;/P&gt;&lt;P&gt;Select the group box from the list. An entry will come with &amp;#147;U&amp;#148; padded with the custom subscreen prepared by you. &lt;/P&gt;&lt;P&gt;Then, save and come out. &lt;/P&gt;&lt;P&gt;Assign the new Layout to Asset Class&lt;/P&gt;&lt;P&gt;Now, go to tcode AOLK and assign tab layout YSUB for asset class 1000. &lt;/P&gt;&lt;P&gt;Save and come out. &lt;/P&gt;&lt;P&gt;Test the Exit&lt;/P&gt;&lt;P&gt;Everything is over. Now, go to transaction code AS01/02/03 or AS91 to deal with an asset of asset class 1000. You will see your new fields added to the screen. Add values to them&amp;#133;save. Then, enter into the tcodes again to see whether the values entered by you are being displayed or not. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BADI&lt;/P&gt;&lt;P&gt;BADI(Business Add-In) is the object oriented method of user exits...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Each BAdI has a definition and more than one implementation. The definition means the methods(in class concept) that are used for performing various functions. The BAdI definition can be viewed in SE18 transaction(for standard ones) and user-defined BAdIs can be created in the same transaction as well. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When you create a BAdI definition, an class interface will be automatically created and you can define your methods in the interface. The implementation of the methods can be done in SE19 transaction &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Intro.....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/e6/d54d3c596f0b26e10000000a11402f/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/e6/d54d3c596f0b26e10000000a11402f/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check these links for info about badi..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="2097977"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/rnd/papers/sugi30/SAP.ppt" target="test_blank"&gt;http://support.sas.com/rnd/papers/sugi30/SAP.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="2097977"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/rnd/papers/sugi30/SAP.ppt" target="test_blank"&gt;http://support.sas.com/rnd/papers/sugi30/SAP.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm" target="test_blank"&gt;http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://members.aol.com/_ht_a/skarkada/sap/" target="test_blank"&gt;http://members.aol.com/_ht_a/skarkada/sap/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.ct-software.com/reportpool_frame.htm" target="test_blank"&gt;http://www.ct-software.com/reportpool_frame.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.saphelp.com/SAP_Technical.htm" target="test_blank"&gt;http://www.saphelp.com/SAP_Technical.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.kabai.com/abaps/q.htm" target="test_blank"&gt;http://www.kabai.com/abaps/q.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.guidancetech.com/people/holland/sap/abap/" target="test_blank"&gt;http://www.guidancetech.com/people/holland/sap/abap/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.planetsap.com/download_abap_programs.htm" target="test_blank"&gt;http://www.planetsap.com/download_abap_programs.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;/people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series&lt;/P&gt;&lt;P&gt;/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&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/web/BAdI" target="test_blank"&gt;http://www.esnips.com/web/BAdI&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.allsaplinks.com/badi.html" target="test_blank"&gt;http://www.allsaplinks.com/badi.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="143565"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Omkaram.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 10 Mar 2008 09:24:07 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-03-10T09:24:07Z</dc:date>
    <item>
      <title>User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520149#M846625</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please explain the difference between User Exits, Customer Exits, Function exits and Badis with examples.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please give the examples.. for finding and solving of any user exist.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Points will be rewarded for sure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Srikanth.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:11:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520149#M846625</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-10T09:11:26Z</dc:date>
    </item>
    <item>
      <title>Re: User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520150#M846626</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Difference between user exits &amp;amp; customer exits: &lt;/P&gt;&lt;P&gt;User exit - A user exit is a three character code that instructs the system to access a program during system processing. &lt;/P&gt;&lt;P&gt;SXX: S is for standard exits that are delivered by SAP.   XX represents the 2-digit exit number. &lt;/P&gt;&lt;P&gt;UXX: U is for user exits that are defined by the user.  XX represents the 2-digit exit number &lt;/P&gt;&lt;P&gt;Customer exit - The R/3 enhancement concept allows you to add your own functionality to SAP&amp;#146;s standard business applications without having to modify the original applications. 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.     *-- Mani &lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt;The following document is about exits in SAP :- &lt;/P&gt;&lt;P&gt;The R/3 enhancement concept allows you to add your own functionality to SAP&amp;#146;s standard business applications without having to modify the original applications.  &lt;/P&gt;&lt;P&gt;SAP creates user 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. &lt;/P&gt;&lt;P&gt;Types of Exits  &lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;Menu Exits &lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;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&amp;#146;s text when activating the item in an add-on project. &lt;/P&gt;&lt;P&gt;Screen Exits &lt;/P&gt;&lt;P&gt;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&amp;#146;s flow logic. &lt;/P&gt;&lt;P&gt;Function Module Exits  &lt;/P&gt;&lt;P&gt;Function module exits add functions to R/3 applications. Function module exits play a role in both menu and screen exits.  &lt;/P&gt;&lt;P&gt;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.  &lt;/P&gt;&lt;P&gt;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.  &lt;/P&gt;&lt;P&gt;These calls have the following syntax:  &lt;/P&gt;&lt;P&gt;CALL CUSTOMER-FUNCTION &amp;#145;001&amp;#146;. &lt;/P&gt;&lt;P&gt;Field Exits &lt;/P&gt;&lt;P&gt;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&amp;#146;s international location number. You might want to set up your R/3 System so that all international location numbers are larger than 100.  &lt;/P&gt;&lt;P&gt;The field exit concept lets you create a special function module that contains this logic.  &lt;/P&gt;&lt;P&gt;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.  &lt;/P&gt;&lt;P&gt;In 4.6c, you can use "RSMODPRF" program to create field exits. &lt;/P&gt;&lt;P&gt;An example of a user exits :- &lt;/P&gt;&lt;P&gt;MODULE user_exit_0001 INPUT  &lt;/P&gt;&lt;P&gt;    CASE okcode. &lt;/P&gt;&lt;P&gt;        WHEN 'BACK OR EXIT'. &lt;/P&gt;&lt;P&gt;            CASE sy-dynnr. &lt;/P&gt;&lt;P&gt;                    WHEN '100'. &lt;/P&gt;&lt;P&gt;                         SET SCREEN 0. &lt;/P&gt;&lt;P&gt;                         LEAVE SCREEN. &lt;/P&gt;&lt;P&gt;                    WHEN '200'. &lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="78" type="ul"&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;Note that you can write any code that satisfy your needs.                                                     **** &lt;/P&gt;&lt;/LI&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;But in this case, this was wrote as a sample code for reference sake.                                    **** &lt;/P&gt;&lt;/LI&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;And you can test it.                                                                                **** &lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="78" type="ul"&gt;&lt;P&gt; &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;                         SET SCREEN 100. &lt;/P&gt;&lt;P&gt;                         LEAVE SCREEN. &lt;/P&gt;&lt;P&gt;             ENDCASE. &lt;/P&gt;&lt;P&gt;      ENDCASE.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Finding the user-exits of a SAP transaction code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Enter the transaction code in which you are looking for the user-exit&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;and it will list you the list of user-exits in the transaction code.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Also a drill down is possible which will help you to branch to SMOD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Written by : SAP Basis, ABAP Programming and Other IMG Stuff&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             &lt;A href="http://www.sap-img.com" target="test_blank"&gt;http://www.sap-img.com&lt;/A&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;report zuserexit no standard page heading.&lt;/P&gt;&lt;P&gt;tables : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.&lt;/P&gt;&lt;P&gt;         tables : tstct.&lt;/P&gt;&lt;P&gt;data : jtab like tadir occurs 0 with header line.&lt;/P&gt;&lt;P&gt;data : field1(30).&lt;/P&gt;&lt;P&gt;data : v_devclass like tadir-devclass.&lt;/P&gt;&lt;P&gt;parameters : p_tcode like tstc-tcode obligatory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;select single * from tstc where tcode eq p_tcode.&lt;/P&gt;&lt;P&gt;if sy-subrc eq 0.&lt;/P&gt;&lt;P&gt;   select single * from tadir where pgmid = 'R3TR'&lt;/P&gt;&lt;P&gt;                    and object = 'PROG'&lt;/P&gt;&lt;P&gt;                    and obj_name = tstc-pgmna.&lt;/P&gt;&lt;P&gt;   move : tadir-devclass to v_devclass.&lt;/P&gt;&lt;P&gt;      if sy-subrc ne 0.&lt;/P&gt;&lt;P&gt;         select single * from trdir where name = tstc-pgmna.&lt;/P&gt;&lt;P&gt;         if trdir-subc eq 'F'.&lt;/P&gt;&lt;P&gt;            select single * from tfdir where pname = tstc-pgmna.&lt;/P&gt;&lt;P&gt;            select single * from enlfdir where funcname =&lt;/P&gt;&lt;P&gt;            tfdir-funcname.&lt;/P&gt;&lt;P&gt;            select single * from tadir where pgmid = 'R3TR'&lt;/P&gt;&lt;P&gt;                               and object = 'FUGR'&lt;/P&gt;&lt;P&gt;                               and obj_name eq enlfdir-area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            move : tadir-devclass to v_devclass.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;       endif.&lt;/P&gt;&lt;P&gt;       select * from tadir into table jtab&lt;/P&gt;&lt;P&gt;                     where pgmid = 'R3TR'&lt;/P&gt;&lt;P&gt;                       and object = 'SMOD'&lt;/P&gt;&lt;P&gt;                       and devclass = v_devclass.&lt;/P&gt;&lt;P&gt;        select single * from tstct where sprsl eq sy-langu and&lt;/P&gt;&lt;P&gt;                                         tcode eq p_tcode.&lt;/P&gt;&lt;P&gt;        format color col_positive intensified off.&lt;/P&gt;&lt;P&gt;        write:/(19) 'Transaction Code - ',&lt;/P&gt;&lt;P&gt;             20(20) p_tcode,&lt;/P&gt;&lt;P&gt;             45(50) tstct-ttext.&lt;/P&gt;&lt;P&gt;                    skip.&lt;/P&gt;&lt;P&gt;        if not jtab[] is initial.&lt;/P&gt;&lt;P&gt;           write:/(95) sy-uline.&lt;/P&gt;&lt;P&gt;           format color col_heading intensified on.&lt;/P&gt;&lt;P&gt;           write:/1 sy-vline,&lt;/P&gt;&lt;P&gt;                  2 'Exit Name',&lt;/P&gt;&lt;P&gt;                 21 sy-vline ,&lt;/P&gt;&lt;P&gt;                 22 'Description',&lt;/P&gt;&lt;P&gt;                 95 sy-vline.&lt;/P&gt;&lt;P&gt;           write:/(95) sy-uline.&lt;/P&gt;&lt;P&gt;           loop at jtab.&lt;/P&gt;&lt;P&gt;              select single * from modsapt&lt;/P&gt;&lt;P&gt;                     where sprsl = sy-langu and&lt;/P&gt;&lt;P&gt;                            name = jtab-obj_name.&lt;/P&gt;&lt;P&gt;                   format color col_normal intensified off.&lt;/P&gt;&lt;P&gt;                   write:/1 sy-vline,&lt;/P&gt;&lt;P&gt;                          2 jtab-obj_name hotspot on,&lt;/P&gt;&lt;P&gt;                         21 sy-vline ,&lt;/P&gt;&lt;P&gt;                         22 modsapt-modtext,&lt;/P&gt;&lt;P&gt;                         95 sy-vline.&lt;/P&gt;&lt;P&gt;           endloop.&lt;/P&gt;&lt;P&gt;           write:/(95) sy-uline.&lt;/P&gt;&lt;P&gt;           describe table jtab.&lt;/P&gt;&lt;P&gt;           skip.&lt;/P&gt;&lt;P&gt;           format color col_total intensified on.&lt;/P&gt;&lt;P&gt;           write:/ 'No of Exits:' , sy-tfill.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;           format color col_negative intensified on.&lt;/P&gt;&lt;P&gt;           write:/(95) 'No User Exit exists'.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;          format color col_negative intensified on.&lt;/P&gt;&lt;P&gt;          write:/(95) 'Transaction Code Does Not Exist'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;at line-selection.&lt;/P&gt;&lt;P&gt;   get cursor field field1.&lt;/P&gt;&lt;P&gt;   check field1(4) eq 'JTAB'.&lt;/P&gt;&lt;P&gt;   set parameter id 'MON' field sy-lisel+1(10).&lt;/P&gt;&lt;P&gt;   call transaction 'SMOD' and skip first   screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*---End of Program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Priya.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:14:34 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520150#M846626</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-10T09:14:34Z</dc:date>
    </item>
    <item>
      <title>Re: User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520151#M846627</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Difference Between BADI and User Exits &lt;/P&gt;&lt;P&gt;Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. 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.  &lt;/P&gt;&lt;P&gt;As with customer exits two different views are available: &lt;/P&gt;&lt;P&gt;In the definition view, an application programmer predefines exit points in a source that allow specific industry sectors, partners, and customers to attach additional software to standard SAP source code without having to modify the original object.  &lt;/P&gt;&lt;P&gt;In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard logic if one is available. &lt;/P&gt;&lt;P&gt;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, partner, and customer solutions, as well as country versions, industry solutions, and the like). Definitions and implementations of Business Add-Ins can be created at each level within such a system infrastructure. &lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;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 control add-in implementation and make it dependent on specific criteria (on a specific Country value, for example). &lt;/P&gt;&lt;P&gt;All ABAP sources, screens, GUIs, and table interfaces created using this enhancement technique are defined in a manner that allows 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. &lt;/P&gt;&lt;P&gt;The actual program code is enhanced using ABAP Objects. In order to better understand the programming techniques behind the Business Add-In enhancement concept, SAP recommends reading the section on ABAP Objects. &lt;/P&gt;&lt;P&gt;What is difference between badi and user-exists? &lt;/P&gt;&lt;P&gt;What is difference between enhancements and user-exists? and what is the full form of BADI? &lt;/P&gt;&lt;P&gt;I have another doubt in BDC IN BDC WE HAVE MSEGCALL (i did not remember the &amp;gt; correct name) where the error logs are stored, MSEGCALL is a table or structure. &lt;/P&gt;&lt;P&gt;What is the system landscape? &lt;/P&gt;&lt;P&gt;1) Difference between BADI and USER-EXIT. &lt;/P&gt;&lt;P&gt;    i) BADI's can be used any number of times, where as USER-EXITS can be used only one time. &lt;/P&gt;&lt;P&gt;       Ex:- if your assigning a USER-EXIT to a project in (CMOD), then you can not assign the same to other project. &lt;/P&gt;&lt;P&gt;    ii) BADI's are oops based. &lt;/P&gt;&lt;P&gt;2) About 'BDCMSGCOLL' it is a structure.  Used for finding error records. &lt;/P&gt;&lt;P&gt;3) Full form of BADI 'Business addins'. &lt;/P&gt;&lt;P&gt;3) System land scape will be depends on your project  &lt;/P&gt;&lt;P&gt;    Ex:- 'Development server'&lt;DEL&gt;&amp;gt;'Quality server'&lt;/DEL&gt;-&amp;gt; 'Production server'......  &lt;/P&gt;&lt;P&gt;Business Add-Ins&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;As with  customer exits, two different views are available:&lt;/P&gt;&lt;P&gt;&amp;#149;         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. &lt;/P&gt;&lt;P&gt;&amp;#149;         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.&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;The actual program code is enhanced using ABAP Objects. In order to better understand the enhancement technique behind the Business Add, we recommend reading the section  ABAP Objects.&lt;/P&gt;&lt;P&gt;User exits : &lt;/P&gt;&lt;P&gt;1. Introduction &lt;/P&gt;&lt;P&gt;2. How to find user exits &lt;/P&gt;&lt;P&gt;3. Using Project management of SAP Enhancements  &lt;/P&gt;&lt;P&gt;1. Introduction: &lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;The naming standard of function modules for functionmodule exits is:  &lt;/P&gt;&lt;P&gt;EXIT_&amp;lt;program name&amp;gt;&amp;lt;3 digit suffix&amp;gt;  &lt;/P&gt;&lt;P&gt;The call to a functionmodule exit is implemented as: &lt;/P&gt;&lt;P&gt;CALL CUSTOMER.-FUNCTION &lt;span class="lia-unicode-emoji" title=":red_heart:"&gt;❤️&lt;/span&gt; digit suffix&amp;gt; &lt;/P&gt;&lt;P&gt;Example: &lt;/P&gt;&lt;P&gt;The program for transaction VA01 Create salesorder is SAPMV45A &lt;/P&gt;&lt;P&gt;If you search for CALL CUSTOMER-FUNCTION i program &lt;/P&gt;&lt;P&gt;SAPMV45A you will find ( Among other user exits): &lt;/P&gt;&lt;P&gt;CALL CUSTOMER-FUNCTION '003' &lt;/P&gt;&lt;P&gt;  exporting &lt;/P&gt;&lt;P&gt;    xvbak   = vbak &lt;/P&gt;&lt;P&gt;    xvbuk   = vbuk &lt;/P&gt;&lt;P&gt;    xkomk   = tkomk &lt;/P&gt;&lt;P&gt;  importing &lt;/P&gt;&lt;P&gt;    lvf_subrc = lvf_subrc &lt;/P&gt;&lt;P&gt;  tables &lt;/P&gt;&lt;P&gt;    xvbfa = xvbfa &lt;/P&gt;&lt;P&gt;    xvbap = xvbap &lt;/P&gt;&lt;P&gt;    xvbup = xvbup. &lt;/P&gt;&lt;P&gt;The exit calls function module EXIT_SAPMV45A_003 &lt;/P&gt;&lt;P&gt;2. How to find user exits? &lt;/P&gt;&lt;P&gt;Display the program where you are searching for and exit and search for CALL CUSTOMER-EXIT &lt;/P&gt;&lt;P&gt;If you know the Exit name, go to transaction CMOD. &lt;/P&gt;&lt;P&gt;Choose menu Utillities-&amp;gt;SAP Enhancements. Enter the exit name and press enter. &lt;/P&gt;&lt;P&gt;You will now come to a screen that shows the function module exits for the exit. &lt;/P&gt;&lt;P&gt;3. Using Project management of SAP Enhancements, we want to create a project to enahance trasnaction VA01 . &lt;/P&gt;&lt;P&gt;- Go to transaction CMOD &lt;/P&gt;&lt;P&gt;- Create a project called ZVA01 &lt;/P&gt;&lt;P&gt;- Choose the Enhancement assign radio button and press the Change button &lt;/P&gt;&lt;P&gt;In the first column enter V45A0002 Predefine sold-to party in sales document.  &lt;/P&gt;&lt;P&gt;Note that an enhancement can only be used in 1 project. If the enhancement is already in use, and error message will be displayed &lt;/P&gt;&lt;P&gt;Press Save &lt;/P&gt;&lt;P&gt;Press Components. You can now see that enhancement uses user exit EXIT_SAPMV45A_002. Double click on the exit. &lt;/P&gt;&lt;P&gt;Now the function module is displayed. Double click on include ZXVVAU04 in the function module &lt;/P&gt;&lt;P&gt;Insert the following code into the include: E_KUNNR = '2155'. &lt;/P&gt;&lt;P&gt;Activate the include program. Go back to CMOD and activate the project.  &lt;/P&gt;&lt;P&gt;Goto transaction VA01 and craete a salesorder.  &lt;/P&gt;&lt;P&gt;Note that Sold-to-party now automatically is "2155" &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Priya.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:16:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520151#M846627</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-10T09:16:37Z</dc:date>
    </item>
    <item>
      <title>Re: User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520152#M846628</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Report ZMS_ACTIVE_EXITS&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; This report displays all the active customer enhancements in the&lt;/P&gt;&lt;P&gt;*&amp;amp; system and also displays whether they are active or implemented&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;REPORT ZMS_ACTIVE_EXITS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data decleration &lt;/P&gt;&lt;P&gt;types: begin of s_function,&lt;/P&gt;&lt;P&gt;fname like MOD0-FUNCNAME,&lt;/P&gt;&lt;P&gt;ftext like tftit-stext,&lt;/P&gt;&lt;P&gt;impl,&lt;/P&gt;&lt;P&gt;active,&lt;/P&gt;&lt;P&gt;example,&lt;/P&gt;&lt;P&gt;end of s_function.&lt;/P&gt;&lt;P&gt;TYPEs : BEGIN OF display_str,&lt;/P&gt;&lt;P&gt;project type modact-name,&lt;/P&gt;&lt;P&gt;enhancement type modact-member,&lt;/P&gt;&lt;P&gt;fm type modsap-member,&lt;/P&gt;&lt;P&gt;status type char20,&lt;/P&gt;&lt;P&gt;END OF display_str.&lt;/P&gt;&lt;P&gt;data : lt_member type table of modact-member,&lt;/P&gt;&lt;P&gt;ls_member like LINE OF lt_member,&lt;/P&gt;&lt;P&gt;lt_fm type table of modsap-member,&lt;/P&gt;&lt;P&gt;ls_fm like LINE OF lt_fm,&lt;/P&gt;&lt;P&gt;lt_modname type table of modact-name,&lt;/P&gt;&lt;P&gt;ls_modname like line of lt_modname,&lt;/P&gt;&lt;P&gt;lt_display type TABLE OF display_str,&lt;/P&gt;&lt;P&gt;ls_display like LINE OF lt_display,&lt;/P&gt;&lt;P&gt;ls_function type s_function,&lt;/P&gt;&lt;P&gt;field1(30).&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Select active customer enhancement. &lt;/P&gt;&lt;P&gt;select name from modattr into ls_modname&lt;/P&gt;&lt;P&gt;where status = 'A'.&lt;/P&gt;&lt;P&gt;append ls_modname to lt_modname.&lt;/P&gt;&lt;P&gt;CLEAR ls_modname.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;if lt_modname is INITIAL.&lt;/P&gt;&lt;P&gt;WRITE / 'no active enhancements'.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Determine the details about the customer enhancement. &lt;/P&gt;&lt;P&gt;LOOP AT lt_modname INTO ls_modname.&lt;/P&gt;&lt;P&gt;CLEAR : ls_display.&lt;/P&gt;&lt;P&gt;SELECT member from modact into ls_member where name = ls_modname.&lt;/P&gt;&lt;P&gt;select member from modsap into ls_fm where name = ls_member and typ = 'E'.&lt;/P&gt;&lt;P&gt;ls_display-project = ls_modname.&lt;/P&gt;&lt;P&gt;ls_display-enhancement = ls_member.&lt;/P&gt;&lt;P&gt;ls_display-fm = ls_fm.&lt;/P&gt;&lt;P&gt;clear : ls_function.&lt;/P&gt;&lt;P&gt;ls_function-fname = ls_fm.&lt;/P&gt;&lt;P&gt;perform get_impl_status USING ls_function.&lt;/P&gt;&lt;P&gt;if ls_function-impl = 'X'.&lt;/P&gt;&lt;P&gt;ls_display-status = 'Implemented'.&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;ls_display-status = 'Active'.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;APPEND ls_display to lt_display.&lt;/P&gt;&lt;P&gt;endselect.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Displaying results &lt;/P&gt;&lt;P&gt;format color = 1.&lt;/P&gt;&lt;P&gt;write : 'Please double-click on the object for follow-on action'.&lt;/P&gt;&lt;P&gt;new-LINE. uline.&lt;/P&gt;&lt;P&gt;write : 'Customer Project', at 30 'SAP Enhancement', at 60 'Exit Function Modul&lt;/P&gt;&lt;P&gt;e', at 100 'Active/Implemented'.&lt;/P&gt;&lt;P&gt;ULINE.&lt;/P&gt;&lt;P&gt;format color = 0.&lt;/P&gt;&lt;P&gt;loop at lt_display into ls_display.&lt;/P&gt;&lt;P&gt;new-LINE.&lt;/P&gt;&lt;P&gt;write : ls_display-project, at 30 ls_display-enhancement, at 60 ls_displayfm,&lt;/P&gt;&lt;P&gt;at 100 ls_display-status.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For calling transaction CMOD / SMOD / SE37. &lt;/P&gt;&lt;P&gt;at line-selection.&lt;/P&gt;&lt;P&gt;get cursor field field1.&lt;/P&gt;&lt;P&gt;CASE field1.&lt;/P&gt;&lt;P&gt;WHEN 'LS_DISPLAY-PROJECT'.&lt;/P&gt;&lt;P&gt;set parameter id 'MON_KUN' field sy-lisel(10).&lt;/P&gt;&lt;P&gt;call transaction 'CMOD' and skip first screen.&lt;/P&gt;&lt;P&gt;WHEN 'LS_DISPLAY-ENHANCEMENT'.&lt;/P&gt;&lt;P&gt;set parameter id 'MON' field sy-lisel+29(10).&lt;/P&gt;&lt;P&gt;call transaction 'SMOD' and skip first screen.&lt;/P&gt;&lt;P&gt;WHEN 'LS_DISPLAY-FM'.&lt;/P&gt;&lt;P&gt;set parameter id 'LIB' field sy-lisel+59(30).&lt;/P&gt;&lt;P&gt;call transaction 'SE37' and skip first screen.&lt;/P&gt;&lt;P&gt;WHEN OTHERS.&lt;/P&gt;&lt;P&gt;message 'Click on the right place.' TYPE 'I'.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form get_impl_status&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This FORM checks whether an EXIT FM is implemented or not&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------------------------" /&gt;&lt;P&gt;form get_impl_status using p_function type s_function.&lt;/P&gt;&lt;P&gt;data : l_mand LIKE tfdir-mand,&lt;/P&gt;&lt;P&gt;l_incl_names TYPE smod_names OCCURS 1 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;l_incl_names-itype = 'C'.&lt;/P&gt;&lt;P&gt;APPEND l_incl_names.&lt;/P&gt;&lt;P&gt;CLEAR l_mand.&lt;/P&gt;&lt;P&gt;SELECT SINGLE mand FROM tfdir INTO l_mand WHERE funcname = p_function-fname.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0 AND l_mand(1) = 'C'.&lt;/P&gt;&lt;P&gt;p_function-active = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;l_status-active = c_true. &lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;p_function-active = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;l_status-inactive = c_true. &lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'MOD_FUNCTION_INCLUDE'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;funcname = p_function-fname&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;incl_names = l_incl_names&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;OTHERS = 4.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;LOOP AT l_incl_names.&lt;/P&gt;&lt;P&gt;SELECT SINGLE name FROM trdir INTO l_incl_names-iname&lt;/P&gt;&lt;P&gt;WHERE name = l_incl_names-iname.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;p_function-impl = 'X'.&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;p_function-impl = ' '.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;endform. "get_impl_status&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Hope this helps, Do reward.&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:16:55 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520152#M846628</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-10T09:16:55Z</dc:date>
    </item>
    <item>
      <title>Re: User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520153#M846629</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI&lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The naming standard of function modules for functionmodule exits is:  &lt;/P&gt;&lt;P&gt;EXIT_&amp;lt;program name&amp;gt;&amp;lt;3 digit suffix&amp;gt;  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The call to a functionmodule exit is implemented as: &lt;/P&gt;&lt;P&gt;CALL CUSTOMER.-FUNCTION &lt;span class="lia-unicode-emoji" title=":red_heart:"&gt;❤️&lt;/span&gt; digit suffix&amp;gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The program for transaction VA01 Create salesorder is SAPMV45A &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you search for CALL CUSTOMER-FUNCTION i program &lt;/P&gt;&lt;P&gt;SAPMV45A you will find ( Among other user exits): &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL CUSTOMER-FUNCTION '003' &lt;/P&gt;&lt;P&gt;  exporting &lt;/P&gt;&lt;P&gt;    xvbak   = vbak &lt;/P&gt;&lt;P&gt;    xvbuk   = vbuk &lt;/P&gt;&lt;P&gt;    xkomk   = tkomk &lt;/P&gt;&lt;P&gt;  importing &lt;/P&gt;&lt;P&gt;    lvf_subrc = lvf_subrc &lt;/P&gt;&lt;P&gt;  tables &lt;/P&gt;&lt;P&gt;    xvbfa = xvbfa &lt;/P&gt;&lt;P&gt;    xvbap = xvbap &lt;/P&gt;&lt;P&gt;    xvbup = xvbup. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The exit calls function module EXIT_SAPMV45A_003 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. How to find user exits? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Display the program where you are searching for and exit and search for CALL CUSTOMER-EXIT &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you know the Exit name, go to transaction CMOD. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Choose menu Utillities-&amp;gt;SAP Enhancements. Enter the exit name and press enter. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You will now come to a screen that shows the function module exits for the exit. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. Using Project management of SAP Enhancements, we want to create a project to enahance trasnaction VA01 . &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Go to transaction CMOD &lt;/P&gt;&lt;P&gt;- Create a project called ZVA01 &lt;/P&gt;&lt;P&gt;- Choose the Enhancement assign radio button and press the Change button &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the first column enter V45A0002 Predefine sold-to party in sales document.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note that an enhancement can only be used in 1 project. If the enhancement is already in use, and error message will be displayed &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Press Save &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Press Components. You can now see that enhancement uses user exit EXIT_SAPMV45A_002. Double click on the exit. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now the function module is displayed. Double click on include ZXVVAU04 in the function module &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Insert the following code into the include: E_KUNNR = '2155'. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Activate the include program. Go back to CMOD and activate the project.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Goto transaction VA01 and craete a salesorder.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note that Sold-to-party now automatically is "2155" &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************&lt;/P&gt;&lt;P&gt;Difference between user exits &amp;amp; customer exits: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;User exit - A user exit is a three character code that instructs the system to access a program during system processing. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SXX: S is for standard exits that are delivered by SAP.   XX represents the 2-digit exit number. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;UXX: U is for user exits that are defined by the user.  XX represents the 2-digit exit number &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Customer exit - The R/3 enhancement concept allows you to add your own functionality to SAP&amp;#146;s standard business applications without having to modify the original applications. 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.     *-- Mani &lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The following document is about exits in SAP :- &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The R/3 enhancement concept allows you to add your own functionality to SAP&amp;#146;s standard business applications without having to modify the original applications.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SAP creates user 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. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Types of Exits  &lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Menu Exits &lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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&amp;#146;s text when activating the item in an add-on project. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Screen Exits &lt;/P&gt;&lt;P&gt;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&amp;#146;s flow logic. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Function Module Exits  &lt;/P&gt;&lt;P&gt;Function module exits add functions to R/3 applications. Function module exits play a role in both menu and screen exits.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These calls have the following syntax:  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL CUSTOMER-FUNCTION &amp;#145;001&amp;#146;. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field Exits &lt;/P&gt;&lt;P&gt;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&amp;#146;s international location number. You might want to set up your R/3 System so that all international location numbers are larger than 100.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The field exit concept lets you create a special function module that contains this logic.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In 4.6c, you can use "RSMODPRF" program to create field exits. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;An example of a user exits :- &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODULE user_exit_0001 INPUT  &lt;/P&gt;&lt;P&gt;    CASE okcode. &lt;/P&gt;&lt;P&gt;        WHEN 'BACK OR EXIT'. &lt;/P&gt;&lt;P&gt;            CASE sy-dynnr. &lt;/P&gt;&lt;P&gt;                    WHEN '100'. &lt;/P&gt;&lt;P&gt;                         SET SCREEN 0. &lt;/P&gt;&lt;P&gt;                         LEAVE SCREEN. &lt;/P&gt;&lt;P&gt;                    WHEN '200'. &lt;/P&gt;&lt;P&gt; Note that you can write any code that satisfy your needs.                                          &lt;/P&gt;&lt;P&gt;But in this case, this was wrote as a sample code for reference sake.                               &lt;/P&gt;&lt;P&gt; And you can test it.                                                                                &lt;/P&gt;&lt;P&gt;SET SCREEN 100. &lt;/P&gt;&lt;P&gt;                         LEAVE SCREEN. &lt;/P&gt;&lt;P&gt;             ENDCASE. &lt;/P&gt;&lt;P&gt;      ENDCASE.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Difference Between BADI and User Exits &lt;/P&gt;&lt;P&gt;Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. 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.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As with customer exits two different views are available: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the definition view, an application programmer predefines exit points in a source that allow specific industry sectors, partners, and customers to attach additional software to standard SAP source code without having to modify the original object.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard logic if one is available. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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, partner, and customer solutions, as well as country versions, industry solutions, and the like). Definitions and implementations of Business Add-Ins can be created at each level within such a system infrastructure. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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 control add-in implementation and make it dependent on specific criteria (on a specific Country value, for example). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;All ABAP sources, screens, GUIs, and table interfaces created using this enhancement technique are defined in a manner that allows 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. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The actual program code is enhanced using ABAP Objects. In order to better understand the programming techniques behind the Business Add-In enhancement concept, SAP recommends reading the section on ABAP Objects.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:18:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520153#M846629</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-10T09:18:52Z</dc:date>
    </item>
    <item>
      <title>Re: User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520154#M846630</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are four different ways of changing the system to meet your requirements:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Customizing:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Allows you to change system parameters using a special interface. All possible&lt;/P&gt;&lt;P&gt;changes have been thought of and organized. Customizing is a mandatory part of setting up a&lt;/P&gt;&lt;P&gt;system.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Enhancement&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;concept: Allows you to change SAP Repository objects without modifications.&lt;/P&gt;&lt;P&gt;Customer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;development: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Creating customer-specific objects in accordance with the customer namespace conventions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Assisted modification: &lt;/P&gt;&lt;P&gt;You can carry out modifications to SAP Repository objects using the Modification Assistant. Modifications can lead to a considerably increased workload for an upgrade.&lt;/P&gt;&lt;P&gt;If there are changes on the same Repository object in the new Release, you have to adjust the&lt;/P&gt;&lt;P&gt;versions manually. The Modification Assistant can help you carry out the adjustment automatically&lt;/P&gt;&lt;P&gt;in parts. You can find additional information on the Modification Assistant in the SAP Library under&lt;/P&gt;&lt;P&gt;Basis Components --&amp;gt; ABAP Workbench --&amp;gt; Changing the SAP Standard --&amp;gt; Modification&lt;/P&gt;&lt;P&gt;Assistant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can enhance the R/3 System at the following levels:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Menu exit: The system contains various points at which you can include menu items that start&lt;/P&gt;&lt;P&gt;customer programs.&lt;/P&gt;&lt;P&gt;Screen exit: Some screens contain areas (subscreens) in which you can display your own&lt;/P&gt;&lt;P&gt;screens.&lt;/P&gt;&lt;P&gt;Field exits: Field exits allow you to incorporate extra field checks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Enhancement&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ABAP Dictionary&lt;/P&gt;&lt;P&gt;  Table enhancement&lt;/P&gt;&lt;P&gt;   Field exit&lt;/P&gt;&lt;P&gt;Customer exit&lt;/P&gt;&lt;P&gt;   Function module exit&lt;/P&gt;&lt;P&gt;   Screen exit&lt;/P&gt;&lt;P&gt;    Menu exit&lt;/P&gt;&lt;P&gt;Business transaction event (BTE)&lt;/P&gt;&lt;P&gt;Business Add-In&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) Difference between BADI and USER-EXIT. &lt;/P&gt;&lt;P&gt;    i) BADI's can be used any number of times, where as USER-EXITS can be used only one time. &lt;/P&gt;&lt;P&gt;       Ex:- if your assigning a USER-EXIT to a project in (CMOD), then you can not assign the same to other project. &lt;/P&gt;&lt;P&gt;    ii) BADI's are oops based. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Hope this helps, Do reward.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Runal Singh on Mar 10, 2008 2:55 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:23:13 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520154#M846630</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-10T09:23:13Z</dc:date>
    </item>
    <item>
      <title>Re: User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520155#M846631</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[Refer|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/208811b0-00b2-2910-c5ac-dd2c7c50c8e8]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[Also|&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/what-is-user-exits.htm]" target="test_blank"&gt;http://www.sap-img.com/abap/what-is-user-exits.htm]&lt;/A&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Refer to the followign links.&lt;/P&gt;&lt;P&gt;[http://www.sap-img.com/abap/what-is-user-exits.htm]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Creating menu exits&lt;/P&gt;&lt;P&gt;[http://help.sap.com/saphelp_nw04/helpdata/en/c8/19762743b111d1896f0000e8322d00/content.htm]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[http://help.sap.com/saphelp_nw2004s/helpdata/en/83/7a18cbde6e11d195460000e82de14a/frameset.htm]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For screen exits.&lt;/P&gt;&lt;P&gt;[http://wiki.ittoolbox.com/index.php/HOWTO:Implement_a_screen_exit_to_a_standard_SAP_transaction]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HTH&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dhruv Shah&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:23:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520155#M846631</guid>
      <dc:creator>dhruv_shah3</dc:creator>
      <dc:date>2008-03-10T09:23:49Z</dc:date>
    </item>
    <item>
      <title>Re: User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520156#M846632</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;User exit - A user exit is a three character code that instructs the system to access a program during system processing. &lt;/P&gt;&lt;P&gt;SXX: S is for standard exits that are delivered by SAP. XX represents the 2-digit exit number. &lt;/P&gt;&lt;P&gt;UXX: U is for user exits that are defined by the user. XX represents the 2-digit exit number &lt;/P&gt;&lt;P&gt;Customer exit - The R/3 enhancement concept allows you to add your own functionality to SAP&amp;#146;s standard business applications without having to modify the original applications. 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. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The program for transaction VA01 Create salesorder is SAPMV45A &lt;/P&gt;&lt;P&gt;If you search for CALL CUSTOMER-FUNCTION i program &lt;/P&gt;&lt;P&gt;SAPMV45A you will find ( Among other user exits): &lt;/P&gt;&lt;P&gt;CALL CUSTOMER-FUNCTION '003' &lt;/P&gt;&lt;P&gt;exporting &lt;/P&gt;&lt;P&gt;xvbak = vbak &lt;/P&gt;&lt;P&gt;xvbuk = vbuk &lt;/P&gt;&lt;P&gt;xkomk = tkomk &lt;/P&gt;&lt;P&gt;importing &lt;/P&gt;&lt;P&gt;lvf_subrc = lvf_subrc &lt;/P&gt;&lt;P&gt;tables &lt;/P&gt;&lt;P&gt;xvbfa = xvbfa &lt;/P&gt;&lt;P&gt;xvbap = xvbap &lt;/P&gt;&lt;P&gt;xvbup = xvbup. &lt;/P&gt;&lt;P&gt;The exit calls function module EXIT_SAPMV45A_003 &lt;/P&gt;&lt;P&gt;Development&lt;/P&gt;&lt;P&gt;Creating a Project to include the enhancement&lt;/P&gt;&lt;P&gt;1. Go to transaction CMOD and create a project. &lt;/P&gt;&lt;P&gt;2. Enter a description for the project. Then, click on the pushbutton &amp;#145;Enhancement Assignments&amp;#146; in the Application Toolbar. &lt;/P&gt;&lt;P&gt;3. Enter the name of the enhancement and Save. &lt;/P&gt;&lt;P&gt;4. Go to &amp;#145;Components&amp;#146;. &lt;/P&gt;&lt;P&gt;Creating Custom Include for ANLU&lt;/P&gt;&lt;P&gt;The screen shown below will appear, showing all the enhancement components under the assignment AIST0002. Double-click on the name of the Include Structure to create it. &lt;/P&gt;&lt;P&gt;Create the include structure with three new fields, as required. Then, save and activate it. &lt;/P&gt;&lt;P&gt;Develop the subscreen and the program&lt;/P&gt;&lt;P&gt;Go to transaction SE80. For the function group XAIS, create a new subscreen 9000. &lt;/P&gt;&lt;P&gt;Create it as subscreen. &lt;/P&gt;&lt;P&gt;Then, go to the Layout of the screen and create three new fields from Database table ANLU. &lt;/P&gt;&lt;P&gt;Drag the fields in the screen body and place them. &lt;/P&gt;&lt;P&gt;Then, save and activate the screen and come back to screen flow editor. &lt;/P&gt;&lt;P&gt;Create the PAI module to add validation for field &amp;#147;Location 2&amp;#148;, as required . &lt;/P&gt;&lt;P&gt;Activate the whole function group and come out. &lt;/P&gt;&lt;P&gt;Write code in the Function Exits to synchronize the programs&lt;/P&gt;&lt;P&gt;Now, code has to be written in the function modules EXIT_SAPLAIST_002 and EXIT_SAPLAIST_003 so that data flows to and fro between the main SAP program and custom subscreen program. For that, go back to transaction CMOD and change the function exits. &lt;/P&gt;&lt;P&gt;Write code in the function module EXIT_SAPLAIST_002 called once at the beginning of the transaction: &lt;/P&gt;&lt;P&gt;Write code in EXIT_SAPLAIST_003 to pass the data from the subscreen to SAP main program. &lt;/P&gt;&lt;P&gt;Then, activate everything &amp;#150; the whole project and come out. &lt;/P&gt;&lt;P&gt;Complete the configuration to link the subscreen&lt;/P&gt;&lt;P&gt;The development portion is complete. Now, linking of the subscreen has to be done with the subscreen area of the main program. In most of the cases, this linking can be done in the enhancement itself. But, here, requirement is a bit different. It is done by configuration using SPRO. &lt;/P&gt;&lt;P&gt;Assets are created under Asset class. And for each asset class, there is a layout assigned to it. For a layout, there are multiple tab pages assigned to it. And, for each tab page, there are multiple screen groups/field groups assigned. &lt;/P&gt;&lt;P&gt;Here, the requirement is to create these three custom fields in the tab page &amp;#145;General&amp;#146; of asset master screen ( AS01/AS02/AS03/AS91). &lt;/P&gt;&lt;P&gt;Determine the Layout&lt;/P&gt;&lt;P&gt;To achieve this, first of all, we need to find out which layout is assigned to asset class 1000.For that, go to transaction AOLK( information has to be obtained from functional consultant).Select the Asset Class &amp;#145;1000&amp;#146; and click on folder &amp;#145;General Assignment of Layout&amp;#146;. &lt;/P&gt;&lt;P&gt;Here, for Asset class 1000, for all the user groups, tab layout SAP is assigned. Since layout &amp;#145;SAP&amp;#146; cannot be changed, it has to be copied and manipulated to include our screen group. Later, the new layout has to be assigned over here. &lt;/P&gt;&lt;P&gt;Create new tab layout&lt;/P&gt;&lt;P&gt;Go to transaction AOLA. Copy the tab layout &amp;#145;SAP&amp;#146; to create another layout, say, YSUB. &lt;/P&gt;&lt;P&gt;System will copy all the settings and will inform you about that. &lt;/P&gt;&lt;P&gt;Select your newly created layout and double-click on the folder &amp;#145;Tab page titles&amp;#146;. &lt;/P&gt;&lt;P&gt;You want to put your custom fields in the tab page &amp;#147;General&amp;#148;. So, select this tab page entry and double-click on the folder "Position of Groups". &lt;/P&gt;&lt;P&gt;Here, all the field groups currently residing in the tab-page &amp;#147;General&amp;#148; are shown. Add an entry for your newly created fields. &lt;/P&gt;&lt;P&gt;Select the group box from the list. An entry will come with &amp;#147;U&amp;#148; padded with the custom subscreen prepared by you. &lt;/P&gt;&lt;P&gt;Then, save and come out. &lt;/P&gt;&lt;P&gt;Assign the new Layout to Asset Class&lt;/P&gt;&lt;P&gt;Now, go to tcode AOLK and assign tab layout YSUB for asset class 1000. &lt;/P&gt;&lt;P&gt;Save and come out. &lt;/P&gt;&lt;P&gt;Test the Exit&lt;/P&gt;&lt;P&gt;Everything is over. Now, go to transaction code AS01/02/03 or AS91 to deal with an asset of asset class 1000. You will see your new fields added to the screen. Add values to them&amp;#133;save. Then, enter into the tcodes again to see whether the values entered by you are being displayed or not. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BADI&lt;/P&gt;&lt;P&gt;BADI(Business Add-In) is the object oriented method of user exits...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Each BAdI has a definition and more than one implementation. The definition means the methods(in class concept) that are used for performing various functions. The BAdI definition can be viewed in SE18 transaction(for standard ones) and user-defined BAdIs can be created in the same transaction as well. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When you create a BAdI definition, an class interface will be automatically created and you can define your methods in the interface. The implementation of the methods can be done in SE19 transaction &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Intro.....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/e6/d54d3c596f0b26e10000000a11402f/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/e6/d54d3c596f0b26e10000000a11402f/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check these links for info about badi..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="2097977"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/rnd/papers/sugi30/SAP.ppt" target="test_blank"&gt;http://support.sas.com/rnd/papers/sugi30/SAP.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="2097977"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/rnd/papers/sugi30/SAP.ppt" target="test_blank"&gt;http://support.sas.com/rnd/papers/sugi30/SAP.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm" target="test_blank"&gt;http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://members.aol.com/_ht_a/skarkada/sap/" target="test_blank"&gt;http://members.aol.com/_ht_a/skarkada/sap/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.ct-software.com/reportpool_frame.htm" target="test_blank"&gt;http://www.ct-software.com/reportpool_frame.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.saphelp.com/SAP_Technical.htm" target="test_blank"&gt;http://www.saphelp.com/SAP_Technical.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.kabai.com/abaps/q.htm" target="test_blank"&gt;http://www.kabai.com/abaps/q.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.guidancetech.com/people/holland/sap/abap/" target="test_blank"&gt;http://www.guidancetech.com/people/holland/sap/abap/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.planetsap.com/download_abap_programs.htm" target="test_blank"&gt;http://www.planetsap.com/download_abap_programs.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;/people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series&lt;/P&gt;&lt;P&gt;/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&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/web/BAdI" target="test_blank"&gt;http://www.esnips.com/web/BAdI&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.allsaplinks.com/badi.html" target="test_blank"&gt;http://www.allsaplinks.com/badi.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="143565"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Omkaram.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:24:07 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520156#M846632</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-10T09:24:07Z</dc:date>
    </item>
    <item>
      <title>Re: User Exits</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520157#M846633</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your response.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please give me any scenario in User Exit for Customer Master, if anyone has worked on it or gone through.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Srik&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Mar 2008 09:45:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/user-exits/m-p/3520157#M846633</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-10T09:45:04Z</dc:date>
    </item>
  </channel>
</rss>

