You are on page 1of 20

ABAP System Fields

ABAP system fields are always available in ABAP programs. The runtime system fills them according
to context. They can then be used in programs to query the system status. System fields are variables
but you should always treat them as though they were constants, and only read them. If you change
their values, important information for the flow of the program may be lost. In exceptional
circumstances, system fields may be overwritten in an ABAP program to control the system for
example, SY-LSIND (for navigating to a detail list).
With one exception the names and data types of the system fields are stored in the ABAP Dictionary
in the SYST structure and realized as components of the predefined structure SY in ABAP programs.
The system field SY-REPID is not part of SYST or SY. Instead, every program contains the
predefined constants SY-REPID and SYST-REPID, which both contain the name of the
corresponding program. Furthermore, there are two predefined types of the same name, SY-REPID
and SYST-REPID.
All system fields are addressed using SY field name and their types using SYST field name.

Alphabetical Overview
The following table lists the definitions of the structure SYST in the ABAP Dictionary alphabetically.
The character in the first column indicates how you can use the corresponding system field in ABAP
programs. Name is the name of the component, Type is the Dictionary data type, and Length is the
field length defined in the Dictionary. The Use column shows in which environment the system fields
are set. The Description indicates the content.
Name

Type

Length

Use

ABCDE

CHAR

26

Constants

APPLI

RAW

Obsolete

BATCH

CHAR

Background processing

BATZD

CHAR

Obsolete

BATZM

CHAR

Obsolete

BATZO

CHAR

Obsolete

BATZS

CHAR

Obsolete

BATZW

CHAR

Obsolete

BINPT

CHAR

Batch input

BREP4

CHAR

Obsolete

BSPLD

CHAR

Obsolete

CALLD

CHAR

ABAP Program

CALLR

CHAR

Printing Lists

CCURS

DEC

Obsolete

CCURT

DEC

Obsolete

CDATE

DATS

Obsolete

CFWAE

CUKY

Internal

CHWAE

CUKY

Internal

COLNO

INT4

10

Creating Lists

CPAGE

INT4

10

List processing

CPROG

CHAR

40

ABAP Program

CTABL

CHAR

Obsolete

CTYPE

CHAR

Obsolete

CUCOL

INT4

10

Screens

CUROW

INT4

10

Screens

DATAR

CHAR

Screens

DATLO

DATS

Date and time

DATUM

DATS

Date and time

DAYST

CHAR

Date and time

DBCNT

INT4

10

Database accesses

DBNAM

CHAR

20

ABAP Program

DBSYS

CHAR

10

R/3 System

DCSYS

CHAR

Obsolete

DEBUG

CHAR

Internal

DSNAM

CHAR

Internal

DYNGR

CHAR

ABAP Program

DYNNR

CHAR

ABAP Program

ENTRY

CHAR

72

Internal

FDAYW

INT1

Date and time

FDPOS

INT4

10

Character strings

FFILE

CHAR

Internal

FLENG

INT4

10

Internal

FMKEY

CHAR

Obsolete

FODEC

INT4

10

Internal

FOLEN

INT4

10

Internal

FTYPE

CHAR

Internal

GROUP

CHAR

Internal

HOST

CHAR

R/3 System

INDEX

INT4

10

Loops

INPUT

CHAR

Internal

LANGU

LANG

R/3 System

LDBPG

CHAR

40

ABAP Program

LILLI

INT4

10

List processing

LINCT

INT4

10

Creating Lists

LINNO

INT4

10

Creating Lists

LINSZ

INT4

10

Creating Lists

LISEL

CHAR

255

List processing

LISTI

INT4

10

List processing

LOCDB

CHAR

Obsolete

LOCOP

CHAR

Obsolete

LOOPC

INT4

10

Screens

LPASS

CHAR

Internal

LSIND

INT4

10

List processing

LSTAT

CHAR

16

List processing

MACDB

CHAR

Obsolete

MACOL

INT4

10

Printing Lists

MANDT

CLNT

R/3 System

MARKY

CHAR

Obsolete

MAROW

INT4

10

Printing Lists

MODNO

CHAR

R/3 System

MSGID

CHAR

20

Messages

MSGLI

CHAR

60

Messages

MSGNO

NUMC

Messages

MSGTY

CHAR

Messages

MSGV1

CHAR

50

Messages

MSGV2

CHAR

50

Messages

MSGV3

CHAR

50

Messages

MSGV4

CHAR

50

Messages

NEWPA

