User exits

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

A Short Tutorial on User Exits

Content Author: Abhishek

User exits :

1. Introduction
2. How to find user exits
3. Using Project management of SAP Enhancements 

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_<3 digit suffix> 

The call to a functionmodule exit is implemented as:
CALL CUSTOMER.-FUNCTION <3 digit suffix>

Example:

The program for transaction VA01 Create salesorder is SAPMV45A

If you search for CALL CUSTOMER-FUNCTION i program (SAP提供的源代碼掃描程序:RPR_ABAP_SOURCE_SCAN)
SAPMV45A you will find ( Among other user exits):

CALL CUSTOMER-FUNCTION '003'
  exporting
    xvbak   = vbak
    xvbuk   = vbuk
    xkomk   = tkomk
  importing
    lvf_subrc = lvf_subrc
  tables
    xvbfa = xvbfa
    xvbap = xvbap
    xvbup = xvbup.

The exit calls function module EXIT_SAPMV45A_003

2. How to find user exits?

(1) Display the program where you are searching for and exit and search for CALL CUSTOMER-EXIT

(2) If you know the Exit name, go to transaction CMOD.

(3) Choose menu Utillities->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"

 

 

 

 

Field exits (SMOD/CMOD) Questions and Answers

1. Field exit was created with CMOD, but is not processed when calling the screen.

-  Since the field exit is not processed until PAI, an action must be triggered on the screen (Return, Save, ...).

-  Set profile parameter abap/fieldexit to YES and restart the system.

-  After activating the function module FIELD_EXIT... and the field exit, leave the transaction on whose screen the field exit is to be executed. The screen is not generated until the transaction is started.

- Do not work on different application servers since there may be some delay before the field exit is activated.

- The profile parameter must be set on all or none of the application servers.

- If the field exit is to only be active on specific screens, check whether you chose the correct program and the correct screen
      number (take care with subscreens).

- Using SE51 -> Field list, check that the screen field does have a reference to a data element. In the name of the field exit use the name of the data element and not the field name.

- After transport, field exits are marked as active but will not be processed. 
   Tip: First try deactivating the field exit once more and then afterwards, activate it again.

2. How is performance affected by setting abap/fieldexit?

- If a screen is generated and the profile parameter is set, a check is run on 2 tables (TDDIR, TDDIRS) to see whether a field exit must be generated for the respective field. In practice, the screen load is not generated until the screen is selected after an
update. The user should not notice any difference because screen generation is very fast.

3. Can you read the contents of other screen fields in the field exit?

- In principle, every field exit can store its value in the global variables of the function group (TOP) and hence make them
available to other field exits. Note here that field exits are always called and not only if an entry is made in the field or if the field is empty. In addition, it is not possible to make any assumptions about the order in which the field exits will be called in the future.

4. How does the field exit behave on step loop fields ?

- After the user has entered data, the field exit is called in PAI as often as there are visible fields in the step loop. The system
variable SY-STEPL is incremented each time. If a new value is assigned to the field, it is displayed in the module between LOOP and ENDLOOP. This module is also called once for each visible step loop line.

5. Can field exits be debugged ?

- No. Field exits must be tested separately in the ABAP/4 Development Workbench. For errors which only occur in the screen environment, it is helpful to write interesting variable to the file system using TRANSFER... . These can then be analysed there.

6. What can you do if the field contents are no longer transported to to ABAP/4.

- Check whether a value is assigned to the field OUTPUT.

7. When is the field exit called if a conversion exit is attached to the
   data element ?

- The field exit is called after the conversion exit. This means that the INPUT field receives the data in the same format as the
ABAP/4 program also receives it.

8. Although a global field exit is inactive, a function module is called which does not exist (for example FIELD_EXIT_PROGRAMM_@)

- This is an error in the kernel which no longer occurs as of 3.0C.  As a temporary measure, it is useful to assign a program and a screen which do not exist to the field exit and then activate the field exit.

9. Field exit is not visible in CMOD, although created.

- If you want to create a field exit for a data element, a function module is proposed with the name FIELD_EXIT_. This
function module must exist for the field exit to work. If you do not create this function module, but do create one with a suffix,
the data element is not displayed in CMOD.

10. Field exit is not executed although it is active.

-  Fields which do not have the 'Input field' attribute usually do not trigger a field exit. The field exit is designed to allow an
extended input check. It is therefore only called for input fields - even if they are not ready for input at runtime of the         application by LOOP AT SCREEN.
This rule does not apply, however, if the field is located within a steploop. Here the field will be always activated, even if it is
invisible.

- Field exits can only be executed for fields that are directly related tothe dictionary. If the relation is indirect, i.e. via an       ABAP declaration (  LIKE ), no field exit can be executed.

11. Field exits on check buttons do not work

-  Field exits are only intended for input fields. As check buttons count as graphical elements, you cannot install field exits on
them.

12. Field exits do not work on selection screens

 

 

Finding the user-exits of a SAP transaction code

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9333231/viewspace-404959/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9333231/viewspace-404959/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值