There is one little problem with the current implementation.
ABAP allows keywords as variable names.
The following is perfectly legal ABAP:
DATA data TYPE sflight.
SELECT * FROM sflight INTO data WHERE carrid = 'BAR'.
The current version of the lexer would highlight all ocurrences of data as a keyword.
It should only highlight the first occurence as keyword and the other occurences as Name.Variable. I would need to implement a state for nearly all ABAP statements and I currently haven't gone through the trouble.