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>.