1d4755bb0SBram Moolenaar" Vim ABAP syntax file 27fc904b6SBram Moolenaar" Language: SAP - ABAP/R4 33a0d8090SBram Moolenaar" Maintainer: Marius Piedallu van Wyk <[email protected]> 4*82be4849SBram Moolenaar" Last Change: 2021 Jan 02 53a0d8090SBram Moolenaar" Comment: Thanks to EPI-USE Labs for all your assistance. :) 6d4755bb0SBram Moolenaar 79d87a37eSBram Moolenaar" Quit when a syntax file was already loaded 889bcfda6SBram Moolenaarif exists("b:current_syntax") 9d4755bb0SBram Moolenaar finish 10d4755bb0SBram Moolenaarendif 11d4755bb0SBram Moolenaar 12d4755bb0SBram Moolenaar" Always ignore case 13d4755bb0SBram Moolenaarsyn case ignore 14d4755bb0SBram Moolenaar 1597d62497SBram Moolenaar" Symbol Operators (space delimited) 163a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W+\W" 173a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W-\W" 183a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W/\W" 193a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W%\W" 203a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W=\W" 213a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W<\W" 223a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W>\W" 233a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W\*\W" 243a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W[<>]=\W" 253a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W<>\W" 263a0d8090SBram Moolenaarsyn match abapSymbolOperator "\W\*\*\W" 273a0d8090SBram Moolenaarsyn match abapSymbolOperator "\[\]" 283a0d8090SBram Moolenaarsyn match abapSymbolOperator "->\*\?" 293a0d8090SBram Moolenaarsyn match abapSymbolOperator "=>" 303a0d8090SBram Moolenaarsyn match abapSymbolOperator "[()~:,\.&$]" 31d4755bb0SBram Moolenaar 32d4755bb0SBram Moolenaar" Literals 333a0d8090SBram Moolenaarsyn region abapCharString matchgroup=abapCharString start="'" end="'" contains=abapCharStringEscape 343a0d8090SBram Moolenaarsyn match abapCharStringEscape contained "''" 35d4755bb0SBram Moolenaar 363a0d8090SBram Moolenaarsyn region abapString matchgroup=abapString start="`" end="`" contains=abapStringEscape 373a0d8090SBram Moolenaarsyn match abapStringEscape contained "``" 383a0d8090SBram Moolenaar 393a0d8090SBram Moolenaarsyn match abapNumber "\-\=\<\d\+\>" 40d4755bb0SBram Moolenaarsyn region abapHex matchgroup=abapHex start="X'" end="'" 41d4755bb0SBram Moolenaar 423a0d8090SBram Moolenaarsetlocal iskeyword=48-57,_,A-Z,a-z,/ 43d4755bb0SBram Moolenaar 4497d62497SBram Moolenaarsyn match abapNamespace "\</\w\+/" 453a0d8090SBram Moolenaar 463a0d8090SBram Moolenaar" multi-word statements 4797d62497SBram Moolenaarsyn match abapComplexStatement "\<\(WITH\W\+\(HEADER\W\+LINE\|FRAME\|KEY\)\|WITH\)\>" 4897d62497SBram Moolenaarsyn match abapComplexStatement "\<NO\W\+STANDARD\W\+PAGE\W\+HEADING\>" 4997d62497SBram Moolenaarsyn match abapComplexStatement "\<\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\>" 5097d62497SBram Moolenaarsyn match abapComplexStatement "\<\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\>" 5197d62497SBram Moolenaarsyn match abapComplexStatement "\<\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\>" 5297d62497SBram Moolenaarsyn match abapComplexStatement "\<NO\W\+INTERVALS\>" 5397d62497SBram Moolenaarsyn match abapComplexStatement "\<RESPECTING\W\+BLANKS\>" 5497d62497SBram Moolenaarsyn match abapComplexStatement "\<SEPARATED\W\+BY\>" 5597d62497SBram Moolenaarsyn match abapComplexStatement "\<USING\(\W\+EDIT\W\+MASK\)\?\>" 5697d62497SBram Moolenaarsyn match abapComplexStatement "\<WHERE\(\W\+LINE\)\?\>" 579d87a37eSBram Moolenaarsyn match abapComplexStatement "\<GET\W\+\(TIME\(\W\+STAMP\)\?\(\W\+FIELD\)\?\|PF-STATUS\|BADI\|BIT\|CONNECTION\|CURSOR\|REFERENCE\W\+OF\)\>" 5897d62497SBram Moolenaarsyn match abapComplexStatement "\<RADIOBUTTON\W\+GROUP\>" 5997d62497SBram Moolenaarsyn match abapComplexStatement "\<REF\W\+TO\>" 6097d62497SBram Moolenaarsyn match abapComplexStatement "\<\(PUBLIC\|PRIVATE\|PROTECTED\)\(\W\+SECTION\)\?\>" 6197d62497SBram Moolenaarsyn match abapComplexStatement "\<DELETING\W\+\(TRAILING\|LEADING\)\>" 6297d62497SBram Moolenaarsyn match abapComplexStatement "\<\(ALL\W\+OCCURRENCES\)\|\(\(FIRST\|LAST\)\W\+OCCURRENCE\)\>" 6397d62497SBram Moolenaarsyn match abapComplexStatement "\<INHERITING\W\+FROM\>" 6497d62497SBram Moolenaarsyn match abapComplexStatement "\<\(UP\W\+\)\?TO\>" 653a0d8090SBram Moolenaar 663a0d8090SBram Moolenaar" hyphenated-word statements 6797d62497SBram Moolenaarsyn match abapComplexStatement "\<LINE-COUNT\>" 6897d62497SBram Moolenaarsyn match abapComplexStatement "\<ADD-CORRESPONDING\>" 6997d62497SBram Moolenaarsyn match abapComplexStatement "\<AUTHORITY-CHECK\>" 7097d62497SBram Moolenaarsyn match abapComplexStatement "\<BREAK-POINT\>" 7197d62497SBram Moolenaarsyn match abapComplexStatement "\<CLASS-DATA\>" 7297d62497SBram Moolenaarsyn match abapComplexStatement "\<CLASS-METHODS\>" 7397d62497SBram Moolenaarsyn match abapComplexStatement "\<CLASS-METHOD\>" 7497d62497SBram Moolenaarsyn match abapComplexStatement "\<DIVIDE-CORRESPONDING\>" 7597d62497SBram Moolenaarsyn match abapComplexStatement "\<EDITOR-CALL\>" 7697d62497SBram Moolenaarsyn match abapComplexStatement "\<END-OF-DEFINITION\>" 7797d62497SBram Moolenaarsyn match abapComplexStatement "\<END-OF-PAGE\>" 7897d62497SBram Moolenaarsyn match abapComplexStatement "\<END-OF-SELECTION\>" 7997d62497SBram Moolenaarsyn match abapComplexStatement "\<FIELD-GROUPS\>" 8097d62497SBram Moolenaarsyn match abapComplexStatement "\<FIELD-SYMBOLS\>" 8197d62497SBram Moolenaarsyn match abapComplexStatement "\<FUNCTION-POOL\>" 8297d62497SBram Moolenaarsyn match abapComplexStatement "\<IS\W\+\(NOT\W\+\)\?\(ASSIGNED\|BOUND\|INITIAL\|SUPPLIED\)\>" 8397d62497SBram Moolenaarsyn match abapComplexStatement "\<MOVE-CORRESPONDING\>" 8497d62497SBram Moolenaarsyn match abapComplexStatement "\<MULTIPLY-CORRESPONDING\>" 8597d62497SBram Moolenaarsyn match abapComplexStatement "\<NEW-LINE\>" 8697d62497SBram Moolenaarsyn match abapComplexStatement "\<NEW-PAGE\>" 8797d62497SBram Moolenaarsyn match abapComplexStatement "\<NEW-SECTION\>" 8897d62497SBram Moolenaarsyn match abapComplexStatement "\<PRINT-CONTROL\>" 8997d62497SBram Moolenaarsyn match abapComplexStatement "\<RP-PROVIDE-FROM-LAST\>" 9097d62497SBram Moolenaarsyn match abapComplexStatement "\<SELECT-OPTIONS\>" 9197d62497SBram Moolenaarsyn match abapComplexStatement "\<SELECTION-SCREEN\>" 9297d62497SBram Moolenaarsyn match abapComplexStatement "\<START-OF-SELECTION\>" 9397d62497SBram Moolenaarsyn match abapComplexStatement "\<SUBTRACT-CORRESPONDING\>" 9497d62497SBram Moolenaarsyn match abapComplexStatement "\<SYNTAX-CHECK\>" 9597d62497SBram Moolenaarsyn match abapComplexStatement "\<SYNTAX-TRACE\>" 9697d62497SBram Moolenaarsyn match abapComplexStatement "\<TOP-OF-PAGE\>" 9797d62497SBram Moolenaarsyn match abapComplexStatement "\<TYPE-POOL\>" 9897d62497SBram Moolenaarsyn match abapComplexStatement "\<TYPE-POOLS\>" 9997d62497SBram Moolenaarsyn match abapComplexStatement "\<LINE-SIZE\>" 10097d62497SBram Moolenaarsyn match abapComplexStatement "\<LINE-COUNT\>" 10197d62497SBram Moolenaarsyn match abapComplexStatement "\<MESSAGE-ID\>" 10297d62497SBram Moolenaarsyn match abapComplexStatement "\<DISPLAY-MODE\>" 10397d62497SBram Moolenaarsyn match abapComplexStatement "\<READ\(-ONLY\)\?\>" 1043a0d8090SBram Moolenaar 105d4755bb0SBram Moolenaar" ABAP statements 1063a0d8090SBram Moolenaarsyn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT 10797d62497SBram Moolenaarsyn keyword abapStatement BACK 1083a0d8090SBram Moolenaarsyn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY 1093a0d8090SBram Moolenaarsyn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO 1103a0d8090SBram Moolenaarsyn 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 1113a0d8090SBram Moolenaarsyn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION 1129d87a37eSBram Moolenaarsyn keyword abapStatement GENERATE 113d4755bb0SBram Moolenaarsyn keyword abapStatement HIDE 11497d62497SBram Moolenaarsyn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION 1153a0d8090SBram Moolenaarsyn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP 1163a0d8090SBram Moolenaarsyn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY 1173a0d8090SBram Moolenaarsyn keyword abapStatement ON OVERLAY OPTIONAL OTHERS 1183a0d8090SBram Moolenaarsyn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT 11997d62497SBram Moolenaarsyn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK 1203a0d8090SBram Moolenaarsyn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS 1213a0d8090SBram Moolenaarsyn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES 1223a0d8090SBram Moolenaarsyn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE 123d4755bb0SBram Moolenaarsyn keyword abapStatement WHEN WHILE WINDOW WRITE 124d4755bb0SBram Moolenaar 125d4755bb0SBram Moolenaar" More statemets 12697d62497SBram Moolenaarsyn keyword abapStatement LINES 12797d62497SBram Moolenaarsyn keyword abapStatement INTO GROUP BY HAVING ORDER BY SINGLE 12897d62497SBram Moolenaarsyn keyword abapStatement APPENDING CORRESPONDING FIELDS OF TABLE 12997d62497SBram Moolenaarsyn keyword abapStatement LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER ROWS CONNECTING 130d4755bb0SBram Moolenaarsyn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY 131d4755bb0SBram Moolenaarsyn keyword abapStatement CASTING APPEND RAISING VALUE COLOR 1323a0d8090SBram Moolenaarsyn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT 1333a0d8090SBram Moolenaarsyn keyword abapStatement ID NUMBER FOR TITLE OUTPUT 134d4755bb0SBram Moolenaar 135d4755bb0SBram Moolenaar" Special ABAP specific tables: 13652b91d80SBram Moolenaarsyn match abapSpecialTables "\<\(sy\|\(hrp\|p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained 13797d62497SBram Moolenaarsyn match abapStructure "\<\w\+-[^\>]"me=e-2 contains=abapSpecialTables,abapStatement,abapComplexStatement 13897d62497SBram Moolenaarsyn match abapField "-\w\+"ms=s+1 139d4755bb0SBram Moolenaar 140d4755bb0SBram Moolenaar" Pointer 141d4755bb0SBram Moolenaarsyn match abapSpecial "<\w\+>" 142d4755bb0SBram Moolenaar 14397d62497SBram Moolenaar" Abap common constants: 144d4755bb0SBram Moolenaarsyn keyword abapSpecial TRUE FALSE NULL SPACE 145d4755bb0SBram Moolenaar 146d4755bb0SBram Moolenaar" Includes 147d4755bb0SBram Moolenaarsyn region abapInclude start="include" end="." contains=abapComment 148d4755bb0SBram Moolenaar 149d4755bb0SBram Moolenaar" Types 1509d87a37eSBram Moolenaarsyn keyword abapTypes c n i int8 p f d t x string xstring decfloat16 decfloat34 151d4755bb0SBram Moolenaar 152d4755bb0SBram Moolenaar" Atritmitic operators 153d4755bb0SBram Moolenaarsyn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan 154d4755bb0SBram Moolenaarsyn keyword abapOperator cosh sinh tanh exp log log10 sqrt 155d4755bb0SBram Moolenaar 156d4755bb0SBram Moolenaar" String operators 15797d62497SBram Moolenaarsyn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen 158d4755bb0SBram Moolenaar 159d4755bb0SBram Moolenaarsyn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN 160d4755bb0SBram Moolenaar 161d4755bb0SBram Moolenaar" An error? Not strictly... but cannot think of reason this is intended. 162d4755bb0SBram Moolenaarsyn match abapError "\.\." 163d4755bb0SBram Moolenaar 164d4755bb0SBram Moolenaar" Comments 165d4755bb0SBram Moolenaarsyn region abapComment start="^\*" end="$" contains=abapTodo 166d4755bb0SBram Moolenaarsyn match abapComment "\".*" contains=abapTodo 167d4755bb0SBram Moolenaarsyn keyword abapTodo contained TODO NOTE 1683a0d8090SBram Moolenaarsyn match abapTodo "\#EC\W\+\w\+" 169d4755bb0SBram Moolenaar 170d4755bb0SBram Moolenaar" Define the default highlighting. 17189bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 172d4755bb0SBram Moolenaar 173f37506f6SBram Moolenaarhi def link abapError Error 174f37506f6SBram Moolenaarhi def link abapComment Comment 175f37506f6SBram Moolenaarhi def link abapInclude Include 176f37506f6SBram Moolenaarhi def link abapStatement Statement 177f37506f6SBram Moolenaarhi def link abapComplexStatement Statement 178f37506f6SBram Moolenaarhi def link abapSpecial Special 179f37506f6SBram Moolenaarhi def link abapNamespace Special 180f37506f6SBram Moolenaarhi def link abapSpecialTables Special 181f37506f6SBram Moolenaarhi def link abapSymbolOperator abapOperator 182f37506f6SBram Moolenaarhi def link abapOperator Operator 183f37506f6SBram Moolenaarhi def link abapCharString String 184f37506f6SBram Moolenaarhi def link abapString String 185f37506f6SBram Moolenaarhi def link abapFloat Float 186f37506f6SBram Moolenaarhi def link abapTypes Type 187f37506f6SBram Moolenaarhi def link abapSymbol Structure 188f37506f6SBram Moolenaarhi def link abapStructure Structure 189f37506f6SBram Moolenaarhi def link abapField Variable 190f37506f6SBram Moolenaarhi def link abapNumber Number 191f37506f6SBram Moolenaarhi def link abapHex Number 192d4755bb0SBram Moolenaar 193d4755bb0SBram Moolenaar 194d4755bb0SBram Moolenaarlet b:current_syntax = "abap" 195d4755bb0SBram Moolenaar 196d4755bb0SBram Moolenaar" vim: ts=8 sw=2 197