MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Modificar registros de tabla MARC URGENTE! (foro/showthread.php?t=34112)

nano_godoy 07/12/09 16:26:53

Modificar registros de tabla MARC URGENTE!
 
Hola! bueno mi problema es el siguiente:

Necesito crear una funcion que tenga estos parametros de entrada (Werks, Plifz, Matnr), con esos datos debo llamar a alguna funcion estandar para que modifique 3 campos de la tabla MARC (PLIFZ, DISMM, BESKZ) en ese registro.

Probé con la función 'BAPI_MATERIAL_SAVEDATA' pero solo modifica 2 y el PLIFZ no lo modifica! :confused: por las dudas dejo el codigo para que me ayuden.

Gracias!! :D

nano_godoy 07/12/09 16:28:56

adjunto el codigo, Saludos!

FUNCTION z_mm_actualizar_material.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(I_PLIFZ) TYPE MARC-PLIFZ
*" REFERENCE(I_MATNR) TYPE MARC-MATNR
*" REFERENCE(I_WERKS) LIKE MARC-WERKS
*" EXCEPTIONS
*" WRONG_MATERIAL
*"----------------------------------------------------------------------

DATA: wa_return TYPE bapiret2,
wa_head TYPE bapimathead,
wa_plant TYPE bapi_marc,
wa_plantx TYPE bapi_marcx.

DATA: t_ret TYPE TABLE OF bapi_matreturn2.

wa_head-material = i_matnr.
wa_plant-plant = i_werks.
wa_plant-plnd_delry = i_plifz.
wa_plant-mrp_type = 'ND'.
wa_plant-proc_type = 'X'.

wa_plantx-plant = i_werks.
wa_plantx-plnd_delry = 'X'.
wa_plantx-mrp_type = 'X'.
wa_plantx-proc_type = 'X'.


CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = wa_head
* CLIENTDATA =
* CLIENTDATAX =
plantdata = wa_plant
plantdatax = wa_plantx
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
* STORAGELOCATIONDATA =
* STORAGELOCATIONDATAX =
* VALUATIONDATA =
* VALUATIONDATAX =
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
* SALESDATA =
* SALESDATAX =
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ' '
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ' '
IMPORTING
return = wa_return
TABLES
* MATERIALDESCRIPTION =
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
* TAXCLASSIFICATIONS =
returnmessages = t_ret
* PRTDATA =
* PRTDATAX =
* EXTENSIONIN =
* EXTENSIONINX =
.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.

VLozano 09/12/09 11:05:00

Unos apuntes, si me permites:
1- si pones el código usando el tag "code" (el botón #) el código se leerá mejor
2- no te acostumbres a llamar al COMMIT a piñón, sin verificar que los datos se hayan pregrabado como dios manda... quizá te interesa controlar algún warning, o quizá los datos se vayan a grabar a pesar de un mensaje de error... hay que ir con mucho cuidadito

y 3- hay campos de las vistas de materiales que NO se pueden actualizar en función de algunos otros (no soy capaz de recordar ningún ejemplo).

Yo creo que "3" es el problema que tienes aquí. Dos posibilidades para verificarlo:
1- Haz un debug de la función y léete los mensajes que aparecen en el wa_return, o
2- Intenta hacer las modificaciones que estás probando a mano (transacción MM02) y mira qué errores/avisos te muestra (o si el campo que no se te actualiza aparece como sombreado).

Sueter! (que es un jersey afortunado)


Husos Horarios son GMT. La hora en este momento es 20:41:02.

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