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
Avalados por :
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.
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
¿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
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).
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:
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.jpgcontacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute