‎2007 Apr 10 7:10 PM
Hi,
I HAVE A CHARACTER FIELD OF LENGTH 10.
THE VALUES OF THIS FIELD ARE LIKE THIS
ATOR2
ATQWWW2
ASDERRE98
HDERF98
WEEEEEEEE9
QWERRRRR77
ATOR
I WANT TO PULL OUT THE VALUES LIKE 2,2,98,98,9,77 AND IN THE LAST CASE I WANT 0.
tHE VALUES ARE ALWAYS AT THE END .
i JUST WANT TO READ THE VALUES.
cAN ANYONE SUGGEST ME TO ACHIEVE THIS
Thanks
‎2007 Apr 10 7:22 PM
Hi,
Please try this.
DATA: WA_FIELD(10) VALUE 'ATQWWW2',
WA_VALUE(10).
IF WA_FIELD CA ' 0123456789'.
SHIFT WA_FIELD BY SY-FDPOS PLACES.
MOVE WA_FIELD TO WA_VALUE.
WRITE: / WA_VALUE.
ENDIF.
Regards,
Ferry Lianto
‎2007 Apr 10 7:19 PM
Hi,
Check this example..
DATA: v_input(50) VALUE 'ATQWWW21212'.
DATA: v_strlen TYPE i.
DATA: v_output TYPE char50.
DATA: v_index TYPE syindex.
DATA: v_schar.
v_strlen = strlen( v_input ).
DO v_strlen TIMES.
v_index = sy-index - 1.
v_schar = v_input+v_index(1).
IF v_schar CO '0123456789'.
CONCATENATE v_output v_schar INTO v_output.
ENDIF.
ENDDO.
CONDENSE v_output.
WRITE: / v_output.
Thanks,
Naren
‎2007 Apr 10 7:22 PM
Hi,
Please try this.
DATA: WA_FIELD(10) VALUE 'ATQWWW2',
WA_VALUE(10).
IF WA_FIELD CA ' 0123456789'.
SHIFT WA_FIELD BY SY-FDPOS PLACES.
MOVE WA_FIELD TO WA_VALUE.
WRITE: / WA_VALUE.
ENDIF.
Regards,
Ferry Lianto
‎2007 Apr 10 7:26 PM
How about something like this.
data: istr(100) type c occurs 0 with header line.
data: num(10) type n.
data: chr(10) type c.
data: len type i.
data: string_len type i.
data: offset type i.
istr = 'ATOR2'. append istr.
istr = 'ATQWWW2'. append istr.
istr = 'ASDERRE98'.. append istr.
istr = 'HDERF98'. append istr.
istr = 'WEEEEEEEE9'. append istr.
istr = 'QWERRRRR77'. append istr.
istr = 'ATOR'. append istr.
loop at istr.
num = istr.
chr = num.
shift chr left deleting leading '0'.
len = strlen( chr ).
string_len = strlen( istr ).
offset = string_len - len.
if len > 0.
clear istr+offset(len).
endif.
write:/ istr, at 30 chr.
endloop.
Regards,
RIch Heilman
‎2007 Apr 10 7:44 PM
Hi all,
i didn't even realised there would be so many ways to do it
thanks all
‎2007 Apr 10 7:39 PM
Just another way.
PARAMETERS: p_string(20).
DATA: v_string(20),
v_index LIKE sy-index,
v_number TYPE i.
CALL FUNCTION 'STRING_REVERSE'
EXPORTING
string = p_string
lang = sy-langu
IMPORTING
rstring = v_string
EXCEPTIONS
too_small = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
DO.
v_index = sy-index - 1.
IF v_string+v_index(1) CA sy-abcde.
EXIT.
ENDIF.
ENDDO.
IF v_index > 0.
v_number = v_string(v_index).
ENDIF.
WRITE:/ v_string, v_number.