SAP NetWeaver AS ABAP Release 740, ©Copyright 2014 SAP AG. All rights reserved.
ABAP Keyword Documentation → ABAP Programming Guidelines → Structure and Style → Complexity →Expressions
Background
An expression is part of an ABAP statement that returns a result. An expression consists of one or more operands in combination with operators or special ABAP words. Expressions can be logical expressions constructed from relational expressions and also calculation expressions. The latter type is subdivided into arithmetic expressions, bit expressions, and character string expressions. Data objects, other suitable expressions, and calls for built-in functions and functional methods can all be used as expression operands. In character string processing, regular expressions for searches and pattern comparisons are also used.
These expressions can be nested and combined in many different ways. Nested and chained calls are possible for functional methods. The maximum nesting depth of expressions is restricted to 32 by the ABAP Compiler.
Rule
Limit the complexity of expressions
Use expressions at operand positions in a way that means the program remains legible and understandable.
Details
The diverse options for expressions mean that the use of helper variables is superfluous in many places. The use of expressions and functional calls at operand positions is useful under the following prerequisites:
Programs should always be kept clear and legible.. Do not be too ambitious and combine everything into one single expression. If an expression becomes too complex, it should be split at suitable points, and the intermediate results should be saved in helper variables. This particularly applies to character string processing with character string templates and to regular expressions. These are very powerful but they can also make programs difficult to read very quickly. Comments can also help to describe the way a complex expression works.
Bad example
The following source code shows an arithmetic expression in a relational expression in a loop. The same total must be recalculated for each loop pass.
Good example
The following source code has the same function as the example above. However, the total is only calculated once before the loop.