CHAR

Internal

NRPAG

CHAR

Internal

ONCOM

CHAR

Internal

OPSYS

CHAR

10

R/3 System

PAART

CHAR

16

Print parameters

PAGCT

INT4

10

Obsolete

PAGNO

INT4

10

Creating Lists

PAUTH

NUMC

Internal

PDEST

CHAR

Print parameters

PEXPI

NUMC

Print parameters

PFKEY

CHAR

20

Screens

PLAYO

CHAR

Internal

PLAYP

CHAR

Internal

PLIST

CHAR

12

Print parameters

PNWPA

CHAR

Internal

PRABT

CHAR

12

Print parameters

PRBIG

CHAR

Print parameters

PRCOP

NUMC

Print parameters

PRDSN

CHAR

Print parameters

PREFX

CHAR

Obsolete

PRI40

CHAR

Internal

PRIMM

CHAR

Print parameters

PRINI

NUMC

Internal

PRLOG

CHAR

Internal

PRNEW

CHAR

Print parameters

PRREC

CHAR

12

Print parameters

PRREL

CHAR

Print parameters

PRTXT

CHAR

68

Print parameters

REPI2

CHAR

40

Internal

REPID

CHAR

40

ABAP Program

RSTRT

CHAR

Internal

RTITL

CHAR

70

Print parameters

SAPRL

CHAR

R/3 System

SCOLS

INT4

10

Screens

SFNAM

CHAR

30

Obsolete

SFOFF

INT4

10

Internal

SLSET

CHAR

14

Selection screens

SPONO

NUMC

10

Printing Lists

SPONR

NUMC

10

Obsolete

SROWS

INT4

10

Screens

STACO

INT4

10

List processing

STARO

INT4

10

List processing

STEPL

INT4

10

Screens

SUBCS

CHAR

Internal

SUBRC

INT4

10

Return value

SUBTY

RAW

Internal

SYSID

CHAR

R/3 System

TABID

CHAR

Internal

TABIX

INT4

10

Internal Tables

TCODE

CHAR

20

ABAP Program

TFDSN

CHAR

Obsolete

TFILL

INT4

10

Internal Tables

TIMLO

TIMS

Date and time

TITLE

CHAR

70

Screens

TLENG

INT4

10

Internal Tables

TLOPC

INT4

10

Internal

TMAXL

INT4

10

Obsolete

TNAME

CHAR

30

Obsolete

TOCCU

INT4

10

Obsolete

TPAGI

INT4

10

Obsolete

TSTIS

INT4

10

Internal

TTABC

INT4

10

Obsolete

TTABI

INT4

10

Obsolete

TVAR0

CHAR

20

Creating Lists

TVAR1

CHAR

20

Creating Lists

TVAR2

CHAR

20

Creating Lists

TVAR3

CHAR

20

Creating Lists

TVAR4

CHAR

20

Creating Lists

TVAR5

CHAR

20

Creating Lists

TVAR6

CHAR

20

Creating Lists

TVAR7

CHAR

20

Creating Lists

TVAR8

CHAR

20

Creating Lists

TVAR9

CHAR

20

Creating Lists

TZONE

INT4

10

Date and time

UCOMM

CHAR

70

Screens

ULINE

CHAR

255

Constants

UNAME

CHAR

12

R/3 System

UZEIT

TIMS

Date and time

VLINE

CHAR

Constants

WAERS

CUKY

Obsolete

WILLI

INT4

10

Obsolete

WINCO

INT4

10

Obsolete

WINDI

INT4

10

Obsolete

WINRO

INT4

10

Obsolete

WINSL

CHAR

79

Obsolete

WINX1

INT4

10

Obsolete

WINX2

INT4

10

Obsolete

WINY1

INT4

10

Obsolete

WINY2

INT4

10

Obsolete

WTITL

CHAR

Creating Lists

XCODE

CHAR

70

Internal

XFORM

CHAR

30

Internal

XPROG

CHAR

40

Internal

ZONLO

CHAR

Date and time

Key:
The system field is set by the runtime environment. Its content can be evaluated in the ABAP program

The system field is set by the runtime environment. Its content can be changed in the ABAP program to

The system field must be set in the ABAP program. It can then be evaluated by the runtime environmen
The system field is only for internal use and must not be used in ABAP programs.
The system field is obsolete and its content is not set. It cannot be used in ABAP programs.

Thematic Overview
The following is a thematic summary of the system fields with notes on their use:
System information

