¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo manejar valores nulos en una cadena y su código hexadecimal en ABAP

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

Hola chicos,

Estoy teniendo problemas con los valores nulos en una cadena y su código hexadecimal xstring. Tengo algunos datos en un campo con tipo de dato LCHR. Este campo contiene datos como:

"SAPMSDYP MBatch-Input ####%PC 60317081539#?"

Tengo un programa abap. Simplemente estoy añadiendo estos datos a una variable de cadena y luego convirtiendo esta cadena a datos xstring. La longitud de la cadena es 53 y después de la conversión a xstring la longitud de los datos xstring es mayor que los datos de la cadena. En los datos de la cadena, dondequiera que esté el "#" aparece como "0000" en los datos en bruto (xstring). Después de esta conversión, solo envío estos datos a mi programa java usando http_client. En el lado de Java, si los datos entrantes tienen un valor nulo entre los datos, entonces este programa java rechazará estos datos. El problema principal es que tengo que manejar estos valores nulos en mi programa abap solamente.

En el tiempo de depuración, en la ventana de detalles de la variable, su valor hexadecimal también aparece como 0000, que es la conversión predeterminada de cadena a hexadecimal de SAP. Y si muevo el cursor del ratón sobre esta variable, en la ventana de información, este único '#' aparece como 5 caracteres como CString.

Para la conversión de cadena a xstring estoy usando el siguiente código: CL_ABAP_CONV_OUT_CE =>create(

codificación = 'UTF-8'

endian = 'L' ).

conv->convert( EXPORTING data = texto

IMPORTING buffer = buffer1 ).

Aquí tengo que manejar este valor nulo("#") ya sea en los datos de cadena o en los datos xstring en el programa ABAP solamente. No sé cómo hacer esto.

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

4 Respuestas

0
Cargando...

Hola Florian,

También intenté en el lado de ABAP pero ninguna de las funciones de cadena puede modificar/reemplazar o cambiar este carácter. Necesito la forma en la que pueda obtener su valor hexadecimal correcto.

~Shekhawat

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

¿Por qué no manejas el signo # con ABAP antes de enviarlo a tu aplicación Java? Puedes construir un constructo con funciones de cadena.

Así no tendrás que lidiar en el lado de Java :-)

Aquí tienes algunas palabras clave para señalarte la documentación correcta.

Funciones de cadena, contar, encontrar y coincidir

~Florian

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

Hola Ebrahim Hatem,

Gracias por la respuesta, he probado todas las soluciones anteriores pero nada está funcionando. En la ventana de depuración de SAP GUI, el valor hexadecimal de # se muestra como 0000 y en CString se muestra como . He probado todas las soluciones anteriores. En lugar de este umlaut # si tenemos # normal entonces puedo hacer cualquier modificación y para este # normal el SAP GUI mostrará el hexadecimal como 0023 que es correcto. Pero este carácter en particular no es un # normal, solo se ve como #. ¿Puedes sugerirme si es nulo o cualquier otro carácter? Y este carácter está disponible en la tabla D345T y el campo es BLOCK (tipo LCHR).

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

Hola Ompal shekhawat ,

Creo que debes verificar tu XSTRING y si encuentras esto 0x00 , entonces puedes eliminarlo. Por cierto, puedes obtener ### si hay un salto de línea 0x0a o un salto de línea 0x0D y puedes eliminarlos de tu XSTRING.

Por lo tanto, solo esto podría ayudarte

Verifica si la cadena tiene 0x00 o 0x0a o 0x0D, entonces elimínalo.

Así que me gustaría que leas sobre esta tabla ASCII:

códigos ASCII comunes para conocer

Char  Dec  Oct  Hex   ¿Qué son
---------------------------------------
(nul)   0 0000 0x00   Nulo 
(ht)    9 0011 0x09   Tabulación Horizontal
(nl)   10 0012 0x0a   Nueva Línea
(vt)   11 0013 0x0b   Tabulación Vertical
(cr)   13 0015 0x0d   Retorno de Carro
(sp)   32 0040 0x20   Espacio

Ref: http://www.bluesock.org/~willg/dev/ascii.html

Para la cadena, puedes verificar esta clase

CL_ABAP_CHAR_UTILITIES=>NEWLINE


Saludos cordiales

Ebrahim Hatem

abap1.jpg
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?