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

need numbers only from string

Former Member
0 Likes
856

hi abapers,

i need numbers only into my variable from a string

Like string is abd1234*67

I need 123467 only from this for my use.

8 REPLIES 8
Read only

Former Member
0 Likes
830

Hi Amit,

Check the code


PARAMETER:
  p_srstr(10) TYPE c.

DATA:
 v_dest(10) TYPE c,
 temp1      TYPE c,
 temp2      TYPE i VALUE 0,
 length     TYPE i.

length = STRLEN( p_srstr ).

DO length TIMES.
  temp1 = p_srstr+temp2(1).
  IF temp1 CA '0123456789'.
    CONCATENATE v_dest temp1 INTO v_dest.
  ENDIF.
  CLEAR temp1.
  ADD 1 TO temp2.
ENDDO.

WRITE: v_dest.

Regards,

Anirban

Read only

Former Member
0 Likes
830

Hi,

Just check this code:

DATA a TYPE string VALUE 'abd1234*67'.
DATA c TYPE i.
DATA d TYPE c.
DATA e TYPE i VALUE 0.
c = STRLEN( a ).
DO c TIMES.
  d = a+e(1).
  e = e + 1.
  IF d CA '0123456789'.
    WRITE d no-gap.
  ENDIF.
ENDDO.

Edited by: Nitesh Kumar on Jan 8, 2009 6:28 PM

Read only

Former Member
0 Likes
830

try this in ECC6.

data : v_num(10) type N.

data : v_string(10) type c value 'abd1234*67'.

v_num = v_string.

write 😕 v_num.

Read only

0 Likes
830

This is a different aproach,hope you like it.

DATA: str TYPE string VALUE 'aBd1234*67',
repl TYPE string.

INITIALIZATION.
  repl = '* a b c d e f g h i j k l m n o p q r s t u v w x y z '.

START-OF-SELECTION.

  TRANSLATE str TO LOWER CASE.
  TRANSLATE str USING repl.
  CONDENSE str NO-GAPS.
  WRITE str.

Read only

Former Member
0 Likes
830

Hi,

Declare another variable of type i and assign the string variable ot it..then it works..

Regards

Vasavi kotha

Read only

Former Member
0 Likes
830

You could use a regex

DATA:
  g_c(80)         TYPE c VALUE 'abd1234*67',
  g_n(80)         TYPE c,
  g_i             TYPE i,
  g_t_mr          TYPE match_result_tab,
  g_s_mr          TYPE match_result.


FIND ALL OCCURRENCES OF REGEX '(\d+)' IN g_c RESULTS g_t_mr.

IF sy-subrc = 0.
  LOOP AT g_t_mr INTO g_s_mr.
    CONCATENATE g_n g_c+g_s_mr-offset(g_s_mr-length) INTO g_n.
  ENDLOOP.

  g_i = g_n.

ENDIF.

WRITE g_i.

Read only

Former Member
0 Likes
830

hi,

Data l_string type char20 value '123aase123***3sda'.
Data l_num(20) type N.

l_num = l_string.

l_num will contain '1231233'.

Read only

Former Member
0 Likes
830

Hi Amit,

Please close the thread, if your problem has been resolved.

Thanks

Nitesh