MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 04/06/09, 21:50:02
tgfch tgfch is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: ...
Mensajes: 74
Unhappy BADI para insertar items en ME51N

Hola,

Tengo un requerimiento y he estado tratando varias BADI's :
ME_BAPI_PR_CUST
ME_BAPI_PR_CUST
ME_CHECK_ALL_ITEMS

Pero con ninguna he podido lograr insertar items al crear la Solicitud de pedido, con la que he podido llegar al momento de la verificación es ME_PROCESS_REQ_CUST con el método PROCESS_ITEM, pero se queda en este método.

El código que tengo es:

Agradeceria cualquier información y ayuda.
__________________
Saludos,
tgfch
Responder Con Cita
  #2  
Viejo 05/06/09, 12:13:57
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Para agregar una posicion tendrias que hacer algo mas o menos asi

Necesitas el objeto cabecera IM_HEADER type ref to IF_PURCHASE_REQUISITION

Si tienes el objeto posicion puedes llamar al metodo get_requisition( ) para que te devuelva la cabecera

data: lo_header type ref to IF_PURCHASE_REQUISITION

lo_header = im_item->get_requisition( ).

una vez que tengas el objeto cabecera vamos a suponer que se llama IM_HEADER

data: lo_item type ref to IF_PURCHASE_REQUISITION_ITEM

data: ls_item type MEREQ_ITEM.

lo_item = im_header->create_item( ).

ls_item-matnr = material.
ls_item-menge = cantidad.

lo_item->set_data( ls_item).
Responder Con Cita
  #3  
Viejo 05/06/09, 12:56:05
tgfch tgfch is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: ...
Mensajes: 74
Ballan gracias por responder.
Hago las pruebas y te aviso!!!
__________________
Saludos,
tgfch
Responder Con Cita
  #4  
Viejo 05/06/09, 20:03:41
tgfch tgfch is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: ...
Mensajes: 74
ballan

He estado intentando tomar los datos del IM_HEADER para traermelos al metodo pero no he podido, trato de hacerlo con el EXPORT TO MEMORY pero no me deja :'(.
__________________
Saludos,
tgfch
Responder Con Cita
  #5  
Viejo 08/06/09, 09:38:55
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Los objetos creados en tiempo de ejecucion residen en una zona de memoria que no se puede compartir (al menos hasta donde yo se)

Para obtener el objeto cabecera tendras que llamar a los metodos correspondientes

En que metodo o donde estas haciendo las llamadas¿?
Responder Con Cita
  #6  
Viejo 08/06/09, 13:06:46
tgfch tgfch is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: ...
Mensajes: 74
ayy Balan gracias por responder.

Fijate, estoy en la SE19 con ME_PROCESS_REQ_CUS, justo en el método PROCESS_ITEM, pero creo que lo que estaba tratando de hacer de capturar los datos no era posible, y asi como tu dice, debo utilizar los métodos que me permita la implementación.

Con el ejemplo de las líneas de código que me distes, logré algo, lo que no termino es de como hacer para crear los datos de una nueva linea, me arroja un dump " OBJECTS_OBJREF_NOT_ASSIGNED_NO" justo aca lo_item->set_data( ls_item ).

No se si este usando mal los método y estoy ( al crear el objeto y al colocarle los datos ( digo en el set_data) )
__________________
Saludos,
tgfch

Úlima edición por tgfch fecha: 08/06/09 a las 13:10:07.
Responder Con Cita
  #7  
Viejo 08/06/09, 14:47:32
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Te paso un ejemplo de como hacer que cuando modifiques un campo de una posicion de solped te cree una posicion nueva como copia

El codigo tendrias que ponerlo en el metodo process_item y tendras que meterlo dentro de alguna condicion porque sino va a entrar en un bucle infinito ya que al modificar una posicion creara otra como copia, al crear otra como copia volvera a saltar el process_item y se volvera a crear otra como copia...

La idea es que veas como hacerlo

En el metodo process_item podrias hacer esto

DATA: lo_header TYPE REF TO if_purchase_requisition,
lo_item TYPE REF TO if_purchase_requisition_item.

data: ls_item type mereq_item,
ls_itemx type mereq_itemx.


*Aqui obtengo el objeto cabecera de la solicitud de pedido
lo_header = im_item->get_requisition( ).

*Aqui creo una nueva posicion como copia de otra existente
lo_item = lo_header->create_item( im_item = im_item ).

*Si quisiera crearla en blanco
lo_item = lo_header->create_item( ).

ls_item = lo_item->get_data( ).
ls_itemx = lo_item->get_datax( ).

ls_item-menge = 69.
ls_itemx-menge = 'X'.

lo_item->set_data( im_data = ls_item ).
lo_item->set_datax( im_datax = ls_itemx ).
Responder Con Cita
  #8  
Viejo 09/06/09, 14:26:14
tgfch tgfch is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: ...
Mensajes: 74
Ballan, mil gracias

Y te envio mis disculpas, he estado trabajando con el código, pero tal como tu dices, he tratado de colocar condiciones para que se regrese a la transacción y no me funciona.

Estas líneas las tengo comentadas:
esto debe ser así.
__________________
Saludos,
tgfch
Responder Con Cita
  #9  
Viejo 09/06/09, 16:58:18
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Por ejemplo para salir lo que podrias hacer es:

data: lv_salir.

data: lc_id type char20 value 'IDMEMORIA'.

*Supongamos que estamos en el process_item

import p1 = lv_salir from memory id lc_id

if not lv_salir is initial.

exit.

else.

*aqui iria el codigo para crear la nueva posicion mediante metodos

lv_salir = 'X'.
export p1 = lv_salir to memory id lc_id.

endif.
Responder Con Cita
  #10  
Viejo 11/06/09, 14:18:30
tgfch tgfch is offline
Member
 
Fecha de Ingreso: mar 2006
Localización: ...
Mensajes: 74
ballan MUCHISIMAS GRACIAS por tu gran ayuda, con las líneas de código pude realizar lo que necesitaba, aca las coloco:



Espero que sea de ayuda.
__________________
Saludos,
tgfch
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 05:48:39.


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