Information on the current R/3 System

Information on the user session

Date and time information

Information on the current ABAP program

Background processing

Batch input

ABAP programming

Constants

Character strings

Loops

Internal Tables

Database accesses

Return value
Screens

Screens

Selection screens

Lists

Messages

Internal system fields


Obsolete system fields

System Information
Information on the Current R/3 System
SY-DBSYS
Central database system, for example INFORMIX, ORACLE
SY-HOST
Application server, for example HS0333, PAWDF087
SY-OPSYS
Operating system of application server, for example HP-UX, SINIX
SY-SAPRL
Release status of R/3 System, for example 30D, 46A
SY-SYSID
Name of R/3 System, for example B20, I47

Information on the User Session


SY-LANGU
One-digit language key, for example D, E, F. Either logon language of user or set using the SET
LOCALE LANGUAGE statement.
SY-MANDT
Client number the user logged on with, for example 000, 400.
For database accesses with Open SQL, SY-MANDT is used as the first key field of the WHERE
clause.
SY-MODNO
Indexes external modes. Zero in first mode. In new modes, opened using the Create Mode function
or by calling a transaction using /o, it is raised by 1. If previous modes were deleted, the free numbers
are used first.Modes opened using CALL TRANSACTION STARTING NEW TASK start back at 0.
SY-UNAME
Logon name of user, for example KELLERH, BC400-01.

Date and Time Information


The following system fields are always set automatically. If necessary, the GET TIME statement
synchronizes the application server time with that of the database server and writes it to the system
field SY-UZEIT. SY-DATUM and the system fields for the local time zone, that is SY-TIMLO, SYDATLO, and SY-ZONLO are also reset.
SY-DATLO
Local date of user, for example 19981129, 19990628.
SY-DATUM
Current (application server) date, for example 19981130, 19990627.
SY-DAYST
During daylight saving time X, otherwise empty.
SY-FDAYW
Factory calendar weekday, Sunday 0 Saturday 6.
SY-TIMLO
Local time of user, for example 154353, 225312.
SY-TZONE
Time difference to Greenwich Mean Time (UTC) in seconds, for example 3600, 10800.
SY-UZEIT
Current (application server) time, for example 164353, 215312.
SY-ZONLO
Time zone of user, for example CET, UTC.

Information on the Current ABAP Program


SY-CALLD
SY-CALLD contains SPACE if the program is the first and only program in a call chain. SY_CALLD
contains 'X' if the program is a called program in a call chain (see ABAP Calls Overview).

SY-CALLD is set to X in a program called using CALL TRANSACTION, CALL DIALOG, or


SUBMIT AND RETURN.

SY-CALLD is set to SPACE in a program called using LEAVE TO TRANSACTION, entering a


transaction code on a screen, and processing batch input folders.

With SUBMIT (without RETURN) SY-CALLD retains the previous value.

SY-CPROG
In externally called procedures, the name of the calling program, otherwise the name of the current
program. If an externally called procedure calls another external procedure, SY-CPROG keeps the
name of the first main program and is not given the name of the main program of the further caller.
SY-DBNAM
With executable programs this is the linked logical database.
SY-DYNGR
Screen group of current screen. You can assign several screens to a common screen group. You can
use this, for example, to modify all of the screens in the group in a uniform way.

SY-DYNNR
Number of current screen During the selection screen processing, SY-DYNNR contains the screen
number of the current selection screen. During list processing, SY-DYNNR contains the number of the
container screen.While a subscreen is being processed, SY-DYNNR contains its screen number. This
also applies to tabstrips.
SY-LDBPG
With executable programs, the database program of the linked logical database.
SY-REPID
Name of current ABAP program. With externally called procedures this is the name of the procedures
main program.
If SY-REPID was transferred to an external procedure as an actual parameter before Release 6.10,
the formal parameter was not given the name of the caller, but the name of the procedures main
program. SY-REID had to be transferred to an auxiliary variable before the call or you had to use SYPROG.
As of Release 6.10, SY-REPID is a separate constant that is no longer part of the structure SYST or
SY. It can be transferred to external procedures directly.
SY-TCODE
Name of current transaction code.

Background Processing
SY-BATCH
SY-BATCH is set to X in an ABAP program running in the background. Otherwise it is empty.

Batch Input
SY-BINPT
SY-BINPT is set to X during processing of batch input folders and in ABAP programs called with CALL
TRANSACTION USING. Otherwise it is empty.

