Para validaciones al guardar datos en la transaccion VA01 / VA02, se puede usar el FORM USEREXIT_SAVE_DOCUMENT_PREPARE del include MV45AFZZ.
"VERIFICA SI ES UN MOVIMIENTO DE DEVOLUCION Y CHECA SI TIENE TRANSPORTE
IF VBAK-VBTYP = 'H'.
SELECT SINGLE VBELV FROM VBFA INTO IV_VBELN_ORG "OBTIENE EL NUMERO DE ENTREGA
WHERE VBELN = VBAK-VGBEL AND VBTYP_V = 'J' AND VBTYP_N = 'M'.
IF SY-SUBRC = 0.
SELECT SINGLE TKNUM FROM VTTP INTO IV_TKNUM "OBTIENE SI ESTA EN UN TRANSPORTE
WHERE VBELN = IV_VBELN_ORG.
IF SY-SUBRC = 0.
SELECT SINGLE TKNUM FROM VTTK INTO IV_TKNUM "OBTIENE SI AUN ESTA EN CURSO
WHERE TKNUM = IV_TKNUM AND STTEN NE 'X'.
IF SY-SUBRC = 0. "SI LO ENCUENTRA MANDA ERRROR
IV_TEXTO = 'Factura en transporte &T, no se puede devolver'.
REPLACE '&T' WITH IV_TKNUM INTO IV_TEXTO.
MESSAGE IV_TEXTO TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
No responses yet