SAP/Abap Foro::
05 de Septiembre de 2010, 09:12:17 *
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: Descarga nuestra barra de herramientas, gratis.
 
   Inicio   Ayuda Buscar Ingresar Registrarse  

cvosoft
Páginas: [1]
  Imprimir  
Autor Tema: BAPI_PO_CHANGE para cambiar ekpo-bsgru  (Leído 184 veces)
0 Usuarios y 1 Visitante están viendo este tema.
AldoSosaMeza
Novato
*
Mensajes: 7


Ver Perfil Email
« en: 23 de Julio de 2010, 12:46:25 »

Hola a todos! Solamente quisiera saber si alguien me puede dar su consejo, tengo una bapi que modifica bien el campo bsgru en ekpo pero cuando hay mas de 1 posicion con el mismo codigo modifica  ambas posiciones! la bapi esta asi actualmente:
clear t_poitem.
*   *   perform move_to_bapi.
   t_POITEM-po_item = it_ekpo-ebelp.
   t_POITEM-order_reason = '100'.
   APPEND t_poitem.

   clear t_poitemx.
   t_POITEMx-po_item = it_ekpo-ebelp.
   t_POITEMx-po_itemx = 'X'.
   t_POITEMx-order_reason = '100'.
   APPEND t_poitemx.

   CALL FUNCTION 'BAPI_PO_CHANGE'
   EXPORTING
   purchaseorder = it_ekpo-ebeln
   TABLES
   POITEM  = t_POITEM
   POITEMx = t_POITEMx.

cUAL SERA EL PROBLEMA?
En línea
dluis
Usuario Jr
**
Mensajes: 21


Ver Perfil
« Respuesta #1 en: 23 de Julio de 2010, 09:09:38 »

Hola, igual es un poco tontería preguntártelo, pero le estas haciendo el LOOP a las posiciones?

Algo así, aunque sería bueno ver mas de tu código para entender el problema.

Código:
LOOP AT  it_ekpo.
   CLEAR t_poitem.
*  perform move_to_bapi.
   t_POITEM-po_item = it_ekpo-ebelp.
   t_POITEM-order_reason = '100'.
   APPEND t_poitem.

   CLEAR t_poitemx.
   t_POITEMx-po_item = it_ekpo-ebelp.
   t_POITEMx-po_itemx = 'X'.
   t_POITEMx-order_reason = '100'.
   APPEND t_poitemx.
ENDLOOP.

   CALL FUNCTION 'BAPI_PO_CHANGE'
   EXPORTING
   purchaseorder = it_ekpo-ebeln
   TABLES
   POITEM  = t_POITEM
   POITEMx = t_POITEMx.

Salu2.
En línea
AldoSosaMeza
Novato
*
Mensajes: 7


Ver Perfil Email
« Respuesta #2 en: 23 de Julio de 2010, 05:55:39 »

Gracias por la ayuda el programa si tiene un loop donde compara con la tabla ekbe para ver las diferencias: aqui el loop
--------------------------
LOOP AT it_ekpo.

 READ TABLE it_ekbe WITH KEY ebeln = it_ekpo-ebeln
                             ebelp = it_ekpo-ebelp.

 flag_exebapi = 'N'.

 IF SY-SUBRC = 4.
   WRITE: / ' NINGUN REGISTRO ENCONTRADO ', it_ekpo-ebeln, ' POSICION: ', it_ekpo-ebelp, ' MAT.: ',it_ekpo-matnr.
   flag_exebapi = 'S'.

 ELSE.
    IF it_ekpo-menge > it_ekbe-menge.
       WRITE: / ' REGISTRO CON DIFERENCIA: ', it_ekpo-ebeln, ' POSICION: ', it_ekpo-ebelp, ' cant_ekpo: ',it_ekpo-MENGE, ' vrs Cant_ekbe: ', it_ekbe-menge.
       flag_exebapi = 'S'.
    ELSE.
       WRITE: / ' REGISTRO ENCONTRADO: ', it_ekpo-ebeln, ' POSICION: ', it_ekpo-ebelp, ' cant ',it_ekpo-MENGE, ' versus ', it_ekbe-menge.
       flag_exebapi = 'N'.
    ENDIF.
 ENDIF.

IF flag_exebapi = 'S'. " Ejecuta la bapi para actualizar el registro.
*-------------------------------------------------
   clear t_poitem.
*   *   perform move_to_bapi.
   t_POITEM-po_item = it_ekpo-ebelp.
   t_POITEM-order_reason = '100'.
   APPEND t_poitem.

   clear t_poitemx.
   t_POITEMx-po_item = it_ekpo-ebelp.
   t_POITEMx-po_itemx = 'X'.
   t_POITEMx-order_reason = '100'.
   APPEND t_poitemx.

   CALL FUNCTION 'BAPI_PO_CHANGE'
   EXPORTING
   purchaseorder = it_ekpo-ebeln
   TABLES
   POITEM  = t_POITEM
   POITEMx = t_POITEMx.

   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
   EXPORTING
   wait = 'X'.
*------------------------------------------------
ENDIF.
ENDLOOP.
En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.3 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!