ABAP clásico ofrece literales sin tipo, que se interpretan como literales de caracteres o como literales numéricos. Los nuevos niños en el bloque son literales escritos. Están disponibles en casi todos los tipos de datos, pero solo se admiten como operandos en ABAP SQL y ABAP CDS. Esta publicación de blog proporciona una descripción general de los literales en ABAP de un vistazo. Los literales son parte del ABC básico de ABAP y los desarrolladores de ABAP deben estar familiarizados con ellos.
Definición
A literal es anuncioEspecificación directa, similar a un carácter, de un valor en el código fuente ABAP de un programa ABAP o en un objeto CDS. Hay dos tipos de literales: literales con tipo y sin tipo. mecanografiado literales especificar su tipo de datos explícitamente, mientras que sin tipo los literales solo especifican un valor y el tipo de datos se deriva implícitamente.
El clásico lenguaje de programación ABAP ofrece solo literales sin tipo.
Tipo de literal | Detalles |
Literal numérico |
|
Caracter literal |
|
Para todos los demás tipos de datos, ABAP Reglas de asignación y conversión se aplican, lo que puede conducir a resultados inesperados.
El operador literal & se puede utilizar para concatenar literales. Está disponible en ABAP y ABAP SQL, pero no en ABAP CDS.
Los literales sin tipo en ABAP SQL son los mismos que los literales ABAP y se aplican las mismas reglas.
A partir de la versión ABAP 7.80 (versión trimestral), 7.55 (local), ABAP SQL también admite literales escritos:
Tipo de literal | Sintaxis |
literal entero |
|
Literal de número empaquetado | |
Literal de coma flotante decimal |
|
Literal de punto flotante binario | |
Literal de campo de texto | |
Literal de cadena de texto | |
Literal de campo de bytes | |
Literal de cadena de bytes | |
Literal de texto numérico | |
Literal del cliente | |
Literal de clave de idioma | |
Literal de fecha | |
Tiempo literal | |
Literal de marca de tiempo | |
Literal de campo de moneda | |
Literal de clave de moneda | |
Literal de campo de cantidad | |
Literal de clave de unidad |
Ejemplo:
El siguiente ejemplo usa literales escritos de tipos MUY LARGO, DATNy INT8 en diferentes posiciones de operandos.
SELECT SINGLE
FROM demo_expressions
FIELDS
utcl_add_seconds( utclong`2020-04-01T12:01:01,2`,50 ) AS utcl,
datn_add_months( datn`17890101`,15 ) AS add_months,
int8`9999999999999999` AS int8
INTO @DATA(result).
Sin literales escritos, habría los siguientes problemas:
El valor de los literales escritos se comprueba en tiempo de compilación. Un valor que no está dentro del rango de valores del tipo de datos especificado da como resultado un error de verificación de sintaxis.
Ejemplo:
El siguiente literal escrito especifica un valor que no es válido para el tipo de datos UTCLONG. Se produce un error de comprobación de sintaxis en tiempo de compilación.
...
utcl_add_seconds( utclong`2020-13-01T12:01:01,2`,50 ) AS utcl
...
Aparece el siguiente mensaje de error:
Por el contrario, los literales sin tipo en ABAP clásico se comprueban en tiempo de ejecución y los valores incorrectos provocan errores de tiempo de ejecución. Por lo tanto, los literales escritos son más convenientes para los desarrolladores.
Al igual que ABAP clásico, las vistas clásicas basadas en DDIC de CDS ofrecen literales de caracteres numéricos y sin tipo sin tipo:
Tipo de literal | Detalles |
Caracter literal |
|
Literal numérico |
|
A partir de la versión ABAP 7.83 (versión trimestral), 7.56 (local), los literales escritos también están disponibles en ABAP CDS. son compatibles en Entidades de vista de CDS y en Jerarquías de CDS.
Tipo de literal | Sintaxis |
literal entero |
|
Literal de número empaquetado | |
Literal de coma flotante decimal |
|
Literal de punto flotante binario | |
Literal de campo de texto | |
Literal de cadena de texto |
|
Literal de campo de bytes | |
Literal de cadena de bytes |
|
Literal de texto numérico |
|
Literal del cliente | |
Literal de clave de idioma | |
Literal de fecha |
|
Tiempo literal |
|
Literal de marca de tiempo |
|
Literal de campo de moneda | |
Literal de clave de moneda | |
Literal de campo de cantidad | |
Literal de clave de unidad |
Ejemplo
El siguiente ejemplo usa literales escritos de tipos INT1, DIC, DECFLOAT34, y D16N en diferentes posiciones de operandos.
@EndUserText.label: 'CDS view entity, numeric typed literals'
define view entity DEMO_CDS_NUMERIC_TYPED_LIT
as select from demo_ddic_types
{
key id,
abap.int1'1' as int1,
abap.dec'.15' as dec_literal,
abap.decfloat34'123.456E789' * 100 as ArithmField
}
where
d16n = abap.d16n'123.45'
Los literales escritos facilitan la vida de los desarrolladores y reducen la posibilidad de errores. Desafortunadamente, no están disponibles en el lenguaje de programación ABAP clásico, sino solo en ABAP SQL y ABAP CDS.
Toda esta información también se puede encontrar en la Documentación de palabras clave ABAP. Esta publicación de blog solo destaca el tema para aquellos que estén interesados.
Documento:
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073