As I said, sy-langu is not guaranteed to have logon language. consider the code below:
REPORT ycust01.
DATA language TYPE sylangu VALUE 'S'.
WRITE: / sy-langu.
sy-langu = language.
WRITE: / sy-langu.
sy-langu = cl_abap_syst=>get_language( ).
WRITE: / sy-langu.
The output is:
EN
ES
EN
Regards,
Custodio