Application Development and Automation 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: 
Read only

Split URL

Former Member
0 Likes
1,525

Hi,

I have a requirement where in i have to split a URL

for ex: i have to split the below url into different variables

/thread/523646 [original link is broken]

but i have to split based on conditions:

1. split the url from the first '//' to '/'

2. split from '/irj/' to '?'

3. split at 'threadID=' till the end

Result should be like

//www.sdn.sap.com/

sdn/thread

523646&tstart=0

Regards,

Anil

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,207

Hi Anil,

Which release of SAP are you using, can you use the FIND statement?

You can specify first occurence and matching offsets with this.

Regards,

Chester

7 REPLIES 7
Read only

Former Member
0 Likes
1,208

Hi Anil,

Which release of SAP are you using, can you use the FIND statement?

You can specify first occurence and matching offsets with this.

Regards,

Chester

Read only

0 Likes
1,207

Hi Steve,

I am implementing it in BI7.

Regards,

Anil

Read only

0 Likes
1,207

Hi Anil,

Then you do have the FIND command, so you could try something like this:

data: lv_url type string value '/thread/523646 [original link is broken]'.

data: lv_url2 type string.

data: len type i.

data: pos1 type i.

data: pos2 type i.

data: pos3 type i.

find first occurrence of '//' in lv_url match offset pos1.

find first occurrence of '/irj/' in lv_url match offset pos2.

len = pos2 - pos1 + 1.

lv_url2 = lv_url+pos1(len).

write:/ lv_url2.

find first occurrence of '?' in lv_url match offset pos3.

len = pos3 - pos2.

add 5 to pos2.subtract 5 from len.

lv_url2 = lv_url+pos2(len).

write: / lv_url2.

Regards,

Chester

N.B. If you cannot guarantee "first occurrence" specify offset using pos fields.

Read only

former_member189059
Active Contributor
0 Likes
1,207

try this.. i have done it upto the first 2 strings reqd... use the same logic for the last one

data: lv_url type string value '/thread/523646 <b>[original link is broken]</b>'.
data: lv_url2 type string.
data: lv_slash2(2).
data: lv_slashirj(5).
data: lv_quest.
data: len type i.
data: count type i value 0.
data: pos1 type i.
data: pos2 type i.
data: pos3 type i.
data: lv_times type i.
data: to1 type i.
data: to2 type i.

len = strlen( lv_url ).

do len times.
  lv_slash2 = lv_url+count.
  "write:/ lv_slash2.
  if lv_slash2 = '//'.
    pos1 = count.
  endif.
  count = count + 1.
enddo.

count = pos1 + 2. " start from that position
lv_times = len - count.
do lv_times times.
  lv_slashirj = lv_url+count.
  if lv_slashirj = '/irj/'.
    pos2 = count.
    exit.
  endif.
  count = count + 1.
enddo.

count = pos2 + 5.
lv_times = len - count.
do lv_times times.
  lv_quest = lv_url+count.
  if lv_quest = '?'.
    pos3 = count.
    exit.
  endif.

*  write:/ lv_quest.

  count = count + 1.
enddo.


to1 = pos2 - pos1 + 1.
write:/ lv_url+pos1(to1).

to2 = pos3 - pos2 - 5.
pos2 = pos2 + 5.
write:/ lv_url+pos2(to2).

Read only

Former Member
0 Likes
1,207

**Check the Example below, it serves your purpose

REPORT ZTRIP_TEST.

data:

url(255),

s1(255),

s2(255),

s3(255),

s4(255),

s5(255).

url = '/thread/523646 [original link is broken]'.

split url at '?threadID=' into S1 S2.

split s1 at 'irj/' into s3 s4.

split s3 at ':' into s1 s5.

write:/ s5,/ s4,/ s2.

**Reward points if useful, get back in case of query

Read only

0 Likes
1,207

Respect is due to Tripat Pal Singh.

Read only

0 Likes
1,207

Hi,

Thanks Kris...Chester and Tripat Praaji....ill try implementing using these examples....and will get back to this thread....

Regards,

Anil