PDA

Ver la Versión Completa : Problema con las user exits


jlpdky2
30/10/07, 06:42:48
Hola a todos!
Necesito saber como funcionan las user exits, no encuentro ningo manual claro ni nada parecido.
Se que son trozos de codigo libre, pero como se que user exit es donde tengo que meter mi codigo? Se que hay un programa que a partir de la transacción te dice que user exits son, pero cuando se ejecutan? Que user exits pertenecen a un programa? Como funcionan? Tengo tantas dudas... cualquier ayuda me seria muy util.
Muchas gracias a todos.

ballan
30/10/07, 11:21:36
Las user-exit son puntos estrategicos en la logica de un programa donde podemos añadir codigo propio, por ejemplo para la grabacion de un pedido de ventas, hay una user-exit antes de grabar el documento, otra justo despues de haber grabado el documento, en el momento de calcular los precios, etc..

La manera mas rapida de saber que user-exit es la adecuada es poner un break-point y ejecutar la transaccion, cuando se pare observa los datos que tienes y si te sirven para realizar lo que tu quieres

Si tienes alguna otra duda exponla aqui y te respoderemos

jlpdky2
31/10/07, 14:50:32
Muchas gracias!!!

Otra dudilla: como se relacionan las user exits con la transaccion?
porque pongo breakpoint y la ejecucion no pasa por ahi...

c_quintero
02/11/07, 16:13:30
mira , aqui te dejo un programa que te ayuda a encontrar las user exits que existen para una transaccion

lo corres y te manda una lista de cuales hay (si es que hay) , simplemente de das click a una y te manda directo a la tx SMOD donde checas las ampliaciones , le das en verificar y te manda una lista de las funciones exits que hay en esa ampliacion , lo unico que debes hacer darle click a alguna para que te lleve a donde esta el include donde pondrias tu validacion y ponerle un break ,activar el include y la funcion exit y de esa forma puedes ver a cual user exit entra cuando haces alguna accion como por ejemplo SAVE

REPORT zbusca_user_exit NO STANDARD PAGE HEADING.

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.

espero te haya ayudado con eso

saludos

yanes
10/01/08, 06:03:55
Hola adicional al programa que enviaron, muy bueno por cierto, quisiera saber como puedo ver una user exit, ver el programa, no soy ABAP asi que disculpen la ignorancia...

robert_milan
10/01/08, 07:21:13
necesitas entrar a la cmod, o smod, para poder ver la ampliacion del objeto

yanes
11/01/08, 15:01:46
Gracias por la pronta respuesta......