OPTIONS FROM in the CALL TRANSACTION USING statement can set SY-BINPT to empty for
the whole program execution, as well as at the end of the BDC data.

In CATT procedures, SY-BINPT is always empty.

ABAP Programming
Constants
SY-ABCDE
Contains the Alphabet. Can be used to access individual letters independently of the codepage by
specifying offset.
SY-ULINE
Contains a horizontal line with length 255. Can be used when creating the list.
SY-VLINE
Contains a vertical line (|). Can be used when creating the list

Loops
SY-INDEX
SY-INDEX contains the number of loop passes in DO and WHILE loops, including the current loop
pass.

Character Strings
SY-FDPOS
Found location for operations with character-type fields.

If the operators CO, CN, CA, NA, CS, NS, CP, NP are used in comparisons, SY-FDPOS is
assigned offset values depending on the comparison result.
SEARCH FOR sets SY-FDPOS to the offset of the found search string.

Internal Tables
SY-TABIX
Current line in an internal table. With the following statements SY-TABIX is set for index tables. With
hashed tables, SY-TABIX is not filled or it is set to 0.

APPEND sets SY-TABIX to the index of the last table row, that is the total number of entries in
the target table.

COLLECT sets SY-TABIX to the index of the existing or appended table row. With hashed
tables, SY-TABIX is set to 0.

LOOP AT sets SY-TABIX to the index of the current table row at the beginning of every loop
pass. After leaving a loop, SY-TABIX is set to the value it had before entering the loop. With
hashed tables, SY-TABIX is set to 0.

READ TABLE sets SY-TABIX to the index of the table row read. If no row is found with binary
search while reading, SY-TABIX contains the index of the next-highest row or the total number
of rows +1. If no row is found with linear search while reading, SY-TABIX is undefined.

SEARCH <itab> FOR sets SY-TABIX to the index of the table row, in which the search string
was found.

SY-TFILL
With the statements DESCRIBE TABLE, LOOP AT, and READ TABLE, SY-TFILL is filled with the row
number of the addressed internal table.
SY-TLENG
With the statements DESCRIBE TABLE, LOOP AT, and READ TABLE, the system fills SY-TLENG
with the row size of the addressed internal table.

Database Accesses
SY-DBCNT
SQL statements set the content of SY-DBCNT to the number of database lines processed. With
SELECT loops in Open SQL, SY-DBCNT is set after the ENDSELECT statement. In Native SQL, SYDBCNT is set after the ENDEXEC statement.

DELETE sets SY-DBCNT to the number of lines deleted.

FETCH sets SY-DBCNT to the number of lines already read by the current cursor.

INSERT sets SY-DBCNT to the number of lines inserted.

MODIFY sets SY-DBCNT to the number of lines processed.

UPDATE sets SY-DBCNT to the number of lines changed.

Return Value
SY-SUBRC
Return value set by the following ABAP statements. In general, a content of 0 means that the
statement was executed without problems.

ASSIGN sets SY-SUBRC to 0 if assignment to field symbol is possible, otherwise 4.

ASSIGN <dref>->* sets SY-SUBRC to 0 if dereferencing is possible, otherwise 4.

AUTHORITY-CHECK sets SY-SUBRC to 0 if the user has the necessary authorization,


otherwise 4, 8, 12, 16, 24, 28, 32, or 36 depending on the cause.

CALL DIALOG with USING sets SY-SUBRC to 0, if processing was successful, otherwise
<>0.

CALL FUNCTION sets SY-SUBRC according to the exception handling.

CALL METHOD sets SY-SUBRC according to the exception handling.

CALL SELECTION-SCREEN sets SY-SUBRC to 0 if the user chose Enter or Execute and 4 if
the user chose Cancel.

CALL TRANSACTION with USING sets SY-SUBRC to 0 if processing was successful,


otherwise <>0.

CATCH SYSTEM-EXCEPTIONS sets SY-SUBRC if there are runtime errors after the
ENDCATCH statement. The value is specified in the program.

COMMIT WORK sets SY-SUBRC to 0.

COMMIT WORK AND WAIT sets SY-SUBRC to 0 if update was successful, otherwise <>0.

COMMUNICATION INIT DESTINATION RETURNCODE sets SY-SUBRC as specified.

CONCATENATE sets SY-SUBRC to 0 if the result fits into target variable, otherwise 4.

CREATE OBJECT sets SY-SUBRC if the exceptions of the instance constructor are handled.

