If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.
Hola que tal?
Mira un user exit puede ser de varios tipos uno de ellos es un function module exit, que es una función que se declara en el programa standar de SAP y a esta función tu le puedes de añadir código. La forma de buscarlo es la siguiente; si no sabes el nombre del programa en el que vas a buscar el user-exit entonces ejecutas la transacción en la cual quieres buscar el user exit, despues en el menú de sistema vas a status, ahi te aparece una pantalla en la cual encontraras el nombre del programa asociada a esa transacción; copias el nombre del programa y ejecutas la transacción se38, pegas el nombre del programa y presionas visualizar para acceder al código fuente.
Dentro del código presionas el botón de buscar que esta en la barra de herramientas, en el espacio de busqueda pones la cadena "call customer-function", eliges la opción C.string, eliges global en programa, y considerar sólo versiones inactivas propias de, click en buscar y listo.
Si el programa tiene function module exit entonces encontrara las funciones y te las presentara en un reporte como resultado, adelante de la cadena call customer-function aparecerá un número entre comillas simples si das doble click sobre ella te llevara exactamente a lo posición de donde es llamada esta function module exit dentro del programa. Ya dentro del programa de nuevo doble click en el número del function exit y esta vez te llevara hasta la transacción se37, donde te muestra la declaración completa del function exit, dentro de esta en el tab de codigo fuente, veras un include, el nombre de este include empieza con "Z", por lo tanto es un include que podrás editar dándole doble click y añadir el código que tu necesites.
Obviamente tienes que verificar si este function exit te sirve, para esto puedes poner un break point en el programa justo donde se manda a llamar al function exit que estas analizando, corres tu programa y si se detiene en el break point que especificaste puedes checar los datos que el function module exit te envia como parametros (si es que los hay).
Bueno espero haberte ayudado, por cierto falta la activación del user exit para esto tienes que utilizar las transacciones CMOD Y SMOD.
Suerte...
Editado por última vez por IsmaelSV; 23/08/2006, 17:27:39.
Hola Ismael, quisiera saber si eso que hablas para el user exit sirve para encontrar las tablas transparentes que utiliza una transacción. Agradezco desde ya tu ayuda.
Att:
Albert Rene Acevedo Garnica
Consultor SAP-PM junior
57 3005603968
Pues realmente este método de búsqueda si te puede servir para las tablas transparentes, pero si te digo que tendrías que buscar palabras claves como Tables, Type o algo así, para poder identificarlas en el programa fuente.
hola chicos:
soy funcional por lo que no entiendo mucho de programacion, por eso les paso este tip para ver si les sirve como a mi
para ver los exit que afectan a distintas transaciones utilizo la transacciòn CMOD y desde el menu voy a ampliaciones SAP y coloco el nombre del exit
los exit aparecen en la SPRO en el item que dicen ampliaciones SAP )botoncito de documentacion), por ejemplo los exit de compras aparecen en gestion de materiales ==> Compras ==> Ampliaciones SAP
espero haberte sido de ayuda
Besos
Calabacita
Buenas, yo tengo otra duda sobre las user-exit. En la pantalla MIRO, he encontrado una que se ejecuta al grabar, al darle al intro después de introducir un pedido, y al mover el scroll de la subscreen donde sale la lista de pedidos.
Debugando, he intentado encontrar algun valor en la tabla que se le pasa a la auser-exit para restringir que esta user-exit no se ejecute cuando se mueve el scroll.
RESUMIENDO: ME gustaria controlar que la user-exit sólo se ejecutara al introducir un pedido o al darle a grabar. No al mover el scroll, ya que puede ser muy engorroso. Sí he conseguido diferenciar la accion de grabar de la de introducir un pedido o mover el scroll, pero no encuentro la manera de separar estas dos últimas acciones.
La transaccion es al MIRO y la UserExit es la EXIT_SAPLMR1M_004.
Hola...
Usa la SMOD, ahí le das al match code (F4). Pueden suceder dos cosas:
1.- Que te salga una ventana con las ampliaciones buscadas recientemente. Si es el caso, dar clic al boton que dice "Information System", ese te llevara a la pantalla del caso No. 2.
2.- Te sale una ventanita. En la parte inferior de la misma hay un ícono con un signo de "mas" (+) llamado "All Selections" (Shift+F7) el cual abre la ventana para mas opciones de búsqueda.
Una vez hecho lo anterior, encontrarás una opción llamada: Component Name. Ahí pones el nombre de la ampliación, o sea, para tu caso la "EXIT_SAPLMR1M_004". Ejecutas y... listo. Te trae el nombre de la user exit que debes usar en CMOD.
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.
SELECT-OPTIONS : p_tcode for tstc-tcode obligatory.
* Códigos de transacción SAP
* --------------------------
SELECT * FROM tstc WHERE tcode IN p_tcode.
* Catálogo de objetos Repository
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) tstc-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 'Nombre Exit',
21 sy-vline ,
22 'Descripcion',
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.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'Número de Exits:' , sy-tfill.
SKIP.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'No existe ningún user exit'.
ENDIF.
ENDSELECT.
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.
Hola buen dia, Creamos una nueva clase de Pedido de traslado para algunos traspasos una copia del UB, el tema que tenemos es que los materiales-Centros tiene perfiles de redondeo asignados, pero queremos que para esa nueva clase de pedido no valide los perfiles de redondeo, creo que es posible con una User Exit, saben cual podría ser o como la busco?
Comentario