¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Errores en tiempo de ejecución en ECC 6: Solución para el error DATA_OFFSET_TOO_LARGE

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

Hola a todos,

Tengo la siguiente lógica en ECC 6

FORM ysd_sd09_124_clean_up_zzcmw.

DATA: lv_a0 TYPE i VALUE 160.

DATA: lv_trans(2).

FIELD-SYMBOLS: <lf> TYPE c.

ASIGNAR lv_a0 A <lf> CASTING TYPE c.

lv_trans(1) = <lf>+3(1).

TRADUCIR vbkd-zzcmw USANDO lv_trans.

ZZCMW es un campo personalizado (campo de garantía del maestro de clientes).

Cuando intento crear una orden de venta, esta salida de usuario se activará y dará un volcado para el código TRADUCIR vbkd-zzcmw USANDO lv_trans.

Categoría Error de Programación ABAP

Errores en tiempo de ejecución DATA_OFFSET_TOO_LARGE

Except. CX_SY_RANGE_OUT_OF_BOUNDS

Programa ABAP SAPMV45A

Componente de Aplicación SD-SLS

Fecha y Hora 21.09.2011 10:09:33

Texto corto

Acceso a un subcampo no válido: Offset demasiado grande

¿Qué sucedió?

Error en el Programa de Aplicación ABAP

El programa ABAP actual "SAPMV45A" tuvo que ser terminado porque se encontró

con una declaración que desafortunadamente no se puede ejecutar.

Dado que el llamante del procedimiento no pudo haber anticipado que

ocurriría la excepción, el programa actual se termina.

La razón de la excepción es:

En el programa en ejecución "SAPMV45A", el campo "<LF>" del tipo

"C" y longitud 2 iba a ser accedido con el desplazamiento 3.

Sin embargo, no se permiten accesos a subcampos con una especificación de desplazamiento

que no sea menor que la longitud del campo.

Pero lo mismo funciona en la versión 4.7. Intenté cambiar las declaraciones pero no funcionó. ¿Puedes decirme cuál sería la diferencia en ambas versiones?

Saludos,

Jyothi CH.

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

4 Respuestas

0
Cargando...

Hola Jyothi,

En Unicode, la longitud de un carácter es de 2 bytes. Por lo tanto, el fieldsymbol que declaraste <lf> tiene una longitud de 2.

y has especificado

<lf>+3(1) lo cual es más de 2. Por lo tanto, esto es un error.

Así que por favor cambia tu código en consecuencia.

<lf>+1(1).

Además, estás haciendo una conversión de tipo con c, es decir, un carácter, está tomando su valor como #.

Si quitas la conversión de tipo, tendrá el valor 160 en la variable fieldsymbol, pero dará error al usar el desplazamiento debido a la asignación de campo entero.

Saludos

Deepak.

Editado por: Deepak Dhamat el 21 de septiembre de 2011 a las 10:58 AM

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

Reemplaza tu código (subcadena de puntero no es una buena idea en un sistema Unicode) con a

lv_trans = cl_abap_conv_in_ce=>uccp( '00A0' ).
REEMPLAZAR TODAS LAS OCURRENCIAS DE lv_trans EN vbkd-zzcmw POR espacio.

Saludos,

Raymond

NB: Para información, '00A0' es el valor Unicode de "espacio no rompible" (NBSP) y el programa intenta traducirlos a caracteres de espacio simple. (ref [Espacio no rompible|http://en.wikipedia.org/wiki/Non-breaking_space])

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

Hola Raymond,

Intenté depurar y cambiar algunas longitudes de las variables. El valor de FS es #. ¿Significa eso que el Unicode en nuestra versión actual tampoco estaba activado?

¡Gracias!

Saludos cordiales,

Benedict

Editado por: benedict choa el 21 de septiembre de 2011 a las 3:54 PM

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

¿Activaste Unicode durante la actualización? Verifica [Asignaciones a Símbolos de Campo|http://help.sap.com/saphelp_nw04/helpdata/en/79/c55491b3dc11d5993800508b6b8b11/frameset.htm]

Asignaciones a Símbolos de CampoHasta ahora, la instrucción ASSIGN permitía definir direcciones más allá de los límites de campo especificando el desplazamiento o la longitud. Solo se producía un error en tiempo de ejecución al acceder más allá de los límites del segmento de datos. Los accesos entre campos al desplazamiento/longitud en un ASSIGN, por ejemplo, se podían utilizar para editar grupos repetitivos. Sin embargo, con Unicode, surgen problemas ya que no es posible asegurar que las definiciones de desplazamiento o longitud entre campos se puedan interpretar de manera idéntica y significativa en bytes o caracteres tanto en un entorno US como en un NUS. Por esta razón, la instrucción ASSIGN se mejoró con las adiciones de RANGO e INCREMENTO, mientras que la adición de CASTING ahora admite todas las variantes de esta instrucción. La adición de RANGO se ofrece para todas las variantes válidas de ASSIGN y se puede combinar con la adición de CASTING.

Intenta lo siguiente

lv_trans = cl_abap_conv_in_ce=>uccp( '00A0' ).

(¿De UTF-16 a UTF-8?)

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?