Ayuda SAP

Cómo enviar un msg de error en ME21N al grabarla?

Estimados, espero estén muy bien.
Quisiera molestarlos con una consulta.
En la empresa me solicitaron indagara como podía manipular la transacción ME21N para que, antes que se grabe el pedido valide que centro de costo (CECO) es el que tiene asociado y verificar que tratamiento de iva se escogió (C1, C3) y dependiendo, si esta incorrecto enviar un mensaje de error y detener la transacción o si no, seguir con la ejecución del programa.
He encontrado lo que se llama User exit para esto y en mi inexperiencia en Sap, creo que es donde debo agregar lógica.
Siguiendo en esa linea, encontré este exit EXIT_SAPMM06E_012.
Me pueden decir si esta bien lo que estoy haciendo y, si es así, tienen algún ejemplo de código de programación que me sirva como guía.
Agradecido de antemano

1 me gusta

Desde el punto de vista funcional, yo primero analizaría si es que REALMENTE hay una mejora en validar eso del ceco y del tratamiento impositivo. ¿Es realmente necesario manipular el estándar y poner la validación? ¿No sería mejor educar al usuario para que use la CABEZA cuando guarda los pedidos de compra? :wink:

Ten en cuenta que poner una validación a ese nivel (por posición) podría hacer que la carga de pedidos sea muuuuuy lenta cuando haya pedidos muy grandes (con muchas posiciones).

Después que no se anden quejando de eso eh…

Por otro lado, estás bien encaminado de que debes usar un USER-EXIT.
En cuanto a si ese USER EXIT es el que debes usar o no, pues tendrás que hacer pruebas mi estimado padawan :wink: Ese es campo técnico ya…

Suerte!

1 me gusta

Hola @SidV
Para la realidad de mi empresa es una muy buena forma de control ya que los usuarios acá son bien “ranientos” :slight_smile: (se equivocan mucho). De esta forma se quiere asociar un CECO con un tipo de tratamiento de IVA. Así, a la hora del ingreso se frenaría de inmediato la trxs.

Acá no habrán pedidos muy grandes por lo que la degradación del sistema no sería demasiada.
jajaaj y no nos quejaremos, solo los llenaremos de reclamos jajaja…

Gracias por tu apoyo Maestro Jedi.

Buenas,
Si, una exit es una buena opción.
Si no me equivoco con lo que quieren hacer, lo que yo haria es crear una tabla Z con una vista de mantenimiento, en donde se asocie el CECO con el tratamiento IVA.
Luego, dentro de la exit, hacer un codigo parecido a esto (codigo de ejemplo):


IF sy-tcode EQ 'ME21N'. "Muy importante ya que de no estar va a afectar otras trx como ME31K, ME41, etc

Select single * into wa_fx
 FROM zmcodigos_fx
WHERE bukrs = i_ekko-bukrs
     AND matkl  = t_ekpo-MATKL

IF sy-subrc NE 0.
 MESSAGE E208(00) WITH 'No se corresponde el grupo de articulos'.
ENDIF.
ENDIF.
1 me gusta

Hola Luis, lo que yo haría para no usar los exits seria asignarle una clase de mensaje que se imprima en automático y ahí, poner esa validación y el mensaje de error, un mensaje de error en un proceso de actualización no te permite guardar un documento de SAP pero si necesitas usar un user exit te dejo los siguientes:
EXIT_SAPLMEREQ_001
EXIT_SAPLMEREQ_002
EXIT_SAPLMEREQ_003
tu tienes que ver cual es el que mas te sirve.

1 me gusta

@SCONOREDHOT Muchas gracias por tu ayuda. Ten por seguro que lo intentaré como tú dices.
Dsiculpa que no haya contestado pero por cosas del destino me las tengo que dar de usuario y probar estas semanas unas transacciones SAP así que mi desarrollo tendrá que esperar. De cualquier manera avisaré como me va. :slight_smile:

1 me gusta

wauwww @betoAbaper117 … me dejaste pillo con esto pero indagaré y te comentaré como me va. Dejé un par de semanas el desarrollo para dedicarme a pruebas integrales :slight_smile:
Saludos

Buenísima esta pregunta, yo estoy investigando como enviar es un popup porque en mi caso verifico que no se repitan los materiales en la me21n pero según creo que debo es usar esta badi ME_PROCESS_PO_CUST y bueno no estoy seguro ahí estoy viendo

1 me gusta