4
« en: 23 de Julio de 2010, 05:55:39 pm »
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.