Friday, June 10, 2011

E-Mail-Adresse auf syntaktische Korrektheit prüfen

Prüfung einer Email auf syntaktische Korrektheit aus SAP in ABAP:


function check_email_syntax.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     REFERENCE(IV_EMAIL_ADR) TYPE  AD_SMTPADR
*"  EXPORTING
*"     REFERENCE(EV_VALID) TYPE  XFELD
*"----------------------------------------------------------------------

  data lv_offset type i.
  data lv_length type i.

  ev_valid = 'X'.

* Checks if the eMail address is syntactically correct
  find first occurrence of regex '\w+([-+.]\w+)*@(\w+[-+.])*\w+\w+[-+.]\w+\w+'
    in iv_email_adr match offset lv_offset match length lv_length.

  if not ( sy-subrc = and
    lv_offset = and lv_length = strlen( iv_email_adr ) ).
    clear ev_valid.
  endif.

endfunction.



Anmerkung: Die regex ist in ABAP nicht ganz korrekt, da das "w" nicht nur Buchstaben, sondern auch gewisse Sonderzeichen "durchlässt". Hier muss eine Anpassung vorgenommen werden, z.B. :xdigit statt w.

SAP ABAP: Determine Timezone for Plant

    DATA:       lt_tzone TYPE STANDARD TABLE OF tznzone WITH DEFAULT KEY,       l_tzone  TYPE tznzone.     " get time zone for plant   ...