Ya solucione
A la final solucione, utilice la BADI ZME_PROCESS_REQ_CUST, en la Interface PROCESS_ITEM, tuve que crear una Tabla Z, donde guardaba el usuario, la Sol. Pedido y el estado de Liberacion. Aqui anexo el codigo para, espero sirva de ayuda
* Para la Interface PROCESS_ITEM.
IF sy-tcode = 'ME54N' OR sy-tcode = 'ME55'.
solpedido = w_eban-banfn.
usuario = sy-uname.
estado = mreqitem-frgzu.
SET PARAMETER ID 'BAN' FIELD solpedido.
SET PARAMETER ID 'USER' FIELD usuario.
SET PARAMETER ID 'ESTA' FIELD estado.
* Tabla Z donde guardo el usuario, la Sol. Ped y el
estado de Liberacion
SELECT SINGLE * FROM zval_solped_user
INTO w_zval_solped_user
WHERE uname = usuario
AND banfn = solpedido.
IF sy-subrc = 0.
n = STRLEN( estado ).
n1 = STRLEN( w_zval_solped_user-frgzu ).
IF n > n1.
MESSAGE e012(zco) WITH
'El usuario' usuario 'ya ha liberado, no puede volver a liberar'.
ENDIF.
ENDIF.
* Fin para la Interface PROCESS_ITEM
* En la Interface POST que es cuando se intenta grabar o Anular.
GET PARAMETER ID 'BAN' FIELD solpedido.
GET PARAMETER ID 'USER' FIELD usuario.
GET PARAMETER ID 'ESTA' FIELD estado.
SELECT SINGLE * FROM zval_solped_user
INTO w_zval_solped_user
WHERE uname = usuario
AND banfn = solpedido.
IF sy-subrc = 0.
n = STRLEN( estado ).
n1 = STRLEN( w_zval_solped_user-frgzu ).
IF n < n1.
DELETE FROM zval_solped_user WHERE
banfn EQ solpedido
AND uname EQ usuario.
COMMIT WORK.
ENDIF.
ELSE.
MOVE: usuario TO w_zval_solped_user-uname,
solpedido TO w_zval_solped_user-banfn,
estado TO w_zval_solped_user-frgzu.
INSERT INTO zval_solped_user VALUES w_zval_solped_user.
COMMIT WORK.
ENDIF.
* Fin para la Interface POST
|