cómo logro cambiar el Status de un IDOC?

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Lorenasoledad
    Junior Member
    • feb
    • 11

    #1

    cómo logro cambiar el Status de un IDOC?

    Estoy trabajando con Idocs (con las tx MM42 y bd21) .Al generarse el idoc luego de la ejecución de las tx mencionadas este toma un valor de estatus dependiendo si ocurrió alguna anomalía o si la generación fué exitosa.

    En este momento me encuentro realizando una ampliación de una badi IDOC_DATA_INSERT (que es llamada por la tx bd21) para insertar código en el método FILL y aca les presento mi problema.
    Lo que necesito es colocar un insert con código native a una base de datos externa a SAP.
    El punto es que necesitaría comprobar si los datos fueron cargados correctamente en la BD externa y en el caso de que no se hayan cargado los registros correspondientes necesitaría lo siguiente:
    cambiar el valor del estatus que posee el IDOC y no lo estoy logrando.

    Alguien sabe de alguna función ó alguna alternativa para poder contemplar este detalle? Asi logro chequear en la tx we05 y ver si mis registros fueron exitosamente cargados en mi base de datos externa.
  • andyoscky
    Miembro Honorario
    • mar
    • 73

    #2
    Te mando un ejemplo espero que te sea de ayuda

    REFRESH: t_edids , t_edidc .

    SELECT * INTO TABLE t_edids
    FROM edids
    WHERE docnum = ori_docnum.

    SELECT * INTO TABLE t_edidc
    FROM edidc
    FOR ALL ENTRIES IN t_edids
    WHERE docnum = t_edids-docnum.

    SORT t_edids DESCENDING .
    LOOP AT t_edidc.
    t_edidc-status = stat.
    t_edidc-upddat = sy-datum.
    t_edidc-updtim = sy-uzeit.
    MODIFY t_edidc INDEX sy-tabix.
    *statusfile write
    CHECK sy-subrc = 0 .
    READ TABLE t_edids WITH KEY docnum = t_edidc-docnum .
    IF sy-subrc = 0 .
    t_edids-logdat = sy-datum.
    t_edids-logtim = sy-uzeit.
    ADD 1 TO t_edids-countr.
    t_edids-credat = sy-datum.
    t_edids-cretim = sy-uzeit.
    t_edids-status = stat.
    t_edids-uname = sy-uname.
    CASE stat .
    WHEN '62' .
    t_edids-statxt = 'HELLO STATUS!'.
    WHEN '53' .
    t_edids-statxt = 'BOOKED MANUALLY!'.
    ENDCASE.
    t_edids-statyp = 'I'.
    t_edids-stamqu = 'SAP'.
    t_edids-stamid = 'ZU'.
    t_edids-stamno = '998'.
    CLEAR: t_edids-stapa1,
    t_edids-stapa2,
    t_edids-stapa3,
    t_edids-stapa4.
    APPEND t_edids .
    ENDIF.
    *
    ENDLOOP.

    MODIFY edids FROM TABLE t_edids.
    MODIFY edidc FROM TABLE t_edidc.
    COMMIT WORK AND WAIT.

    Comentario

    • Lorenasoledad
      Junior Member
      • feb
      • 11

      #3
      una opción !

      Muchas Gracias Andy! si me diste una alternativa !

      Comentario

      Trabajando...