SAP CDS CAST EXPRESSION V1 Get Example source ABAP code based on a different SAP table
SAP Help
• PRESERVING TYPE ABAP_CDS_EXPR_V1
• AS ABAP_CDS_EXPR_V1
• CAST ABAP_CDS_EXPR_V1
ABAP_CDS_DDL - DDIC-Based View, cast_expr> ABAP_SYNTAX ... CAST( operand AS dtype $[PRESERVING TYPE$]) ...> What does it do? Casting in a SELECT> statement> of a ABAP_CDS_V1_VIEW >. The cast expression converts> the value of the operand operand> to the ABAP Dictionary type specified by dtype>. The result has the type dtype>. The following can be specified for dtype>: A DDIC data element>. In this case, the optional addition PRESERVING TYPE> can be specified. If this addition is specified, the built-in data type, the length of the operand and the number of decimal places, and the target data type must match exactly. A built-in data type> in ABAP Dictionary. The addition PRESERVING TYPE> cannot be specified in this case. The following table shows the syntax for specifying built-in data types: <(>dtype<)>>Dictionary Type> abap.char( len )>CHAR>> with length len> abap.clnt$[(3)$]>CLNT>> abap.cuky$[(5)$]>CUKY>> abap.curr(len,decimals)>CURR> > with length len> and decimals> decimal places abap.decfloat16$[(16)$]> DECFLOAT16>> abap.decfloat34$[(34)$]> DECFLOAT34>> abap.dats$[(8)$]>DATS>> abap.datn$[(8)$]>DATN>> abap.dec(len,decimals)>DEC>> with length len> and decimals> decimal places abap.fltp$[(16,16)$]>FLTP>> abap.int1$[(3)$]>INT1>> abap.int2$[(5)$]>INT2>> abap.int4$[(10)$]>INT4>> abap.int8$[(19)$]>INT8>> abap.lang$[(1)$]>LANG>> abap.numc( len )>NUMC>> with length len> abap.quan(len,decimals)>QUAN> > with length len> with decimals> decimal places abap.sstring(len)>SSTRING>> abap.tims$[(6)$]>TIMS>> abap.timn$[(6)$]>TIMN>> abap.unit$[(2$|3)$]>UNIT>> with length 2> or 3> (standard length) abap.utclong$[(27)$]>UTCLONG> > The actual length of the result is defined when the CDS view is activated and is at least as long as an explicitly defined length len>. It is possible, but not mandatory, to specify the length for types with fixed lengths and decimal places. The following can be specified for operand>: A literal> without a domain prefix A parameter> A session variable> A field> of a data source data_source>> of the current CDS view An aggregate expression> A path expression> that identifies a field of a data source data_source>> A built-in function> An arithmetic expression> A case distinction with CASE>> A nested cast expression Cast expressions can be specified in the SELECT> list> and in operand positions of expressions. The following table shows which combinations of built-in data types in ABAP Dictionary can currently be cast to each other and what the prerequisites are in each case. There is a special list of conversion rules> for every combination. from/to>INT1>>INT2>>INT4> >INT8>>DEC>>CURR>> QUAN>>DECFLOAT16>>DECFLOAT34>> FLTP>>CHAR>>SSTRING>>NUMC> >DATS>>TIMS>>DATN>> TIMN>>UTCLONG>>ACCP>>CLNT >>LANG>>UNIT>>CUKY>> RAW>> INT1>>xxxxxxxxxxyy------ -x---- INT2>>xxxxxxxxxxyy------ ------ INT4>>xxxxxxxxxxyy------ ------ INT8>>xxxxxxxxxxyy------ ------ DEC>>xxxxxxxxxxyy------ ------ CURR>>xxxxxxx--xyy------ ------ QUAN>>xxxxxxxxxxyy------ ------ DECFLOAT16>>xxxxxxxxx------- -------- DECFLOAT34>>xxxxxxxxx------- -------- FLTP>>---------x-------- ------ CHAR>>----------xxxxx--- pxxxx- SSTRING>>----------xxxxx-- -pxxxx- NUMC>>yyyyxxxxxxxxzzz--- pz---- DATS>>----------xx-z---- ------ TIMS>>----------xx--z--- ------ DATN>>---------------x-- ------ TIMN>>----------------x- ------ UTCLONG>>----------------- x------ ACCP>>----------zzz----- p----- CLNT>>----------dd------ -p---- LANG>>----------dd------ --p--- UNIT>>----------dd------ ---p-- CUKY>>----------dd------ ----p- RAW>>------------------ -----p There are no further restrictions to note in combinations with x >. The following rules apply to the other combinations: In combinations with y>, the length of the target data type must be sufficient. In combinations with z>, the lengths of the data types must match exactly. In the case of combinations with p> or d>, a data element must be specified as the target data type. It is not possible to specify a built-in data type from ABAP Dictionary. In combinations with d>, the data element can have a suitable target type in accordance with the table above and with any length. In combinations with p>, the data element must have the built-in data type and the same length as the data type of the operand. In the case of incompatible types, the content of the operand is converted> to the target type (exceptions can be raised if values are not suitable). In compatible types, a syntax check warning occurs (unless the target data type is specified as a data element using the addition PRESERVING TYPE>). Latest notes: If a data element is specified for dtype>, the result of the expression inherits the semantic properties of the data element. An exception to this is the use of the CAST> expression within a case distinction. If the addition PRESERVING TYPE> is specified, the data type of the operand stays the same and only the semantic properties are changed. The characters in the surrogate area> of the system code page> UTF-16> are handled as two characters in cast expressions for strings. Care should be taken to avoid splitting these characters in truncation operations. When performing a conversion> between currency fields> with type CURR>, it should be noted that CAST> respects the decimal places defined for the type. In ABAP applications, on the other hand, the position of the decimal point is usually ignored. A CAST> expression should be platform-independent. Conversions from the type FLTP> to other numeric types are not allowed because the result would be platform-dependent. An aggregate expression AVG> > has the type