CREATE OBJECT in OLE2 sets SY-SUBRC to 0 if an external object was created, otherwise
1,2, 3 with different causes.

DELETE sets SY-SUBRC to 0 if the operation was successful, otherwise 4 or <> 0 depending
on cause.

DEMAND MESSAGES INTO sets SY-SUBRC to 0 if a message table is empty, otherwise


<> 0.

DESCRIBE LIST sets SY-SUBRC to 0 if row or list exists, otherwise 4 or 8.


EXEC SQL - ENDEXEC sets SY-SUBRC to 0 in almost all cases. Only if no set was read with
FETCH is SY-SUBRC 4.

FETCH sets SY-SUBRC to 0 if at least one row was read, otherwise 4.

GENERATE SUBROUTINE POOL sets SY-SUBRC to 0 if generation was successful, otherwise


8.

GET CURSOR sets SY-SUBRC to 0 if the cursor is correctly positioned, otherwise 4.

GET PARAMETER sets SY-SUBRC to 0 if value found in SAP Memory, otherwise 4.

IMPORT sets SY-SUBRC to 0 if import of data objects was successful, otherwise 4.

LOAD REPORT sets SY-SUBRC to 0 if the operation was successful, otherwise 4 or 8


depending on cause.

LOOP sets SY-SUBRC to 0 if loop over extract was passed at least once, otherwise 4.

LOOP AT sets SY-SUBRC to 0 if loop over internal table was passed at least once, otherwise
4.

MODIFY sets SY-SUBRC to 0 if operation was successful, otherwise 4.

MODIFY LINE sets SY-SUBRC to 0 if list row was changed, otherwise <> 0.

MODIFY sets SY-SUBRC to 0 if operation was successful, otherwise 4.

OLE2 automation, bundled commands set SY-SUBRC to 0 if all were successfully executed,
otherwise 1, 2, 3, 4 depending on cause.

OPEN DATASET sets SY-SUBRC to 0 if the file was opened, otherwise 8.

Open SQL commands set SY-SUBRC to 0 if operation was successful, otherwise <>0.

OVERLAY sets SY-SUBRC to 0 if at least one character is overlayed, otherwise 4.

READ DATASET sets SY-SUBRC to 0 if the read operation was successful, otherwise 4 or 8
depending on cause.
READ LINE sets SY-SUBRC to 0 if list row exists, otherwise <> 0.
READ TABLE sets SY-SUBRC to 0 if the table row was found, otherwise 2, 4, 8 depending on
cause.

REPLACE sets SY-SUBRC to 0 if search string could be replaced, otherwise <> 0.

ROLLBACK WORK always sets SY-SUBRC to 0.

SCROLL sets SY-SUBRC to 0 if scrolling in list successful, otherwise 4 or 8 depending on


cause.
SEARCH sets SY-SUBRC to 0 if search string was found, otherwise 4.
SELECT sets SY-SUBRC to 0 if at least one row was read, otherwise 4 or even 8 with
SELECT SINGLE FOR UPDATE.

SET COUNTRY sets SY-SUBRC to 0 if country ID was found in table T005X, otherwise 4.

SET BIT sets SY-SUBRC to 0 if bit was set, otherwise <> 0.

SET TITLEBAR sets SY-SUBRC to 0 if title exists, otherwise 4.

SHIFT UP TO sets SY-SUBRC to 0 if position was found in character string, otherwise 4.

SPLIT sets SY-SUBRC to 0 if size of target fields is sufficient, otherwise 4.

UPDATE sets SY-SUBRC to 0 if operation successful, otherwise 4.

WRITE TO sets SY-SUBRC to 0 if assignment successful, otherwise 4.

Screens
Screens
System fields are set at the PAI event for every screen. These can be also used for interactive list
processing, except for SY-DATAR, SY-LOOPC, and SY-STEPL.
SY-CUCOL
Horizontal cursor position Counting starts at column 2
SY-CUROW
Vertical cursor position Counting starts at row 1
SY-DATAR
Set to X at time of PAI if at least one screen input field was changed by the user or other data transfer,
otherwise empty.
SY-LOOPC
Number of rows currently displayed in a screen table (table control).
SY-PFKEY
GUI status of current screen. Can be set at PBO using SET PF-STATUS.
SY-SCOLS
Number of columns in current screen.

