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.

Categories:

No responses yet

Leave a Reply

Your email address will not be published. Required fields are marked *