PDA

Ver la Versión Completa : cómo logro cambiar el Status de un IDOC?


Lorenasoledad
15/12/08, 12:41:16
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
16/12/08, 14:02:06
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.

Lorenasoledad
16/12/08, 17:31:20
Muchas Gracias Andy! si me diste una alternativa ! :)