FORM frm_data_process USING p_name1.
DATA: l_vislen TYPE i,
l_xislen TYPE i,
l_pos TYPE i,
l_string TYPE string,
l_last_char TYPE xstring.
SHIFT p_name1 RIGHT DELETING TRAILING space.
l_pos = STRLEN( p_name1 ) - 1.
CALL FUNCTION 'NLS_VISUAL_CHARLEN'
EXPORTING
str = p_name1+l_pos(1)
IMPORTING
len_visual = l_vislen.
MOVE p_name1+l_pos(1) TO l_string.
CALL METHOD lr_conv_ci->string_to_xstring
EXPORTING
input = l_string
IMPORTING
output = l_last_char.
l_xislen = XSTRLEN( l_last_char ).
IF l_vislen <= 1 AND l_xislen > 2.
SHIFT p_name1 RIGHT BY 1 PLACES.
ENDIF.
ENDFORM. " frm_data_process
DATA: l_vislen TYPE i,
l_xislen TYPE i,
l_pos TYPE i,
l_string TYPE string,
l_last_char TYPE xstring.
SHIFT p_name1 RIGHT DELETING TRAILING space.
l_pos = STRLEN( p_name1 ) - 1.
CALL FUNCTION 'NLS_VISUAL_CHARLEN'
EXPORTING
str = p_name1+l_pos(1)
IMPORTING
len_visual = l_vislen.
MOVE p_name1+l_pos(1) TO l_string.
CALL METHOD lr_conv_ci->string_to_xstring
EXPORTING
input = l_string
IMPORTING
output = l_last_char.
l_xislen = XSTRLEN( l_last_char ).
IF l_vislen <= 1 AND l_xislen > 2.
SHIFT p_name1 RIGHT BY 1 PLACES.
ENDIF.
ENDFORM. " frm_data_process