MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Validación BADI ME_PROCESS_PO_CUST (foro/showthread.php?t=30729)

Paola79 16/06/09 07:55:08

Validación BADI ME_PROCESS_PO_CUST
 
Hola buenas tardes,

Ya me funciona la validación correctamente, desde hace ya días, el consultor ha echo pruebas, y le salta en el resto de tipo de pedidos, y solo queremos que salga en un determinado tipo de pedidos.

La validación la estoy haciendo en las items, ya que es ahi que el importe no sea superior a 3000, pero ahi no tengo la clase de pedido, que en mi caso será tipo de pedido PD, ya que se encuentra este dato en la cabecera (header).

Mi pregunta es: ¿Cómo puedo pasar el tipo de pedido en la BADI a las posiciones para que solo me salga en ese tipo de pedido?

Muchas gracias

ballan 16/06/09 08:37:02

Para acceder a los datos de cabecera puedes hacer lo siguiente

data: lo_header type ref to IF_PURCHASE_ORDER_MM.

data: ls_header type mepoheader.

lo_header = im_item->get_header( ).

ls_header = lo_header->get_data( ).

if ls_header-bsart = ...

aqui harias tu chequeo

Paola79 16/06/09 11:05:12

Muchas gracias Ballan,

Me da error con el im_item, ya que de me dice que no existe.

Un saludo,

Paola79 16/06/09 11:12:06

Perdon Ballan, el error que me da es que LS_HEADER no tiene el BSART.
Eso que puede ser,

Un saludo

ballan 16/06/09 11:14:42

He supuesto que tu codigo lo querias meter en el metodo process_item

Si no es en ese en que metodo quieres meterlo?¿

Si pruebas a meter el chequeo en el metodo check ahi si tienes el objeto cabecera por lo que podrias hacer

data: ls_header type mepoheader.

ls_header = im_header->get_data( ).

Paola79 16/06/09 11:23:14

Si claro lo quiero en el process_item, pero me da el error que te he comentado, el de bsart no existe.

estoy ahi mirandolo, a ver si saco algo en claro. mira este es el codigo que tengo yo:

DATA: ls_header TYPE REF TO if_purchase_order_mm.
DATA: ls_item TYPE mepoitem.
DATA: lo_header TYPE REF TO if_purchase_order_mm.

ls_item = im_item->get_data( ).
lo_header = im_item->get_header( ).
ls_header = im_item->get_header( ).
**en ls_item tengo los datos de la posicion
IF ls_header-bsart = 'PD'.
IF ls_item-netpr > '3000'.
MESSAGE e002(zmm).
ENDIF.
endif.
Alo mejor lo he puesto yo mal.

muchas gracias

Paola79 16/06/09 11:45:08

Ya esta solucionado, ya me di cuenta muchas gracias como siempre por tu ayuda.

Un saludo


Husos Horarios son GMT. La hora en este momento es 17:03:11.

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