ABAP Keyword Documentation → ABAP - Reference → program editing → Dynamic Program Editing → Source Code
SYNTAX-CHECK
Other versions: 7.31 | 7.40 | 7.54
Syntax
SYNTAX-CHECK FOR itab MESSAGE mess LINE lin WORD wrd
[PROGRAM prog] [DIRECTORY ENTRY dir]
[WITH CURRENT SWITCHSTATES]
[error_handling].
Extras
1. ... PROGRAM prog
2. ... DIRECTORY ENTRY dir
3. ... WITH CURRENT SWITCHSTATES
Effect
This statement executes a syntax
check on the content of the internal table itab
. The internal table itab
must be a
standard table without
secondary table keys with a character-like row type.
If the internal table does not contain syntactically correct ABAP source code, then:
-
The error message of the first syntax error is assigned to variable
mess
.mess
must be a character-like data object. -
The line number of the first syntax error, with reference to the program in which it occurs (either the source code in
itab
or an integrated include program included there) is assigned to the variablelin
.lin
expects the data typei
. -
The first token with errors is assigned to the variable
wrd
.wrd
must be a character-like data object.
The additions PROGRAM
and DIRECTORY ENTRY
are
used to set the attributes for the syntax check. The WITH CURRENT SWITCHSTATES
addition specifies which switch configuration is used for the syntax check. The other
error_handling
additions can be used to identify other attributes of the first syntax error.
System Fields
sy-subrc | Meaning |
---|---|
0 | The internal table itab contains a syntactically correct ABAP program. |
4 | The internal table itab does not contain a syntactically correct ABAP program. |
8 | A runtime error occurred in the syntax check. |
If a runtime error occurs during the syntax check (sy-subrc
has the value 8), a database rollback is executed in the usual manner. As usual, the short dump of the runtime error can be found in
ABAP Dump Analysis.
If the internal addition ID
is specified with ERR, the value 6 can also occur for sy-subrc
.
Note
It is not required to execute the SYNTAX-CHECK
statement directly before
GENERATE SUBROUTINE POOL
or GENERATE REPORT
, because the syntax check is always performed when these statements are executed.
Addition 1
... PROGRAM prog
Addition 2
... DIRECTORY ENTRY dir
Effect
These additions are used to specify the program attributes used for the syntax check.
-
The
PROGRAM
addition is used to specify inprog
the name of an ABAP program whose program attributes are to be used for the syntax check.prog
must be a character-like data object, whose content is not case-sensitive. If the specified program is not found, the standard attributes specified below are used. -
After the
DIRECTORY ENTRY
addition, a data objectdir
must be specified, whose data type corresponds to the structure of database table TRDIR from ABAP Dictionary. The required program attributes can be specified in the components of this structure. Invalid values are replaced implicitly by internally defined standard values.
At least one of the two additions PROGRAM
or DIRECTORY
ENTRY must be specified. If both additions are specified, the program attributes are determined by the structure dir
.
Notes
-
We recommend the use of addition
PROGRAM
, because the components of structuredir
and their valid values can be interpreted within the system only. If additionDIRECTORY ENTRY
is nevertheless used in application programs, the content of structuredir
should be set by reading the appropriate entry from database table TRDIR and by modifying only individual components as required. - Important program attributes for the syntax check are, for example, the program type and whether the program is a Unicode program.
-
In obsolete
non-Unicode programs,
it is not necessary to specify least one of the additions
PROGRAM
orDIRECTORY ENTRY
. If neither of the additions is specified, an executable program is used as the program type. General default values are then assigned to the remaining program attributes.
Example
Syntax check for source code in itab
. By reading the attributes of the current
program from the database TRDIR into the structure dir
, these can be used
after DIRECTORY ENTRY
. When the dir-uccheck
component
is set, the first syntax check is executed in the same way as for obsolete non-Unicode programs and
the second as for Unicode programs. The first syntax check does not find an error in a non-Unicode system
and detects the error when the program is not Unicode-enabled. The second syntax check always identifies
the error when the BYTE
or CHARACTER MODE
addition is missing from the DESCRIBE
statement.
DATA: itab TYPE STANDARD TABLE OF string,
mess TYPE string,
lin TYPE i,
wrd TYPE string,
dir TYPE trdir.
APPEND 'PROGRAM test.' TO itab.
APPEND 'DATA dat TYPE d.' TO itab.
APPEND 'DATA len TYPE i.' TO itab.
APPEND 'DESCRIBE FIELD dat LENGTH len.' TO itab.
SELECT SINGLE *
FROM trdir
WHERE name = @sy-repid
INTO @dir.
dir-uccheck = ' '.
SYNTAX-CHECK FOR itab MESSAGE mess LINE lin WORD wrd
DIRECTORY ENTRY dir.
IF sy-subrc = 4.
MESSAGE mess TYPE 'I'.
ENDIF.
dir-uccheck = 'X'.
SYNTAX-CHECK FOR itab MESSAGE mess LINE lin WORD wrd
DIRECTORY ENTRY dir.
IF sy-subrc = 4.
MESSAGE mess TYPE 'I'.
ENDIF.
Addition 3
... WITH CURRENT SWITCHSTATES
Effect
This addition causes the syntax check to use the switch configuration of Switch Framework, in the state it had when the current transaction was called. Without the addition, the switch configuration valid when the statement is executed is used.
-
This addition causes the syntax check to run with the same switch states from Switch Framework as were
used when the statement
GENERATE SUBROUTINE POOL
was executed. -
Without the addition, the syntax check is performed in the same way as for every regular compilation of ABAP programs.