MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Fbcj - Exit/badi (foro/showthread.php?t=65931)

SAPING 22/01/13 15:52:52

Fbcj - Exit/badi
 
Hola.
Necesito agregar una validacion para el campo ISCJ_E_POSTINGS-ALLOC_NMBR (Assignment) del ALV que esta en la solapa Cash Payments de la trx FBCJ.
Tengo que mostrar un mensaje de error si no se completa ese campo.

Implemente la badi CJ_DOCUMENT (se19).
Para probar si funcionaba o no lo unico que le agregue fue un mensaje tipo 'I' que dice "BADI!!" pero no pude hacer que me muestre ese mensaje.
La badi esta activa (supongo segun la se80) pero no muestra ningun mensaje.

Haciendo un debug intente ver si el include MFCJ0I01 del programa SAPMFCJ0, el cual maneja los MODULE de la dynpro 0110 que valida los campos del ALV, tenia algun enhancement el cual me permita agregar el codigo para validarlo, pero no tiene ninguno.

No se me ocurre que hacer.... :S

mauro_ARG 22/01/13 19:34:19



Probaste con un Field Exit?
--

Edito: Recien caigo que es un ALV, nunca probe field exits para campos ALV, pero no creo que funcione.

SAPING 23/01/13 10:42:48

No, la verdad nunca use field exit...

Tenes info??

mauro_ARG 23/01/13 11:17:10


El field exit es similar a la user exit, pero se hace a nivel del elemento de datos. Sirve para realizar validaciones basicas, y tiene muchas restricciones.

La funcion de field exit tiene solo dos campos, uno de entrada (INPUT) y uno de salida (OUTPUT) y es lo unico que podes leer a priori, aunque podes sacar info de otros campos guardandolos en variables globales de la funcion (esto implica la creacion de mas field exits) o utilizar la funcion DYNP_VALUES_READ.

En los field exits no podes utilizar:
BREAK-POINT
CALL SCREEN
CALL DIALOG
CALL TRANSACTION
SUBMIT
COMMIT WORK
ROLLBACK WORK
MESSAGE I

Ahora, para crear un field exit:
Lo primero que tenemos que chequear es que en la RZ10 este activado el parametro: abap/fieldexit = YES en el servidor (esto chequealo con un Basis).

Despues, tenemos que crear una funcion para el campo, todas las funciones de field exit comienzan con FIELD_EXIT_* (en tu caso le pondria FIELD_AXIT_ALLOC_NMBR). Esto te va a crear una funcion con los parametros INPUT y OUTPUT.

Luego le colocas el codigo que quieras para realizar tu validacion.

Por ultimo ejecutas en la SE38 el reporte RSMODPRF, alli te van a aparecer todos los field exits activos. Para crear el tuyo y asignarle la funcion le das "Exits de Campo->Crear" e ingresas el elemento de datos sobre el cual queres activar tu field exit, finalmente seleccionas tu field exit y le das click en "asignar prog/dynpro" y le completas los datos correspondiente al nombre del programa y la dynpro. Una vez hecho esto, lo activas y listo.

Consejo, para validar si tu field exit funciona, te recomiendo que primero lo ejecutes mostrando un Mensaje del tipo E o S... Luego una vez verificado esto, si procede con la codificacion necesaria para tu validacion.

Igualmente, te repito, nunca lo utilice en un ALV, ignoro si funcionará o no.
Suerte, y comenta como te fue!.

SAPING 24/01/13 11:59:04

Cree el modulo de funcion pero cuando voy al programa RSMODPRF y pongo CREAR, me pide el Elemento de datos (DZUONR en este caso), le doy OK, me lleva automaticamente a la SE37 y de ahi no se como asociar la funcion...

?????????

mauro_ARG 24/01/13 12:18:45


El field exit es a nivel elemento de datos. En este caso, su field exit debiera llamarse FIELD_EXIT_DZUONR.

Si queres, lo podes hacer al reves. Ejecuta primero el programa, pone el elemento de datos y crea tu funcion con el nombre propuesto por el programa.

Una vez que termines, volve a ejecutar el programa, pero esta vez no le pongas ningun parametro de entrada, ahi te va a mostrar todos los field exits que existen, selecciona el tuyo, asignale la dynpro y demas parametro y activalo.

SAPING 24/01/13 13:19:35

Gracias Mauro.
Casualmente encontre un "instructivo" de como crear el field exit de la manera que me indicaste (.

Logre que me muestre el mensaje que coloque para probar si funciona y anduvo joya!!
Ahora tengo otro inconveniente que estoy investigando que es como leer los datos del table control (ALV).
La funcion DYMP_VALUES_READ no me los trae, asi que voy a investigar a ver como puedo hacerlo.


Igualmente, el funcional me dijo que ya encontro otra forma de poder hacer esta validacion, sin embargo, no me quiero quedar con la espina y sacar este tema, por lo que voy a seguir investigando.

Gracias!

mauro_ARG 24/01/13 18:35:19


Mira, lo que se me ocurre es hacerlo de forma similar a como cuando uno ingresa datos en una tabla por medio de un batch-input.

tabla-campo(indice).
Por ejemplo: BKPF-BELNR(1) seria el primer campo y asi sucesivamente... si en los batch inputs funciona, capaz que con esto tambien.... Lo que no se si la field exit lo permitira.

p.ibanez 30/06/17 20:23:01


Buenas. Muy útil el post. Por casualidad el funcional dijo como lo solucionó?

contab15 13/08/21 19:20:02

Re: Fbcj - Exit/badi
 
Hola Grupo, les hago una consulta a ver cómo puedo realizar las validaciones desde el evento de grabación de la FBCJ, y otorgar permisos a usuarios para que solo ingresen a la pestaña de ingreso y otros de egresos, las validaciones las tengo desde FI pero las hace al contabilizar y los usuarios, les permite grabar. Si me pueden ayudar con cuálea módulos de Funcion puedo trabajar para hacer está validaciones desde el include del programa, se los gradeceria enormemente saludos


Husos Horarios son GMT. La hora en este momento es 06:38:57.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web