#1
|
||||
|
||||
Commit Work en User Exit
buenas tardes a todos
tengo un problema existencial este es el problema , tengo una user exit para la creacion y modificacion de materiales , ahora , esa user exit por si sola no me trae los valores que ocupo para la clasificacion del material que se este creando , entonces opte por poner un commit work al entrar al exit de esa forma puedo llamar a unas funciones estardar que me trae todos los valores de las caracteristicas y de la clase del material pero he leido en muchos foros que nunca se deben poner commits en los user exit , por cuestiones de performance y no se que otras cosas pero mi duda es , acaso importa en realidad? , es decir , el user exit que estoy usando se activa cuando le doy GRABAR , entonces , que no daria lo mismo ? , lo unico que hago es adelantar el commit , o acaso se hacen muchas otras cosas despues de llamar al user exit? espero me puedan resolver mi duda de antemano gracias |
#2
|
|||
|
|||
Seguramente a esto habra tantas respuestas como personas pero al poner un commit en una user te arriesgas a perder la modificaciones que se hagan posteriormente, por eso intentaria ponerlo en la user mas cercana a la grabacion fisica del documento, por otra parte debes considerar la posibilidad de que un commit colocado en un sitio erroneo puede provocar dump como por ejemplo si pones un commit dentro de un bucle select endselect (u otras operaciones que impliquen el uso de cursores)
En principio si te funciona no hay problema pero piensa que para grabar los datos en tablas de diccionario previamente tienen que estar almacenados en tablas internas asi que seguramente hay alguna tabla interna que tiene los datos que tu buscas |
#3
|
|||
|
|||
Commit en User Exit
c_quintero,
El problema con los COMMIT dentro de un user exit es, como te dice ballan, que podés llegar a perder información en el momento de actualizar ya que estás modificando el orden estándar. Yo te diría que evites a toda costa poner un COMMIT, porque quizás quede algo mal en la actualización y no te des cuenta. Por qué estás haciendo el commit? Necesitás algún valor que todavía no está creado? Podés probar crear una función Z y llamarla IN UPDATE TASK... a veces esto sirve para hacer una grabación y obtener algún valor que en el momento en que se ejecuta el exit no está disponible. Otra opción que tenés es utilizar memoria ABAP y usar 2 exits en lugar de uno (y que uno le pase la información que necesites a otro). Avisanos si sirvió! Saludos |
#4
|
||||
|
||||
buenos dias
gracias por sus respuestas ya me quedo mas claro Ignatius , como que una funcion Z y llamarla IN UPDATE TASK? podrias darme un ejemplo de como se hace y como funciona? eso podria ayudarme mucho mas y pues los datos que ocupo son los de clasificacion de un material en las tx mm01 o mm02 normalmente esos datos los triago con una serie de funciones las cuales son estas: CALL FUNCTION 'CLMA_CLASS_READ' CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS' CALL FUNCTION 'CLME_FEATURES_OF_CLASS' CALL FUNCTION 'CLA2_GET_ALL_ALLOCATIONS' pero obviamente no puedo usar esas funciones en la user exit porque el material aun no esta grabado, por eso queria usar el commit al momento de entrar en la user exit la cual , repito , se activa cuando le doy SAVE a la tx , y por mas que debugueo no encuentro la tabla interna donde guarda esos valores igual y si se han topado con algo como esto y lograron solucionarlo porfavor diganme saludos |
#5
|
|||
|
|||
c_quintero,
Lo que te digo de llamar a una función IN UPDATE TASK es lo siguiente: Creás un módulo de funciones Z con el código que pusiste en el User Exit, y en el Exit lo que hacés es llamar a la función así: CALL FUNCTION 'tu_funcion' IN UPDATE TASK... Eso lo que hace es poner la llamada en la cola de actualización. Cuando se ejecuta el COMMIT se va a ejecutar esta función que llamaste. En las funciones que llamás, tenés que poner el número de material? Me podés decir el User Exit que estás usando para poder ubicarme un poco mejor en lo que necesitás? Saludos |
#6
|
||||
|
||||
esta es la user exit que uso
MGA00001 EXIT_SAPLMGMU_001 y si , en esas funciones ocupo el numero del material , de hecho es lo unico que ocupo se van llenando los campos necesarios unas a otras pero ya con lo que me dices me di una buena idea de como hacerlo de todas formas te paso el codigo de las funciones por si acaso esto es lo que haria normalmente si corriera algun programa Z una vez guardados los datos cualquier otra cosa es bien recibida |
#7
|
|||
|
|||
Help
Buenas tardes,
me gustaria saber como solucionaste tu problema. Pues tengo un desarrollo en el cual debo validar algunas caracteristicas de material y en ese momento de la user exit no tengo los valores en ninguna tabla. Saludos. |
#8
|
|||
|
|||
Hola,
Para obtener los valores de las caracteristicas de un material yo uso la user EXIT_SAPLCTMS_002, de aqui saco los valores, los mando a memoria y luego los leo en mi user. Espero que os sirva. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|