‎2009 May 19 3:32 PM
Hi,
I have a requirement like this.
It is given as :
1= A.
2 = B
3 = C.
So, If I get the input as : 321.12,
I need to get out put as : CBA.AB.
Please let me know, how can I do this.
Regards
Sandeep
‎2009 May 19 3:47 PM
‎2009 May 19 3:47 PM
‎2009 May 19 3:49 PM
Try these codes:
Data: W_char(20) type c value '1A2B3C4D5E6F7G8H9I'.
Data: w_char1(10) value '321.12'.
Translate w_char1 using w_char.
write : w_char1.Regards,
Gurpreet
‎2009 May 19 5:00 PM
Hello Sandeep,
This bit of code may be of some help:
DATA:
BEGIN OF it1 OCCURS 0,
lhs TYPE char1,
rhs TYPE char1,
END OF it1.
it1-lhs = 1.
it1-rhs = 'A'.
APPEND it1.
it1-lhs = 2.
it1-rhs = 'B'.
APPEND it1.
it1-lhs = 3.
it1-rhs = 'C'.
APPEND it1.
SORT it1[] BY lhs.
DATA: v_str_ip TYPE string,
v_str_op TYPE string,
v_lhs TYPE char1,
v_rhs TYPE char1,
v_len TYPE i,
v_off TYPE i.
v_str_ip = '321.12'.
" --> Foolish solution provided earlier :-))
v_len = STRLEN( v_str_ip ).
DO v_len TIMES.
v_lhs = v_str_ip+v_off(1).
READ TABLE it1 WITH KEY lhs = v_lhs BINARY SEARCH.
IF sy-subrc = 0.
CONCATENATE v_str_op it1-rhs INTO v_str_op.
ELSE.
CONCATENATE v_str_op v_lhs INTO v_str_op.
ENDIF.
v_off = v_off + 1.
ENDDO.
WRITE:
/ 'INPUT:', v_str_ip,
/ 'OUTPUT:', v_str_op.
CLEAR: v_str_op.
" --> Proficient solution (Thanks to Rob for his enlightenment !!! )
DATA: v_trans TYPE string.
LOOP AT it1.
CONCATENATE v_trans it1-lhs it1-rhs INTO v_trans.
ENDLOOP.
v_str_op = v_str_ip.
TRANSLATE v_str_op USING v_trans.
WRITE:
/ 'INPUT:', v_str_ip,
/ 'OUTPUT:', v_str_op.
BR,
Suhas
Edited by: Suhas Saha on May 19, 2009 6:05 PM