SY-SROWS
Number of rows in current screen.
SY-STEPL
Index of current row in a screen table (table control). Is set at every loop pass. Outside a loop, for
example during the POV event for a table row, SY-STEPL is not set appropriately.
SY-TITLE
Text that appears in the title bar of the screen. For selection screens and lists this is the program
name, otherwise SAP R/3. Can be set during PBO using SET TITLEBAR.
SY-UCOMM
Function code that triggered the event PAI. Every user action that triggers PAI is assigned a unique
function code, with one exception: Choosing Enter triggers PAI and different function codes can be
transferred to SY-UCOMM:

If there is an entry in the command field of the standard toolbar, this is transferred to SYUCOMM as the function code.

If there is no entry in the command field and a function code is assigned to the ENTER key,
this function code is transferred to SY-UCOMM.

If the command field does not contain an entry and no function code is assigned to
the ENTER key, it is empty and the content of SY-UCOMM is not affected.

Selection Screens
SY-SLSET
Variant used to fill the selection screen.

Creating Lists
When creating a list you can use the following system fields to navigate. They help to ensure that
output statements do not overwrite any existing output and that the system does not try to write
outside the list. The current output position is always in the system fields SY-COLNO and SY-LINNO
and is rest for every output statement. The remaining system fields contain further values for the list
creation.
SY-COLNO
Current column during list creation. Counting starts at 1. SY-COLNO is set by the following output
statements:

WRITE, ULINE, SKIP set SY-COLNO to the next output position.

BACK sets SY-COLNO to 1.

POSITION <col> sets SY-COLNO to <col>. If <col> lies outside the page, the subsequent
output statements are ignored.

NEW-LINE sets SY-COLNO to 1.

NEW-PAGE sets SY-COLNO to 1.

SY-LINCT
Page length of list. SY-LINCT is 0 for a standard list of any length and has a value unequal to 0 for
lists with fixed page length.

LINE-COUNT in the statements REPORT, PROGRAM, FUNCTION POOL sets SY-LINCT for
the current program.
LINE-COUNT in the SUBMIT statement sets SY-LINCT for the called program.

SY-LINNO
Current row during the list creation. Counting begins at 1 and includes the page header. SY-LINNO is
set by the following output statements:

WRITE, ULINE, SKIP raise SY-LINNO by 1 in the case of a line break.


BACK sets SY-LINNO to the first row after the page header. BACK in connection with
RESERVE sets SY-LINNO to the first row of a block of lines.
NEW-LINE raises SY-LINNO by 1.
SKIP TO LINE <lin> sets SY-LINNO to <lin>. If <lin> does not lie between 1 and the page
length, the system ignores the statement.

SY-LINSZ
Line width of list Without further influence this is the standard window width: If SY-SCOLS >= 84, SYLINSZ = SY-SCOLS; if SY-SCOLS < 84, SY-LINSZ = 84.
To change the width of the output list, use the LINE-SIZE option of the REPORT or NEW PAGE
statement.

LINE-SIZE in the statements REPORT, PROGRAM, FUNCTION POOL sets SY-LINSZ for the
current program.
LINE-SIZE in the SUBMIT statement sets SY-LINSZ for the called program.

SY-PAGNO
Current page during the list creation.

WRITE, ULINE, SKIP raise SY-PAGNO by 1 in the case of a line break.


NEW-PAGE raises SY-PAGNO by 1, but only if at least one output follows both on the current
page and after the NEW-PAGE statement.
NEW-SECTION of the NEW-PAGE PRINT ON statement sets SY-PAGNO to 1.

SY-TVAR0 ... SY-TVAR9


In the program, you can assign values to these system fields. During the TOP-OF-PAGE event, the
system replaces the placeholders of the programs list and column headers with the contents of the
system fields SY-TVAR0 to SYTVAR9.
SY-WTITL
Is set to N in the statements REPORT, PROGRAM, and FUNCTION-POOL if the NO STANDARD
PAGE HEADING addition is used, otherwise empty. NEW-PAGE does not set SY-WTITL.

List Processing
At each interactive list event and for READ-LINE, the system automatically fills the following system
fields:
SY-CPAGE
Page number of the first displayed page of the list from which the event was triggered. Counting starts
at 1
SY-LILLI
Line from which the event was triggered Counting begins at 1 and includes the page header.
SY-LISEL
Contents of the line from which the event was triggered
SY-LISTI
Index of the list from which the event was triggered
SY-LSIND
Index of the list that is being created (basic list: 0, detail list > 0). Each time an interactive list event
occurs, the system automatically increases SY-LSIND by 1. SY-LSIND can be changed in the ABAP
program to navigate between detail lists. Changes to SY-LSIND are not taken into account until the

