‎2011 Mar 28 7:03 AM
Hi Experts
I have a string example displayed below:
14JUL-DO-HOU/CF-TEST/ST-1435/W-PROD 0601 VNDR 11195 HOLIDAY AUTOS S/DT-2035/RT-ZAR5000/TJ-54IMP
I need to find the value prefixed by "/RT-" and then retrieve the text up until the next "/".
EG. The result needs to be "ZAR5000" from the example string above.
Could someone please show me how to do that?
Thanks in Advance
Anton Kruse
‎2011 Mar 28 7:29 AM
Hi,
Below sample program . and apply same logic in your program.
parameter: p_str type char250.
data: lv_off type i,
lv_i type i,
lv_j type i,
lv_str TYPE string.
FIND FIRST OCCURRENCE OF '/RT-'
IN p_str
IGNORING CASE
MATCH OFFSET lv_off.
IF moff NE 0.
lv_i = lv_off + 4.
while p_str+lv_i(1) NE '/'.
CONCATENATE lv_str p_str+lv_i(1) INTO lv_str.
lv_i = lv_i + 1.
ENDWHILE.
ENDIF.
write: lv_str.Regards,
Shankar.
‎2011 Mar 28 7:29 AM
Hi,
Below sample program . and apply same logic in your program.
parameter: p_str type char250.
data: lv_off type i,
lv_i type i,
lv_j type i,
lv_str TYPE string.
FIND FIRST OCCURRENCE OF '/RT-'
IN p_str
IGNORING CASE
MATCH OFFSET lv_off.
IF moff NE 0.
lv_i = lv_off + 4.
while p_str+lv_i(1) NE '/'.
CONCATENATE lv_str p_str+lv_i(1) INTO lv_str.
lv_i = lv_i + 1.
ENDWHILE.
ENDIF.
write: lv_str.Regards,
Shankar.
‎2011 Mar 28 7:33 AM
Hi Anton,
For the below example you can do this way.
Write Code as below.
search string for '/RT-'.
clear lv_position.
( sy-fdpos will give u the position of /RT )
lv_position = sy-fdpos + 7. ( get the position of the text ZAR5000 into a variable called lv_position).
final_name = w_t513s-stltx+lv_position. ( get the name into your desired variable like this )
Let me know if you still have any issues.
Thanks,
Guru.
‎2011 Mar 28 7:45 AM
Hi Anton,
Try beow code:
DATA: str TYPE string,
str1 TYPE string.
DATA: result_tab TYPE match_result_tab,
wa TYPE match_result.
DATA: len TYPE i,
len1 TYPE i,
cnt TYPE i VALUE 0,
moff TYPE i.
DATA: final TYPE TABLE OF string,
wa1 LIKE LINE OF final.
str = '14JUL-DO-HOU/CF-TEST/ST-1435/W-PROD 0601 VNDR 11195 HOLIDAY AUTOS S/DT-2035/RT-ZAR5000/TJ-54IMP'.
len = STRLEN( str ).
FIND ALL OCCURRENCES OF '/RT-' IN str RESPECTING CASE
RESULTS result_tab.
LOOP AT result_tab INTO wa.
moff = wa-offset + 4.
len1 = len - moff.
wa1 = str+moff(len1).
APPEND wa1 TO final.
ENDLOOP.
LOOP AT final INTO wa1.
len = STRLEN( wa1 ).
DO len TIMES.
IF wa1+cnt(1) = '/'.
wa1 = wa1+0(cnt).
MODIFY final FROM wa1. " Final internal table containing all the texts
EXIT.
ENDIF.
cnt = cnt + 1.
ENDDO.
ENDLOOP.
‎2011 Mar 28 8:00 AM
Hi
I managed to come right on my own using the following:
WORD = '14JUL-DO-HOU/CF-TEST/ST-1435/W-PROD 0601 VNDR 11195 HOLIDAY AUTOS S/NM-REDELINGHUIS ALETHAMRS/DT-2035/RT-ZAR5000/W-PROD 0601 '.
SPLIT WORD AT '/RT-' INTO FIRST_HALF SECOND_HALF.
SPLIT SECOND_HALF AT '/' INTO FIRST_HALF SECOND_HALF.FIRST_HALF now contains the value "ZAR5000"
Thanks
‎2011 Mar 28 8:00 AM
HI check the code
data: v_st TYPE string VALUE '14JUL-DO-HOU/CF-TEST/ST-1435/W-PROD 0601 VNDR 11195 HOLIDAY AUTOS S/DT-2035/RT-ZAR5000/TJ-54IMP',
str1 type string,
str2 TYPE string,
str3 TYPE string.
START-OF-SELECTION.
SPLIT v_st at '/RT-' INTO str1 str2.
WRITE:/ str1,
/ str2.
SPLIT str2 at '/' INTO str3 str1.
WRITE:/ str3.