Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Obsolete Language Elements →  Obsolete Program Attributes 

Obsolete Disabling of the Unicode Check

The program attribute Unicode checks active for activating Unicode checks is active when creating a program. A program in which in the Unicode checks are enabled is a Unicode program. This program attribute cannot be canceled.

Unicode programs work in both Unicode systems and non-Unicode systems, which makes non-Unicode programs redundant and obsolete. The option to modify this program attribute is provided only for reasons of compatibility. It is generally only needed to enable Unicode checks in programs where they are not yet enabled.

In non-Unicode programs, different rules apply to some language constructs than in Unicode programs. Activating the Unicode checks is the only way to ensure that the program can be executed in Unicode systems and in non-Unicode systems, and that the same results are returned in both cases. The following tables summarize the most important differences between non-Unicode programs and Unicode programs.

Other versions: 7.31 | 7.40 | 7.54

Syntax and Operands

Language Construct Behavior in Non-Unicode Programs
Name Characters that do not meet the naming conventions can also be used outside of classes.
Substring access A substring access [+off][(len)] can be made on any flat structures.


Language Construct Behavior in Non-Unicode Programs
CALL FUNCTION In general function module calls, an incorrect name of a formal parameter is ignored instead of raising an exception.
PERFORM It is possible to address memory areas outside of an actual parameter by specifying offsets/lengths.
STRUCTURE typing in FIELD-SYMBOL, FORM, FUNCTION The length of the typing is now checked.

Field Symbols

Language Construct Behavior in Non-Unicode Programs
ASSIGN No length checks in CASTINGsfor generic character-like types. If RANGE is not specified, thedata area of the entire program is defined as an assignable area in static cases.

Processing Internal Data

Language Construct Behavior in Non-Unicode Programs
Structure conversion Flat structures can be assigned to any incompatible flat structures or elementary data objects or can becompared with them.
Character string and byte string processing Any flat structures andbyte-like data objects can be used likecharacter-like dataobjects and are covered by the generic type clike. Byte-like data objects can be specified in positions in which string processing takes place. No addition IN BYTE MODE is required here in thestatements for string and byte processingor in DESCRIBEFIELD ... LENGTH and DESCRIBE DISTANCE. Objects other thanbyte-like data objects are possible in positions in which byte processing takes place(SET BIT, GET BIT, and the relational operators O, Z, and M).
String templates Not possible
CLEAR ... WITH Implicit casting of the operands.
UNPACK Implicit casting of the target area.
DO - VARYING, WHILE - VARY No restrictions for the data objects. The addition RANGE does not need to be specified.
ADD - THEN, UNTIL The data objects in the sequence do not need to be components of a structure and the addition RANGE does not need to be specified.

Processing External Data

Language Construct Behavior in Non-Unicode Programs
Open SQL The structure of work areas is ignored and only the length and thealignment is checked. Anystrict modes in the syntax check that are a prerequisite for using new language constructs are not possible
File interface It is not necessary to define explicitly the code page used to encode character-like data written totext files or read from them.A file does not need to be opened explicitly before each read or write using OPEN DATASET and can be opened implicitly by the first read or writeinstead. An open file can apparently be opened again. The access method and data storage type must bespecified explicitly when a file is opened. It is possible to perform writes on files open for reads.If a file is opened as a text file, the content of byte-like and numeric data objects can also be read or written. File names cannot contain blanks.

User Dialogs

Language Construct Behavior in Non-Unicode Programs
WRITE A flat structure passed to aclassic list does not need to be exclusively character-like.Any characters that cannot be represented are shown as #. The predefinedoutput length for the data type string and is determined directly for text field literals using the length.

The ABAP keyword documentation describes the behavior of each language construct in Unicode programs. A note indicates cases where a language construct behaves in a different way in an obsolete non-Unicode program.


Some of the reasons for using only Unicode programs from now on are as follows:

  • Static type checks are executed more precisely in Unicode programs.
  • Byte processing and string processing are separated in Unicode programs.
  • The strict modes in the Open SQL syntax check demand Unicode programs. The new features introduced from Release 7.40, SP05 can only be used in these modes.
  • Structures are always handled as structures in Unicode programs.
  • Uncontrolled access to segments of the working memory is not possible in Unicode programs.

This makes Unicode programs easier to understand, more robust, and easier to maintain than non-Unicode programs.

Programming Guideline

Program Attributes