end of the list event. Therefore, any manipulation of SY-LISND should be done using the last
command of the processing block.
SY-LSTAT
ID for list levels within the program. SY-LSTAT can be filled with values during list creation in the
ABAP program. The value valid when the list is completed is saved with the list. In the case of an
interactive list event, SY-LSTAT is set to the value it was assigned during the creation of the list from
which the event takes place. SY-LSTAT is no longer maintained and should therefore no longer
be used.
SY-STACO
Number of the first displayed column of the list from which the event was triggered. Counting starts at
1.
SY-STARO
Number of the upper-most displayed row of the upper-most page of the list, from which the event was
triggered. Counting begins at 1. This does not include the page header.

Printing Lists
When printing lists, the spool and runtime systems require certain internal information, which is
available in the following system fields and is set during print activation.
SY-CALLR
Contains a value that displays where printing was started, for example NEW-PAGE for programcontrolled printing or RSDBRUNT for printing from the selection screen.
SY-PRDSN
Contains the name of the spool file during printing.
SY-SPONO
Contains the name of the spool number during printing.
SY-MAROW, SY-MACOL
The SET MARGIN statement fills the system fields SY-MAROW and SY-MACOL, which determine the
number of lines on the upper margin and the number of columns on the left margin when printing.
Print Parameters
The print parameters are transferred to the spool system by the runtime system in a structure of
dictionary type PRI_PARAMS. Before this structure was used, its purpose was served by system
fields. Today a subset of the PRI_PARAMS structure is still written to system fields with the same
names when printing is activated. This information is redundant and should not be used.

Messages
If you execute the MESSAGE statement, the following system fields are set. If you execute the
MESSAGE RAISING statement in function modules and methods, these fields are also set in the
calling program, if it handles the exception.
SY-MSGID
SY-MSGID contains the message ID.
SY-MSGNO
SY-MSGNO contains the message number.
SY-MSGTY
SY-MSGTY contains the message type.

SY-MSGV1,,SY-MSGV4
SY-MSGV1 to SY-MSGV4 contain the field contents that are used for the messages placeholders.
Special Actions that Fill Message Fields

If you request database locks using the ENQUEUE function module, the field SY-MSGV1
contains the name of the user who holds the lock, in the case of the FOREIGN_LOCK
exception.

IN the case of CALL TRANSACTION or CALL DIALOG with the USING addition, a message
displayed during the called screen sequence is returned in the fields SY-MSGID, SY-MSGTY,
SY-MSGNO, SY-MSGV1, ... , SY-MSGV4.

During Remote Function Call (RFC), error messages are transferred from the remote system
to the calling system and SY-MSGID, SY-MSGTY, SY-MSGNO,SY-MSGV1, SY-MSGV2, SYMSGV3, SY-MSGV4 are set. If short dumps or type X messages occur, the system also sets
the fields.

Internal System Fields


Internal system fields are only for internal use in the ABAP runtime environment and are defined in the
kernel. Under no circumstances must they be overwritten in ABAP programs and they should also not
be read (processed).
SY-CFWAE
Undocumented
SY-CHWAE
Undocumented
SY-DEBUG
Undocumented
SY-DSNAM
Name of spool output file.
SY-ENTRY
Undocumented
SY-FFILE
Flat file (USING/GENERATING DATASET).
SY-FLENG
Length of a field.
SY-FODEC
Number of decimal places of a field.
SY-FOLEN
Output length of a field.
SY-FTYPE
Data type of a field.
SY-GROUP
Bundling

SY-INPUT
Undocumented
SY-LPASS
Undocumented
SY-NEWPA
Undocumented
SY-NRPAG
Undocumented
SY-ONCOM
On Commit flag. This system field is set to different values depending on the call status of an ABAP
program. Of these, only the value of P is guaranteed. If at all, SY-ONCOM must only be queried for
P.
The value 'P' means that the program is already executing a subroutine started using PERFORM
ON COMMIT and therefore a further subroutine call using PERFORM ... ON COMMIT would cause a
runtime error.
SY-PAUTH
Undocumented
SY-PLAYO
Undocumented
SY-PLAYP
Undocumented
SY-PNWPA
Undocumented
SY-PRI40
Undocumented
SY-PRINI
Undocumented
SY-PRLOG
Undocumented
SY-REPI2
Undocumented
SY-RSTRT
Undocumented
SY-SFOFF
Undocumented
SY-SUBCS
Call status of an executable program.

