Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Converting xstring to string and back?

VitorSeifert
Advisor
Advisor
0 Kudos

Hello, everybody

I have a problem where I have an ID for an element that is made of 32 hexadecimal elements (hence a size 32 xstring). I need to use it in another system which requires a shorter parameter, but of type string. Therefore, I came to the conclusion that converting my xstring to a string I could turn it into a smaller element than making a simple "one-to-one" conversion (for example, converting 'AF543' where each element is a Hexadecimal to 'AF543' where each element is a character).

I looked into the forum and I found the following Function Modules: NLS_STRING_CONVERT_TO_SYS and NLS_STRING_CONVERT_FROM_SYS.

However, when I convert the xstring '00300571B3851DDD9DFFF7A753C08326' to a string, I get '#0#q³##Ý#ÿ÷§SÀ#&' as a result. I realized that the character # repeats itself several times, although there is no repetition of elements in the xstring. Obviously, when I converted this string back to xstring, I got a different result, because the # character was always interpreted as the same number.

Isn't this conversion supposed to be unique? How could I convert my xstring to a unique string and be able to make the conversion the other way around, getting my original xstring back?

Any support will be very appreciated. Thank you in advance.

1 ACCEPTED SOLUTION

former_member705122
Active Contributor
0 Kudos

try this FM's

HR_KR_STRING_TO_XSTRING

Convert unicode string into xstring

HR_KR_XSTRING_TO_STRING

Convert encoded string to unicode string

11 REPLIES 11

Former Member
0 Kudos

Victor,

Try these FM,

CRM_IC_XML_STRING2XSTRING : Converts string to xstring

CRM_IC_XML_XSTRING2STRING : Converts xstring to string

Regards

Indu.

VitorSeifert
Advisor
Advisor
0 Kudos

@ Indu: Thank you for the tip, but I couldn't find these Function Modules on my system.

@ Syed: The solution presented in this link has the same problem I had before: it repeats the # characters on the conversion, therefore the resulting string is not unique.

former_member705122
Active Contributor
0 Kudos

Hi,

If possible show code.

Adil

VitorSeifert
Advisor
Advisor
0 Kudos

This is the code which is not working:

data: lv_uuid1 type xstring,

test type xstring,

l_out type string,

l_out2 type xstring.

lv_uuid1 = '00300571B3851DDD9DFFF7A753C08326'.

CALL FUNCTION 'NLS_STRING_CONVERT_TO_SYS'

EXPORTING

LANG_USED = 'D'

SOURCE = lv_uuid1

IMPORTING

RESULT = l_out.

write: lv_uuid1, ' ', l_out.

CALL FUNCTION 'NLS_STRING_CONVERT_FROM_SYS'

EXPORTING

LANG_USED = 'D'

SOURCE = l_out

IMPORTING

RESULT = l_out2.

write: / lv_uuid1, ' ', l_out2.

Notice that the l_out2 result is not the same as lv_uuid1, what proves that the conversion is not unique.

Edited by: Vitor Eduardo Seifert Bazzo on Sep 4, 2008 2:42 PM

Edited by: Vitor Eduardo Seifert Bazzo on Sep 4, 2008 2:42 PM

0 Kudos

Victor,

Try this code...

REPORT yh_sample.
DATA: w_s TYPE string.
DATA: w_s1 TYPE xstring.
DATA: lr_conv_ci TYPE REF TO cl_rpe_convert .

CREATE OBJECT lr_conv_ci.

w_s1 = '42'.
CALL METHOD lr_conv_ci->xstring_to_string
  EXPORTING
    input  = w_s1
  IMPORTING
    output = w_s.
WRITE:/ w_s.

CALL METHOD lr_conv_ci->string_to_xstring
  EXPORTING
    input  = w_s
  IMPORTING
    output = w_s1.

WRITE w_s1.

Regards

Indu

former_member705122
Active Contributor
0 Kudos

try this FM's

HR_KR_STRING_TO_XSTRING

Convert unicode string into xstring

HR_KR_XSTRING_TO_STRING

Convert encoded string to unicode string

VitorSeifert
Advisor
Advisor
0 Kudos

@ Indu: Thank you for the code, but I am still not able to recover my original xstring. This time the resulting xstring is even larger than the one I had before.

@ Adil: Thank you for the tip, but I can't find these function modules in the system.

former_member705122
Active Contributor
0 Kudos

Which system your using.

0 Kudos

Thank you for all the support. I will stop looking into this issue for now.

Edited by: Vitor Eduardo Seifert Bazzo on Sep 4, 2008 4:09 PM

robinthakral
Advisor
Advisor
0 Kudos

You can refer to below class-method set to convert instead of using unreleased FMs.

*&---------------------------------------------------------------------*
*&    " Convert XString to String
*&---------------------------------------------------------------------*
DATA: lv_string TYPE string,
      lv_xstring TYPE xstring.

DATA: lo_conv_in TYPE REF TO CL_ABAP_CONV_IN_CE.

lo_conv_in = CL_ABAP_CONV_IN_CE=>CREATE( input = lv_xstring ).
lo_conv_in->READ( IMPORTING data = lv_string ).
*&---------------------------------------------------------------------*
*&    " Convert String to XString
*&---------------------------------------------------------------------*
DATA: lo_conv TYPE REF TO cl_abap_conv_out_ce.

lo_conv = cl_abap_conv_out_ce=>create( encoding = '4110' ).
lo_conv->convert( EXPORTING data   = lv_string
                  IMPORTING buffer = lv_xstring ).
*&---------------------------------------------------------------------*
*&    " Convert XString to Binary
*&---------------------------------------------------------------------*
 data: lt_binary_tab     TYPE solix_tab. " table of solix

      CLEAR: lt_binary_tab.
      lt_binary_tab = cl_document_bcs=>xstring_to_solix(
                      ip_xstring = lv_xstring ).
Follow at:
https://www.linkedin.com/in/robinthakral/