1" Vim ABAP syntax file 2" Language: SAP - ABAP/R4 3" Maintainer: Marius Piedallu van Wyk <[email protected]> 4" Last Change: 2021 Jan 02 5" Comment: Thanks to EPI-USE Labs for all your assistance. :) 6 7" Quit when a syntax file was already loaded 8if exists("b:current_syntax") 9 finish 10endif 11 12" Always ignore case 13syn case ignore 14 15" Symbol Operators (space delimited) 16syn match abapSymbolOperator "\W+\W" 17syn match abapSymbolOperator "\W-\W" 18syn match abapSymbolOperator "\W/\W" 19syn match abapSymbolOperator "\W%\W" 20syn match abapSymbolOperator "\W=\W" 21syn match abapSymbolOperator "\W<\W" 22syn match abapSymbolOperator "\W>\W" 23syn match abapSymbolOperator "\W\*\W" 24syn match abapSymbolOperator "\W[<>]=\W" 25syn match abapSymbolOperator "\W<>\W" 26syn match abapSymbolOperator "\W\*\*\W" 27syn match abapSymbolOperator "\[\]" 28syn match abapSymbolOperator "->\*\?" 29syn match abapSymbolOperator "=>" 30syn match abapSymbolOperator "[()~:,\.&$]" 31 32" Literals 33syn region abapCharString matchgroup=abapCharString start="'" end="'" contains=abapCharStringEscape 34syn match abapCharStringEscape contained "''" 35 36syn region abapString matchgroup=abapString start="`" end="`" contains=abapStringEscape 37syn match abapStringEscape contained "``" 38 39syn match abapNumber "\-\=\<\d\+\>" 40syn region abapHex matchgroup=abapHex start="X'" end="'" 41 42setlocal iskeyword=48-57,_,A-Z,a-z,/ 43 44syn match abapNamespace "\</\w\+/" 45 46" multi-word statements 47syn match abapComplexStatement "\<\(WITH\W\+\(HEADER\W\+LINE\|FRAME\|KEY\)\|WITH\)\>" 48syn match abapComplexStatement "\<NO\W\+STANDARD\W\+PAGE\W\+HEADING\>" 49syn match abapComplexStatement "\<\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\>" 50syn match abapComplexStatement "\<\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\>" 51syn match abapComplexStatement "\<\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\>" 52syn match abapComplexStatement "\<NO\W\+INTERVALS\>" 53syn match abapComplexStatement "\<RESPECTING\W\+BLANKS\>" 54syn match abapComplexStatement "\<SEPARATED\W\+BY\>" 55syn match abapComplexStatement "\<USING\(\W\+EDIT\W\+MASK\)\?\>" 56syn match abapComplexStatement "\<WHERE\(\W\+LINE\)\?\>" 57syn match abapComplexStatement "\<GET\W\+\(TIME\(\W\+STAMP\)\?\(\W\+FIELD\)\?\|PF-STATUS\|BADI\|BIT\|CONNECTION\|CURSOR\|REFERENCE\W\+OF\)\>" 58syn match abapComplexStatement "\<RADIOBUTTON\W\+GROUP\>" 59syn match abapComplexStatement "\<REF\W\+TO\>" 60syn match abapComplexStatement "\<\(PUBLIC\|PRIVATE\|PROTECTED\)\(\W\+SECTION\)\?\>" 61syn match abapComplexStatement "\<DELETING\W\+\(TRAILING\|LEADING\)\>" 62syn match abapComplexStatement "\<\(ALL\W\+OCCURRENCES\)\|\(\(FIRST\|LAST\)\W\+OCCURRENCE\)\>" 63syn match abapComplexStatement "\<INHERITING\W\+FROM\>" 64syn match abapComplexStatement "\<\(UP\W\+\)\?TO\>" 65 66" hyphenated-word statements 67syn match abapComplexStatement "\<LINE-COUNT\>" 68syn match abapComplexStatement "\<ADD-CORRESPONDING\>" 69syn match abapComplexStatement "\<AUTHORITY-CHECK\>" 70syn match abapComplexStatement "\<BREAK-POINT\>" 71syn match abapComplexStatement "\<CLASS-DATA\>" 72syn match abapComplexStatement "\<CLASS-METHODS\>" 73syn match abapComplexStatement "\<CLASS-METHOD\>" 74syn match abapComplexStatement "\<DIVIDE-CORRESPONDING\>" 75syn match abapComplexStatement "\<EDITOR-CALL\>" 76syn match abapComplexStatement "\<END-OF-DEFINITION\>" 77syn match abapComplexStatement "\<END-OF-PAGE\>" 78syn match abapComplexStatement "\<END-OF-SELECTION\>" 79syn match abapComplexStatement "\<FIELD-GROUPS\>" 80syn match abapComplexStatement "\<FIELD-SYMBOLS\>" 81syn match abapComplexStatement "\<FUNCTION-POOL\>" 82syn match abapComplexStatement "\<IS\W\+\(NOT\W\+\)\?\(ASSIGNED\|BOUND\|INITIAL\|SUPPLIED\)\>" 83syn match abapComplexStatement "\<MOVE-CORRESPONDING\>" 84syn match abapComplexStatement "\<MULTIPLY-CORRESPONDING\>" 85syn match abapComplexStatement "\<NEW-LINE\>" 86syn match abapComplexStatement "\<NEW-PAGE\>" 87syn match abapComplexStatement "\<NEW-SECTION\>" 88syn match abapComplexStatement "\<PRINT-CONTROL\>" 89syn match abapComplexStatement "\<RP-PROVIDE-FROM-LAST\>" 90syn match abapComplexStatement "\<SELECT-OPTIONS\>" 91syn match abapComplexStatement "\<SELECTION-SCREEN\>" 92syn match abapComplexStatement "\<START-OF-SELECTION\>" 93syn match abapComplexStatement "\<SUBTRACT-CORRESPONDING\>" 94syn match abapComplexStatement "\<SYNTAX-CHECK\>" 95syn match abapComplexStatement "\<SYNTAX-TRACE\>" 96syn match abapComplexStatement "\<TOP-OF-PAGE\>" 97syn match abapComplexStatement "\<TYPE-POOL\>" 98syn match abapComplexStatement "\<TYPE-POOLS\>" 99syn match abapComplexStatement "\<LINE-SIZE\>" 100syn match abapComplexStatement "\<LINE-COUNT\>" 101syn match abapComplexStatement "\<MESSAGE-ID\>" 102syn match abapComplexStatement "\<DISPLAY-MODE\>" 103syn match abapComplexStatement "\<READ\(-ONLY\)\?\>" 104 105" ABAP statements 106syn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT 107syn keyword abapStatement BACK 108syn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY 109syn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO 110syn keyword abapStatement ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT 111syn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION 112syn keyword abapStatement GENERATE 113syn keyword abapStatement HIDE 114syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION 115syn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP 116syn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY 117syn keyword abapStatement ON OVERLAY OPTIONAL OTHERS 118syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT 119syn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK 120syn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS 121syn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES 122syn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE 123syn keyword abapStatement WHEN WHILE WINDOW WRITE 124 125" More statemets 126syn keyword abapStatement LINES 127syn keyword abapStatement INTO GROUP BY HAVING ORDER BY SINGLE 128syn keyword abapStatement APPENDING CORRESPONDING FIELDS OF TABLE 129syn keyword abapStatement LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER ROWS CONNECTING 130syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY 131syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR 132syn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT 133syn keyword abapStatement ID NUMBER FOR TITLE OUTPUT 134 135" Special ABAP specific tables: 136syn match abapSpecialTables "\<\(sy\|\(hrp\|p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained 137syn match abapStructure "\<\w\+-[^\>]"me=e-2 contains=abapSpecialTables,abapStatement,abapComplexStatement 138syn match abapField "-\w\+"ms=s+1 139 140" Pointer 141syn match abapSpecial "<\w\+>" 142 143" Abap common constants: 144syn keyword abapSpecial TRUE FALSE NULL SPACE 145 146" Includes 147syn region abapInclude start="include" end="." contains=abapComment 148 149" Types 150syn keyword abapTypes c n i int8 p f d t x string xstring decfloat16 decfloat34 151 152" Atritmitic operators 153syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan 154syn keyword abapOperator cosh sinh tanh exp log log10 sqrt 155 156" String operators 157syn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen 158 159syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN 160 161" An error? Not strictly... but cannot think of reason this is intended. 162syn match abapError "\.\." 163 164" Comments 165syn region abapComment start="^\*" end="$" contains=abapTodo 166syn match abapComment "\".*" contains=abapTodo 167syn keyword abapTodo contained TODO NOTE 168syn match abapTodo "\#EC\W\+\w\+" 169 170" Define the default highlighting. 171" Only when an item doesn't have highlighting yet 172 173hi def link abapError Error 174hi def link abapComment Comment 175hi def link abapInclude Include 176hi def link abapStatement Statement 177hi def link abapComplexStatement Statement 178hi def link abapSpecial Special 179hi def link abapNamespace Special 180hi def link abapSpecialTables Special 181hi def link abapSymbolOperator abapOperator 182hi def link abapOperator Operator 183hi def link abapCharString String 184hi def link abapString String 185hi def link abapFloat Float 186hi def link abapTypes Type 187hi def link abapSymbol Structure 188hi def link abapStructure Structure 189hi def link abapField Variable 190hi def link abapNumber Number 191hi def link abapHex Number 192 193 194let b:current_syntax = "abap" 195 196" vim: ts=8 sw=2 197