Вы находитесь на странице: 1из 9

User Exit 1. Bsqueda de User Exit 1.1.

Mtodo 1: Mdulo de funcin Entrar a la transaccin SE93 y escribir la transaccin de la que se desean buscar los user exit y dar click en el botn Display.
FD01: mantenimiento de datos maestros de clientes.

Copiar en el portapapeles el nombre del programa:

Entrar a la transaccin SE37 y buscar (F4) los mdulos de funcin EXIT_SAPMF02D_*, donde SAPMF02D es el nombre del programa encontrado en el paso anterior.

El resultado muestra los user exit disponibles para la transaccin, de esta lista hay que elegir el correspondiente para lo que deseemos realizar.

Una vez seleccionado el user exit le damos click en el botn Display para ver el cdigo de este mdulo de funcin.

En la pestaa Source code muestra el Include disponible para escribir el cdigo personalizado.

1.2. Mtodo 2: Cdigo Para buscar los user exit tambin se pude crear un programa que los busque con el siguiente cdigo:
REPORT * * * * * * * * ZBUSCAR_USER_EXIT.

Finding the user-exits of a SAP transaction code Enter the transaction code in which you are looking for the user-exit and it will list you the list of user-exits in the transaction code. Also a drill down is possible which will help you to branch to SMOD. Written by : SAP Basis, ABAP Programming and Other IMG Stuff http://www.sap-img.com

TABLES : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir. TABLES : tstct. DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE. DATA : field1(30). DATA : v_devclass LIKE tadir-devclass. PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY. SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode. IF sy-subrc EQ 0. SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' AND object = 'PROG' AND obj_name = tstc-pgmna. MOVE : tadir-devclass TO v_devclass. IF sy-subrc NE 0. SELECT SINGLE * FROM trdir WHERE name = tstc-pgmna. IF trdir-subc EQ 'F'. SELECT SINGLE * FROM tfdir WHERE pname = tstc-pgmna. SELECT SINGLE * FROM enlfdir WHERE funcname = tfdir-funcname. SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' AND object = 'FUGR' AND obj_name EQ enlfdir-area. MOVE : tadir-devclass TO v_devclass. ENDIF. ENDIF. SELECT * FROM tadir INTO TABLE jtab WHERE pgmid = 'R3TR' AND object = 'SMOD' AND devclass = v_devclass. SELECT SINGLE * FROM tstct WHERE sprsl EQ sy-langu AND tcode EQ p_tcode. FORMAT COLOR COL_POSITIVE INTENSIFIED OFF. WRITE:/(19) 'Transaction Code - ', 20(20) p_tcode, 45(50) tstct-ttext. SKIP. IF NOT jtab[] IS INITIAL. WRITE:/(95) sy-uline.

FORMAT COLOR COL_HEADING INTENSIFIED ON. WRITE:/1 sy-vline, 2 'Exit Name', 21 sy-vline , 22 'Description', 95 sy-vline. WRITE:/(95) sy-uline. LOOP AT jtab. SELECT SINGLE * FROM modsapt WHERE sprsl = sy-langu AND name = jtab-obj_name. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. WRITE:/1 sy-vline, 2 jtab-obj_name HOTSPOT ON, 21 sy-vline , 22 modsapt-modtext, 95 sy-vline. ENDLOOP. WRITE:/(95) sy-uline. DESCRIBE TABLE jtab. SKIP. FORMAT COLOR COL_TOTAL INTENSIFIED ON. WRITE:/ 'No of Exits:' , sy-tfill. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(95) 'No User Exit exists'. ENDIF. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(95) 'Transaction Code Does Not Exist'. ENDIF. AT LINE-SELECTION. GET CURSOR FIELD field1. CHECK field1(4) EQ 'JTAB'. SET PARAMETER ID 'MON' FIELD sy-lisel+1(10). CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN. *---End of Program

Al ejecutar este cdigo debemos de escribir la transaccin de la cual se desean buscar los user exit:

En el resultado podemos ver que en la primera columna aparece el nombre del exit que corresponde al nombre del programa encontrado en el mtodo 1:

Dando click en el nombre del exit, accedemos a la transaccin SMOD desde donde podemos ver los atributos y componentes de este exit:

Seleccionando la opcin de Componentes y dando click en el botn Display se muestran los mdulos de funcin disponibles para los user exit:

Dando doble click al mdulo de funcin llegamos al cdigo donde se encuentra el include para el cdigo personalizado:

2. Ejemplo de User Exit Queremos aadir una validacin adicional en la transaccin FD01 para evitar que se duplique el RFC (Tax Number 1) con diferente cliente. Primero se necesita crear un proyecto para incluir la ampliacin. En la transaccin CMOD especificar el nombre y click en el botn Create.

Especificar la descripcin y click en la opcin Enhancement assignments:

En la columna Enhancement colocar el nombre del programa donde se localiza el user exit y click en Enter para mostrar la descripcin.

Al hacer clic en la opcin Components muestra el mdulo de funcin del user exit:

Haciendo doble click en el mdulo de funcin nos muestra el cdigo donde personalizaremos el include.

En el include ZXF04U01 colocamos el siguiente cdigo:


*&---------------------------------------------------------------------* *& Include ZXF04U01 *&---------------------------------------------------------------------* * Definicin de variables TABLES: kna1. DATA: lv_kunnr LIKE kna1-kunnr.

" Nmero de cliente

* Si el pais es Mxico validar que el RFC sea obligatorio IF i_kna1-land1 = 'MX' " Si Pas = Mxico AND i_kna1-stcd1 IS INITIAL. " y RFC vaco MESSAGE 'Falta escribir el RFC.' type 'E'. ELSEIF i_kna1-land1 = 'MX' " Si Pas = Mxico AND i_kna1-stcd1 IS NOT INITIAL. " y RFC no es vaco CLEAR lv_kunnr. " Limpiar nmero de cliente SELECT SINGLE kunnr INTO lv_kunnr " Selecciona un cliente FROM kna1

WHERE kunnr <> i_kna1-kunnr AND stcd1 = i_kna1-stcd1.

" diferente al cliente actual " con el mismo RFC

IF sy-subrc = 0. " Si se encontr un cliente con el mismo RFC MESSAGE 'Ya existe un cliente con ese RFC, favor de modificarlo' typ e 'E'. ENDIF. ENDIF.

Activamos el include y nos regresamos a la pantalla de los componentes del proyecto de ampliacin, ah el proyecto:

Al mostrar los indicadores en verde, la ampliacin del user exit ha sido activada:

Para comprobar la aplicacin hay que reiniciar la transaccin FD01 y probar los mensajes.

Enlaces de interes: Blog de SAP: http://saptricks.wordpress.com/

Enlaces de User exit: http://saptricks.wordpress.com/2011/01/30/user-exits-como-localizarlas/ http://saptricks.wordpress.com/2011/04/21/truco-7-uso-de-user-exits-paraverificaciones-en-datos-maestros/ http://saptricks.wordpress.com/2011/11/27/user-exits-ampliaciones-badis-comolocalizarlas-ii/ 8

Вам также может понравиться