¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Confusión sobre la longitud de los datos en SAP: ¿Cómo definir correctamente variables en ABAP?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 70 Vistas
0
Cargando...

Hola,

Ejecuté esta declaración: DATA x(2) TYPE i value 234.

Pensé que el valor de x debería ser 23, porque lo definí con una longitud de 2 bytes.

En la ayuda de sap encontré que la longitud de un entero es 4. Pero puedo definir DATA x(5).

Estoy un poco confundido.

Gracias,

Efren

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

No te confundas entre el tipo "I" entero, almacenado en modo binario, y el tipo "N" almacenado en modo de caracteres.

23231234 está almacenado

- "01627B02" en binario/entero - TIPO I

- "23231234" en numc/caracter no unicode - TIPO N en un sistema no Unicode

- "0031003200330034" en numc/caracter unicode - TIPO N en un sistema Unicode

Observaciones:

- El TIPO N permite una declaración de longitud.

- El TIPO I permite un rango de -2147483648 a +2147483647 (4294967296 valores diferentes 2^32, sin contar el signo negativo).

Saludos,

Raymond

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Correcto.

Pero cuando defino DATA x TYPE con el valor 23231234, ¿el valor de x no debería ser 2323? Porque la longitud es de 4, ¿no?

Gracias.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Simplemente realiza una verificación de sintaxis (no una activación) y obtendrás la respuesta "Especificación de longitud no permitida con el tipo "I".", Aquí el editor te permite una entrada inválida, solo emitiendo una advertencia. Como la longitud del entero siempre es de 4 bytes, tus (2) o (5) son ignorados por el compilador. (si deseas dar una longitud, usa un TIPO "N" donde obtienes un byte por dígito, lo cual estabas esperando erróneamente para enteros que se almacenan en binario)

Saludos,

Raymond

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Simplemente realiza una comprobación de sintaxis (no una activación) y obtendrás la respuesta "Especificación de longitud no permitida con el tipo "I"". Aquí el editor te permite una entrada inválida, solo emitiendo una advertencia. Como la longitud del entero siempre es de 4 bytes, tus (2) o (5) son ignorados por el compilador. (si deseas dar una longitud, usa un TIPO "N" donde obtienes un byte por dígito, lo que estabas esperando erróneamente para enteros que se almacenan en binario)

Saludos,

Raymond

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?