Se o último caractere deve ser B ou N , a condição em seu código está incorreta.
Em vez de
(!ref.toUpperCase().endsWith("B")) || (!ref.toUpperCase().endsWith("N"))
deve ser
(!ref.toUpperCase().endsWith("B")) && (!ref.toUpperCase().endsWith("N"))
Você precisa de and em vez de or .
Leia assim: "Se a última letra não for B e a última letra não for N, então o erro" .