‎2009 Apr 10 7:36 AM
Hi,
i want to read the characters before decimal point i.e if i have number as 11111111.011
i want to read the all 1's before decimal point and write an condition as
if the number of characters before point exceeds 11 char than display some mesage.
please help.
Gayatri
‎2009 Apr 10 7:43 AM
hi,
DATA : wa_dec TYPE p DECIMALS 3 VALUE '11111111.011',
wa_p1 TYPE string,
wa_p2 TYPE string,
wa_dec1(20),
len TYPE i.
wa_dec1 = wa_dec.
SPLIT wa_dec1 AT '.' INTO wa_p1
wa_p2.
CONDENSE wa_p1.
len = STRLEN( wa_p1 ).
" len = number of characters before decimal
if len > 11.
" do ur work here
endif.
BREAK-POINT.
Thanks & Regards
‎2009 Apr 10 7:43 AM
hi,
DATA : wa_dec TYPE p DECIMALS 3 VALUE '11111111.011',
wa_p1 TYPE string,
wa_p2 TYPE string,
wa_dec1(20),
len TYPE i.
wa_dec1 = wa_dec.
SPLIT wa_dec1 AT '.' INTO wa_p1
wa_p2.
CONDENSE wa_p1.
len = STRLEN( wa_p1 ).
" len = number of characters before decimal
if len > 11.
" do ur work here
endif.
BREAK-POINT.
Thanks & Regards
‎2009 Apr 10 8:26 AM
hi,
how can i find out that the user entered value has point in it.
‎2009 Apr 10 8:32 AM
‎2009 Apr 10 8:33 AM
data: lv_dec type p decimals 2.
first split the number into two
split <number> at '.' into lv_char1 lv_char2.
‎2009 Apr 10 8:33 AM
Simple
data: v_str type string value '111.11'.
if v_str CA '.'.
write:/ 'Dot at', sy-fdpos.
endif.
‎2009 Apr 10 8:34 AM
hi,
i meant if user can enter any value for example 1111111111 or 1
‎2009 Apr 10 8:40 AM
in that case also the above code samples will work.
but in that case u will not get anything in var3 ( i.e the part after decimal).
‎2009 Apr 10 7:47 AM
Hi gayatri ,
u can draft ur logic as below..
var1 = 1111111.101
Split var1 at '.' into var2 var3.
var4 = strlen ( var2).
if var4 > 11.
do something..
else.
do something.
endif.
Hope this solves ur problem
Regards,
Anuj
‎2009 Apr 10 9:03 AM
Hi,
If the input is a packed decimal number, then you can move the contents into a numeric field variable. then you can use a if statement saying ' > 99999999999'.
‎2009 Apr 10 9:04 AM
Hi Gayatri,
you can use as below;
l_integer = TRUNC( l_decimal ).
l_integer gets the value before decimal point.
regards,
Murat Kaya
‎2009 Apr 10 9:25 AM
Hi Gayatri,
Try below code for your requirement.
Data: v_data type c.
If value entered by user = p_value.
V_data = p_value.
Data: v_data1 type c,
V_data2 typec,
Len type i.
If v_data CA u2018.u2019.
Split v_data at u2018.u2019 Into v_data1
V_data2.
Else.
V_data1 = v_data.
Endif.
Condense v_data1.
Len = strlen (v_data1).
If len> 11.
Message.
Endif.
Hope this will help you.
Regards,
Deepa Kulkarni
‎2009 Apr 10 9:39 AM
Hi Gayatri,
Use the following code:
DATA: v_num TYPE p DECIMALS 3 VALUE '11111111.011',
v_len TYPE i,
v_var(15) TYPE c,
v_var1(15) TYPE c,
v_var2(15) TYPE c.
v_var = v_num.
IF v_var CA '.'.
SPLIT v_var AT '.' INTO v_var1 v_var2.
SHIFT v_var1 LEFT DELETING LEADING ' '.
v_len = STRLEN( v_var1 ).
IF v_len > 11.
MESSAGE 'error message' TYPE 'E'.
ENDIF.
ELSE.
SHIFT v_var LEFT DELETING LEADING ' '.
v_len = STRLEN( v_var ).
IF v_len > 11.
MESSAGE 'error message' TYPE 'E'.
ENDIF.
ENDIF.
Revert back in case of any doubt.
Regards,
Nitin.