SAP UPDATE SET EXPRESSION ABAP Statements



Get Example source ABAP code based on a different SAP table
  


• = UPDATE dbtab
• + UPDATE dbtab
• - UPDATE dbtab

UPDATE dbtab, set_expression
Short Reference

ABAP_SYNTAX
... ${col = f$}
$| ${col = col + f$}
$| ${col = col - f$}
$| (expr_syntax) ...

ABAP_VARIANTS:
1 ... col = f
2 ... col = col + f
3 ... col = col - f
4 ... (expr_syntax)

What does it do?
Change expressions for the addition SET of the statement UPDATE. These change expressions in the comma-separated list can be combined in any way required after SET .



Latest notes:

A column col can occur in a single change expression only.
NON_V5_HINTS
ABAP_HINT_END

ABAP_VARIANT_1 ... col = f

What does it do?
Assignment of a value. Columns of the DDIC database table
BEGIN_SECTION VERSION 5 OUT or DDIC view
END_SECTION VERSION 5 OUT dbtab specified in target can be specified for col. For f, a literal, a host variable, a host expression, a built-in SQL function, a cast expression, or a column name dbtab~comp of a different column in the DDIC database table can be used. A column can only occur in a single change expression after SET.
The statement UPDATE assigns the content of f to the columns col in all the rows defined by the WHERE condition. If the column has one of the data types DECFLOAT34 or DECFLOAT16, the data object has a numeric data type. If the column has the data type UTCLONG, the data object must have the data type utclong. If the data types are not compatible, they are converted as follows:
When assigning a data object that is not a reference variable for a LOB handle, the content is converted, if required, to the ABAP data type that corresponds to the data type of the column in accordance with the conversion rules. Any errors in the conversion raise the corresponding uncatchable exception. The content of f must match the data type of the column in accordance with the rules for lossless assignments. This
BEGIN_SECTION VERSION 5 OUT is checked by the strict modes of the syntax check from ABAP_RELEASE ABAP_740_SP08 and
END_SECTION VERSION 5 OUT can raise an exception.
When assigning a data object that is a reference variable for a LOB handle, the column col must be a LOB with a suitable type. If the reference has a writer stream type, a writer stream is created. If it is a type for a locator, this locator must exist and is used as a source. For details, see LOB handles.
When assigning a different column, the content is converted in the database system, if necessary. The option of a conversion and the conversion rules are specific to the database system. Any errors in the conversion raise the catchable exception CX_SY_OPEN_SQL_DB .
In the assignment, the assigned value must fit in the value range of the column. Otherwise, the catchable exception CX_SY_OPEN_SQL_DB is raised. This applies in particular for:
Assignments to numeric columns.
Assignments to columns of the type SSTRING, STRING, or RAWSTRING. The assigned content must not be longer than the maximum length of the columns in the database structure. This length can be determined using the built-in function dbmaxlen.
If a column is specified for f, changes to this column that are made in the same UPDATE statement are ignored during the assignment.



Latest notes:

No enumerated objects can be specified for f.
Currently, only built-in SQL functions and cast expressions can be specified for f. No other SQL expressions are possible. In particular, arithmetic expressions are not supported. Variant 2 and variant 3 below are not arithmetic expressions, but special syntax.
When specifying an SQL function for f, there currently is a limitation concerning the data type: the result of the SQL function can have any data type, except STRING and RAWSTRING. The syntax check verifies this.
As explained above, f cannot be an arithmetic expression. However, it is possible to use arithmetic expressions as argument of a cast expression.
NON_V5_HINTS
When a host expression is specified on the right side, the syntax check is performed in a ABAP_STRICT_760 strict mode / , which handles the statement more strictly than the regular syntax check.
Host variables without the escape character @ are obsolete. The escape character @ must be specified in the strict modes of the syntax check from ABAP_RELEASE ABAP_740_SP05 .
ABAP_HINT_END

ABAP_EXAMPLE_VX5
The following UPDATE statement sets the specified columns to the specified values in every row of the DDIC database table.
ABEXA 00754
ABAP_EXAMPLE_END

ABAP_VARIANT_2 ... col = col + f

What does it do?
Addition of a value. The same applies to col and f as to the assignment of a value, where col must have a numeric data type. col must be specified either with or without the prefix dbtab~ on both sides. The data types DF16_RAW and DF34_RAW and the obsolete types DF16_SCL and DF34_SCL are not allowed.
The statement UPDATE adds the value of f to the content of the column col in all the rows defined by the WHERE condition. Otherwise, the same rules apply as to the assignment of a value.

ABAP_EXAMPLE_VX5
The following UPDATE statement adds the specified values to the values in the specified columns in every row of the DDIC database table.
ABEXA 00755
ABAP_EXAMPLE_END

ABAP_VARIANT_3 ... col = col - f

What does it do?
Subtraction of a value. The same applies to col and f as to the assignment of a value. Here, col must have a numeric data type. col must be specified either with or without the prefix dbtab~ on both sides. The data types DF16_RAW and DF34_RAW and the obsolete types DF16_SCL and DF34_SCL are not allowed.
The statement UPDATE subtracts the value of f from the content of the column col, in all rows defined by the WHERE condition. Otherwise, the same rules apply as to the assignment of a value.

ABAP_EXAMPLE_VX5
The following UPDATE statement subtracts the specified values from the values in the specified columns in every row of the database table.
ABEXA 00756
ABAP_EXAMPLE_END

ABAP_VARIANT_4 ... (expr_syntax)
BEGIN_SECTION ID SELECT-FROM-DYN

What does it do?
Dynamic specification of change expressions. A change expression can be specified as a parenthesized data object expr_syntax that, when the statement is executed, either contains the syntax of one or more static change expressions (with the exception of host expressions) or is initial. The data object expr_syntax can be a character-like data object or a standard table without secondary table keys and with a character-like data object. The syntax in expr_syntax is not case-sensitive. When an internal table is specified, the syntax can be distributed across multiple rows.
If expr_syntax is initial when the statement is executed, the change expression is ignored. Invalid syntax raises a catchable exception from the class CX_SY_DYNAMIC_OSQL_ERROR.