Modificar registros de tabla MARC URGENTE!

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • nano_godoy
    Junior Member
    • abr
    • 8

    #1

    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! por las dudas dejo el codigo para que me ayuden.

    Gracias!!
  • nano_godoy
    Junior Member
    • abr
    • 8

    #2
    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 =
    .

    Comentario

    • VLozano
      Senior Member
      • nov
      • 124

      #3
      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)
      "Porque algunos sabemos que somos parte del problema"
      - Pequeña guía para escribir mensajes en foros técnicos -

      Comentario

      Trabajando...