SY-SUBTY
Call type of an executable program.
SY-TABID
Undocumented
SY-TLOPC
Undocumented
SY-TSTIS
Undocumented
SY-XCODE
Extended function code Is filled, like SY-UCOMM, by user actions on lists. Before the length of SYUCOMM was increased from 4 to 70 characters, SY-XCODE was used internally to evaluate lengthy
entries in the command field of the lists standard toolbar. Use SY-UCOMM in application programs.
SY-XFORM
SYSTEM-EXIT subroutine.
SY-XPROG
SYSTEM-EXIT program.

Obsolete System Fields


In the transition from R/2 to R/3, some system fields were carried over that are no longer filled. These
system fields are obsolete and can no longer be used.
SY-APPLI
In R/2, ID for which SAP applications are installed. Not filled in R/3.
SY-BATZD
In R/2, ID for daily background scheduling. Not filled in R/3.
SY-BATZM
In R/2, ID for monthly background scheduling. Not filled in R/3.
SY-BATZO
In R/2, ID for single background scheduling. Not filled in R/3.
SY-BATZS
In R/2, ID for immediate background scheduling. Not filled in R/3.
SY-BATZW
In R/2, ID for weekly background scheduling. Not filled in R/3.
SY-BREP4
In R/2, root name of request report for background processing. Not filled in R/3.
SY-BSPLD
In R/2, ID for immediate spool output for background processing. Not filled in R/3.
SY-CCURS
In R/2, rate specification/result field from CURRENCY CONVERSION. Not filled in R/3.

SY-CCURT
In R/2, table rate from CURRENCY CONVERSION. Not filled in R/3.
SY-CDATE
In R/2, rate date from CURRENCY CONVERSION. Not filled in R/3.
SY-CTABL
In R/2, rate table from CURRENCY CONVERSION. Not filled in R/3.
SY-CTYPE
In R/2, rate type from CURRENCY CONVERSION. Not filled in R/3.
SY-DCSYS
Dialog system of R/2 System Not filled in R/3.
SY-FMKEY
Previously, current function code menu. Not filled in R/3.
SY-LOCDB
Local database, not implemented.
SY-LOCOP
Local database operation, not implemented.
SY-MACDB
Previously, name of file for matchcode access. Not filled in R/3.
SY-MARKY
Current line character for the MARK statement. However, the language element MARK will only be
supported for a short time.
SY-PAGCT
In R/2, maximum number of pages per list. Not filled in R/3.
SY-PREFX
ABAP prefix for background jobs. Not filled in R/3.
SY-SFNAM
Undocumented
SY-SPONR
In R/2, you could process spool files using the TRANSFER statement, set by SY-SPONR. Not filled in
R/3.
SY-TFDSN
Previously, name of external storage file for extracts. Not filled in R/3.
SY-TMAXL
Previously, maximum number of entries in an internal table. Not filled in R/3.
SY-TNAME
Previously, name of an internal table after an access. Not filled in R/3.
SY-TOCCU
With the statements DESCRIBE TABLE, LOOP AT, and READ TABLE, SY-TOCCU was filled with the
value of the initial main memory requirements for the addressed internal table. No longer filled.
SY-TPAGI
Previously, ID whether an internal table is stored in the paging area. Not filled in R/3.

SY-TTABC
Previously, index of last read row in an internal table. Not filled in R/3.
SY-TTABI
Previously, offset of internal tables in roll area. Not filled in R/3.
SY-WAERS
Previously, company code currency after reading booking segment. Not filled in R/3.
SY-WILLI
In R/2, number of selected list row for detail list in window. Use SY-LILLI.
SY-WINCO
In R/2, cursor position for detail list in window. Use SY-CUCOL.
SY-WINDI
In R/2, index of list for detail list in window. Use SY-LSIND.
SY-WINRO
In R/2, cursor position for detail list in window. Use SY-CUROW.
SY-WINSL
In R/2, content of selected row for detail list in window. Use SY-LISEL.
SY-WINX1
In R/2, window coordinate for detail list in window. No correspondence in R/3.
SY-WINX2
In R/2, window coordinate for detail list in window. No correspondence in R/3.
SY-WINY1
In R/2, window coordinate for detail list in window. No correspondence in R/3.
SY-WINY2
In R/2, window coordinate for detail list in window. No correspondence in R/3.

You might also like