ME21N, funciona para bienes y servicios.
En caso se haya modificado más de 1 vez la liberación final también funciona.
Para ello NO se tiene un campo especifico, de forma estándar. así que para obtener la fecha de la liberación final se obtendrá del Log de modificación de la Orden de compra.
Tablas a utilizar.
EKKO = Cabecera del documento de compras
CDHDR = Cabecera del documento de modificación
CDPOS = Posiciones en el documento de modificación
Este código Abap esta con HANA, pero fácilmente puede ser cambiado a forma ABAP sin Hana.
1. Para este caso tenemos una orden de compra que requiere 3 aprobaciones.
el campo "Ind.liberación" será de gran importancia.
2. Visualizar Log de modificación de cabecera.
El valor a obtener es el marcado.
3. Código ABAP
REPORT ycrprueba2.
"Camp de la tabla EKKO
"FRGKE SI esta vacío "No tiene estrategia de liberación"
"FRGKE Si igual a 'X' "No esta liberado".
"FRGKE si igual a '1' "Liberado completamente".
"Revisamos si esta liberado, para luego buscar su fecha de liberación final.
SELECT SINGLE ebeln, frgke
INTO @DATA(lw_ekko)
FROM ekko
WHERE ebeln = '4500308595' "Ingresar su Orden de compra
AND frgke = '1'. "Valor que vemos en Orden compra "Ind.liberación"
"Obtener detalle de los cambios para el campo de liberación
SELECT *
INTO TABLE @DATA(lt_cdpos)SELECT *
FROM cdpos
WHERE objectclas = 'EINKBELEG'
AND tabname = 'EKKO'
AND fname = 'FRGKE'
AND objectid = @lw_ekko-ebeln.
IF lt_cdpos[] IS NOT INITIAL.
SORT lt_cdpos[] BY changenr DESCENDING.
" Nos quedamos con la actualización final.
READ TABLE lt_cdpos INDEX 1 INTO DATA(lw_cdpos).
" Obtener el cambio a nivel de cabecera para obtener fecha requerida.
SELECT SINGLE *
INTO @DATA(lw_cdhdr)
FROM cdhdr
WHERE objectclas = 'EINKBELEG'
AND change_ind = 'U'
AND objectid = @lw_cdpos-objectid
AND changenr = @lw_cdpos-changenr.
WRITE: / 'Usuario de liberación:'.
WRITE: / lw_cdhdr-username.
WRITE: / 'Fecha de liberación:'.
WRITE: / lw_cdhdr-udate.
WRITE: / 'Hora de liberación:'.
WRITE: / lw_cdhdr-utime.
ENDIF.
ENDIF.
Fotos de las tablas
Si les fue útil, comentan.