PDA

Ver la Versión Completa : Actualizar Orden Compra por cambio en Materiales...!!!


guessinny
08/08/08, 00:52:51
Hola a todos estoy con un cliente donde ya usan Ordenes de compra para aprovisionar sus inventarios, sin embargo en este proyecto fue necesario cambiar la estructura del catalogo de cuentas y la de los CeBe's por lo que los Registros de materiales fueron actualizados en este ultimos dato (cebe), ahora bien los pedidos de compra que aun estan abiertos (sin entrada de mcia), en la tabla EKPO aun traen el cebe anterior, si entro via la ME22N a modificar el pedido y solo le hago una verificacion, el sistema detecta que no le hecho ningun cambio y no actualiza los datos del material con el cebe nuevo, entonces quiero ver si alguno de uds. conoce como hacer esto de manera masiva, pues el hecho es que solo requiero que sea actualizado el cebe que ya esta en el correspondiente registro maestro del material.

Desde ya gracias por el tiempo y ayuda. :cool:

esgrum
08/08/08, 14:06:21
Que yo sepa la orden de compra es como una "foto" del registro maestro de materiales, no refresca cuando haces cambios al material. La única manera que he encontrado, para no perder el número de la orden, es eliminar la posición y crear una segunda con el mismo material ya actualizado.
Es lo que yo se, quizás alguien por ahí conozca un metodo.
Saludos.

guessinny
08/08/08, 17:50:02
Encontré una nota en el Marketplace de SAP (141009) la cual habla precisamente del tema, la solución se realiza por la via de la programación (ABAP), pero al menos esta soportado por SAP, ya lo probe y "jala" bien, si te actualiza correctamente la EKPO con el CeBe nuevo que ya tiene el material.

Aqui les dejo la nota por si alguno de uds. no tiene acceso al marketplace.

***********************************
Summary
Symptom
If you changed the profit center assignment in material master, this new assignment is not taken into account for those purchase orders or scheduling agreements created before the change. As a result the old profit center is used instead of the new profit center.
Other terms
EKPO Profit Center Assignment
Reason and Prerequisites
Missing functionality.
Solution
Execute the attached program ZECPCAEK for the affected purchase orders or scheduling agreements. This will change the profit center of the document to the profit center of the material master.
Attention: you can use report ZECPCAEK only for purchase orders without account assignment objects. If you have purchase order with accounts assignments you have to change the purchase orders manually.

***************************************************
y obviamente el codigo del programa, que por comentarios de nuestro "Abaper" dice que es un contundente "martillazo" (entiendase Update directo a la tabla EKPO).


**********************************************************************
* Report to correct purchase orders (table EKPO)
* relevant:
* - after a reorganisation of profit center assignments to materials
* - purchase orders from release 2.2 don't have a profit center
**********************************************************************


REPORT ZECPCAEK.

TABLES: EKPO.

DATA: BEGIN OF EKPO_STRUCTURE,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
WERKS LIKE EKPO-WERKS,
KO_PRCTR LIKE EKPO-KO_PRCTR,
END OF EKPO_STRUCTURE.

DATA L_EKPO LIKE EKPO_STRUCTURE OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF L_MARC.
INCLUDE STRUCTURE MARC.
DATA: END OF L_MARC.

DATA: COUNTER LIKE SY-TABIX.

***********************************************************************

SELECT-OPTIONS: EBELN FOR EKPO-EBELN OBLIGATORY.
PARAMETERS: TEST AS CHECKBOX DEFAULT 'X'.

***********************************************************************

START-OF-SELECTION.

* Selection of purchase orders

SELECT EBELN EBELP MATNR WERKS KO_PRCTR
INTO L_EKPO FROM EKPO
WHERE EBELN IN EBELN.

APPEND L_EKPO.
ENDSELECT.


CLEAR COUNTER.

LOOP AT L_EKPO.

* Read Material data
CALL FUNCTION 'MARC_SINGLE_READ'
EXPORTING
MATNR = L_EKPO-MATNR
WERKS = L_EKPO-WERKS
IMPORTING
WMARC = L_MARC
EXCEPTIONS
LOCK_ON_MARC = 1
LOCK_SYSTEM_ERROR = 2
WRONG_CALL = 3
NOT_FOUND = 4
OTHERS = 5.

IF SY-SUBRC = 0.

* Has the profit center changed?
IF L_MARC-PRCTR <> L_EKPO-KO_PRCTR.

IF TEST = SPACE.
UPDATE EKPO
SET KO_PRCTR = L_MARC-PRCTR
WHERE EBELN = L_EKPO-EBELN
AND EBELP = L_EKPO-EBELP.
ENDIF.
COUNTER = COUNTER + 1.

* Protocoll
IF COUNTER = 1.
WRITE /.
WRITE AT 5 'Purchase Order'.
WRITE AT 20 'Position'.
WRITE AT 30 'Material no.'.
WRITE AT 60 'Old PrCtr'.
WRITE AT 75 'New Prctr'.
ENDIF.

WRITE /.
WRITE AT 5 L_EKPO-EBELN.
WRITE AT 20 L_EKPO-EBELP.
WRITE AT 30 L_EKPO-MATNR.
WRITE AT 60 L_EKPO-KO_PRCTR.
WRITE AT 75 L_MARC-PRCTR.
ENDIF.
ENDIF.

ENDLOOP.
WRITE: /, /, COUNTER, 'entries'.

*********************************************

SUERTE....!!!

Royn
02/08/19, 16:09:04
Buen dia, tengo una duda respecto algo parecido, quise identificar en la tabla EKPO las ordenes de compra que no tuvieran Cebe, pero me di cuenta que no se esta guardando el dato que le ponen desde la creación de pedido en ese campo y no lo muestra en la tabla

Saben a que se deba, en el pedido en la pestaña imputacion, campo Cebe, tiene los datos correctos, pero en la tabla esta vacio

Gracias