|
#1
|
|||
|
|||
Muchas gracias,
Tengo que hacer la comprobación en una tabla z creada por mi y si no se corresponde darle el error, donde pudo encontrar los datos cargados por pantalla en esta BADI. Saludos, |
#2
|
|||
|
|||
Por ejemplo
El metodo process_header te da un parametro llamado IM_HEADER, tu podrias hacer lo siguiente data: ls_header type MEREQ_HEADER. ls_header = im_header->get_data( ). *ahora en ls_header tendrias los datos de cabecera En el metodo process_item seria lo mismo solo que te da el parametro IM_ITEM en lugar del IM_HEADER data: ls_item type mereq_item. ls_item = im_item->get_data( ). *ahora en ls_item tendrias los datos de la posicion En el metodo check tienes el objeto cabecera (IM_HEADER), tambien dispones del parametro CH_FAILED que lo puedes utilizar para que el pedido sea invalido Por ejemplo data: lt_items type MMPUR_REQUISITION_ITEMS. data: ls_item like line of lt_items. data: ls_pr_item type mereq_item. *Con esto obtengo una tabla con todos los objetos posicion lt_items = im_header->get_items( ). loop at lt_items into ls_item. *Ahora en ls_pr_item tendria los datos de posicion (algo parecido a los *campos de la eban) ls_pr_item = ls_item->get_data( ). if ls_pr_item-menge <= 0. *Con esto introduciria el mensaje de error correspondiente en el colector mmpur_message sy-msgty sy-msgid sy-msgno sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ch_failed = mmpur_yes. endloop. |
#3
|
|||
|
|||
BALLA muchisimas gracias ya lo tengo funcioando, una pregunta podría utlizar la misma badi para hacer una validación en la ME21N.
Un saludoa |
#4
|
|||
|
|||
Para los pedidos dispones de la badi ME_PROCESS_PO_CUST en lugar de la ME_PROCESS_REQ_CUST que es para solicitudes de pedido
El funcionamiento es exactamente el mismo en las dos badis solo que evidentemente una te proporcionara informacion de la EBAN y la otra de la EKKO/EKPO |
#5
|
|||
|
|||
Gracias BALLAN tengo una duda el ls_items de que tipo lo creo¿?...
Saludos |
#6
|
|||
|
|||
La cabecera seria de tipo MEPOHEADER y la posicion del tipo MEPOITEM
De todas formas para poder saber eso yo hago lo siguiente: Haciendo un resumen muy superficial una BADI es una INTERFAZ que se puede ver a traves de la transaccion SE24 (si miramos la definicion de la badi a traves de la SE18 veremos que la badi ME_PROCESS_PO_CUST tiene definida la interfaz IF_EX_ME_PROCESS_PO_CUST) Si miramos la IF_EX_ME_PROCESS_PO_CUST en la SE24 veremos todos los metodos de la badi, al ser una interfaz solo vienen las definiciones y los parametros de los metodos DENTRO NO TIENE CODIGO Si nos vamos al metodo PROCESS_ITEM por ejemplo veremos que como parametro recibe el parametro IM_ITEM cuyo tipo es otra interfaz IF_PURCHASE_ORDER_ITEM_MM si vamos a ver esa interfaz por la SE24 veremos que en dicha interfaz existe un metodo llamado GET_DATA que si miramos los parametros veremos que devuelve una estructura del tipo MEPOITEM Bueno no se si he aclarado algo o lo he liado mas pero espero que se me entienda |
#7
|
|||
|
|||
Le he puesto el BREAK para ver si me para donde quiero yo porque el chequeo que quiero es que si el importe es superior a 3.000 que de error...
Muchas gracias |
#8
|
|||
|
|||
Muchas gracias BALLAR, me ah quedado claro, porque yo y las badis no nos llevabamos hasta ahora pero el problema como te he expuesto anteriormente no me para el break donde quiero.
Un saludo |
Herramientas | Buscar en Tema |
Desplegado | |
|
|