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

Numeric values Display

Former Member
0 Likes
787

Hi,

I have few values in SGTXT field in BSIS.

Ex :

1) 123456 Some Description.

2) Some Text 678343.

In this I need to store only numeric values into a variable.

Like in 1st case it is started with numeric and some text

and second it is started with some text and then numeric.

I need the variable should have only the first six numberic characters only. Ex. First case.

I need to check whether the first six are numeric or not, if it is numeric store it in variable otherwise leave blank.

Can u please let me know any methos or function module or anyother code to do it?

Thanks,

Pavan.

Message was edited by: Pavan Panduru

1 ACCEPTED SOLUTION
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
752

Will it always be 6 numerics? Will there always be a space in between? Assuming these assumptions are true, you can do something like this.

report zrich_0001.


data: begin of itab occurs 0,
      sgtxt type bsis-sgtxt,
      end of itab.

data: begin of itab2 occurs 0,
      value(10) type c,
      end of itab2.

data: isplit type table of string with header line.


itab-sgtxt = '123456 Some Description'. append itab.
itab-sgtxt = 'Some Text 678343'. append itab.



loop at itab.

  split itab at ' ' into table isplit.
  loop at isplit.
    if isplit co '1234567890'.
      exit.
    endif.
  endloop.
  itab2-value = isplit.
  append itab2.

endloop.


loop at itab2.
  write:/ itab2-value.
endloop.

Regards,

Rich Heilman

5 REPLIES 5
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
753

Will it always be 6 numerics? Will there always be a space in between? Assuming these assumptions are true, you can do something like this.

report zrich_0001.


data: begin of itab occurs 0,
      sgtxt type bsis-sgtxt,
      end of itab.

data: begin of itab2 occurs 0,
      value(10) type c,
      end of itab2.

data: isplit type table of string with header line.


itab-sgtxt = '123456 Some Description'. append itab.
itab-sgtxt = 'Some Text 678343'. append itab.



loop at itab.

  split itab at ' ' into table isplit.
  loop at isplit.
    if isplit co '1234567890'.
      exit.
    endif.
  endloop.
  itab2-value = isplit.
  append itab2.

endloop.


loop at itab2.
  write:/ itab2-value.
endloop.

Regards,

Rich Heilman

Read only

Former Member
0 Likes
752

translate v_sgtxt using 'A B C D E F G H I ..Z a b c d e f g.. z '.

condense v_sgtxt.

now sgtxt will only have the numeric part of the text.

Regards,

ravi

Read only

Laxmana_Appana_
Active Contributor
0 Likes
752

Hi,

Check this :

data x_text(100) type c,

x_text_1(100) type c,

x_pattern(10) type c,

x_val(6) type n.

x_text_1 = x_text+0(5).

x_pattern = '0123456789'.

if x_text_1 CA x_pattern

move x_text_1 to x_val.

else.

clear : x_val.

endif.

Regards

Appana

Read only

Former Member
0 Likes
752

hi

if txt = 123456 Some Description

req = txt + 0(6).

if req co '0123456789'.

---

endif.

Read only

Former Member
0 Likes
752

test = '12345abcde'.

TRANSLATE test TO UPPER CASE.

MOVE test TO test2.

strl1 = STRLEN( test ).

SHIFT test LEFT DELETING LEADING '0123456789'.

strl2 = STRLEN( test ).

res = strl1 - strl2.

IF strl1 = strl2.

SHIFT test LEFT DELETING LEADING sy-abcde.

ELSE.

MOVE test2(res) TO test.

ENDIF.

WRITE test.

Regards, Felipe Cunha.