Validar un correo electrónico puede ser un poco complicado por la libertad que existe para elegir un nombre para un email, sabemos que puede llevar una @ y antes de la arroba puede contener cualquier número, letra, puntos, guiones, etc. Luego de la arroba debe tener algún texto, luego al menos un punto y algunos caracteres y adicionalmente debe permitir más combinaciones de punto y caracteres (@empresa.com.mx). La mejor forma de realizar una validación tan compleja como esta es a través de expresiones regulares.
Las expresiones regulares se usan para encontrar cadenas de textos por medio de patrones, por ejemplo palabras que comiencen por con “co” luego lleven alguna letra o grupo de letras y terminen con “ción”.
Para determinar si una cadena es un email, podríamos usar esta expresión regular
^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$
Y para usarlo en nuestros programas de ABAP podemos tomar como base el siguiente ejemplo:
DATA: matcher TYPE REF TO cl_abap_matcher, email TYPE string. email = '[email protected]'. matcher = cl_abap_matcher=>create( pattern = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$' text = email ). IF matcher->match( ) IS INITIAL. "No se reconocio como email MESSAGE 'Debe ingresar un email valido' TYPE 'W'. ELSE. MESSAGE 'Es un email valido' TYPE 'S'. ENDIF.
Para hacerlo más práctico puedes crear una función donde envíes el email y te retorne el resultado de evaluar si el correo electrónico es valido, de esta forma puedes reutilizar el código en todos tus programas.