on 02-27-2008 3:46 AM
Hi,
While passing a currency field for calculation to a subroutine through perform statement iam getting runtime error saying "unable ti interpret 5000.00 as a number. 5000.00 is nothing but the first currency value which iam sending for calculation.in the code the error is raised on the bold line .
rf140-wrshb has value 5000.00 .the code which i have written in subroutine is as follows.
READ TABLE I_IN WITH KEY NAME = 'RF140-WRSHB'.
MOVE I_IN-VALUE TO LV_SUM1.
CLEAR I_IN.
DATA: SUM_C TYPE N.
SUM1 = SUM1 + LV_SUM1.
READ TABLE I_OUT WITH KEY NAME = 'LV_BALANCE'.
MOVE SUM1 TO I_OUT-VALUE.
MODIFY I_OUT TRANSPORTING VALUE WHERE NAME = 'LV_BALANCE'.
CLEAR I_OUT.
lv_balance is the one which receives the output value.
can anyone tell me what is the mistake i have done nd how to rectify it.
Thanks,
Rose.
Hi Rose,
First move the value of "I_IN-VALUE " in a variable of 'char' type say SUM_TMP(char type) . Then pass the value of SUM_TMP to LV_SUM1 ( LV_SUM1 = SUM_TMP).
Hope it works.
Reward points if helpful.
Thanks.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Actually while passing data from scripts to subroutines it is passed in CHAR format. So while assigning to CURR or NUMC fields there will be these kinda problems.
What you need to do is correct the format prior to assigning these to fields of other data type and then pass them on.
Also you need to use FM CHAR_NUMC_CONVERSION during the process, as you need to work with numeric/currency fields.
Hope this gives a start for you, if you need anything else or sample code reply back.
Regards,
Narendra.
Reward points if useful!!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I have done something similar so below is the code while passing currency fields to subroutines:
Actually I was retrieving 2 fields from scripts and then substract them and then send back the result to the script. Hope it works out for you, try it out and REWARD POINTS IF HELPFUL!! (also for your prev post!!)
FORM get_pay TABLES in_tab STRUCTURE itcsy out_tab STRUCTURE itcsy.
DATA: lv_var(255) TYPE c, "dmbtr,
lv_var1(255) TYPE c, "qsshb,
lv_var2(255) TYPE c, "dmbtr.
var(20) TYPE c,
var1(25) TYPE c,
var2(25) TYPE c,
var3(25) TYPE c,
var4(25) TYPE c,
var5(25) TYPE c,
var6(25) TYPE c,
vari TYPE ztemp,
vari2 TYPE ztemp,
vari3 TYPE ztemp.
DATA: lv_var4 TYPE dmbtr,
lv_var5 TYPE qsshb,
lv_var6 TYPE dmbtr,
len TYPE i,
len1 TYPE i,
dot TYPE c.
READ TABLE in_tab WITH KEY 'REGUP-DMBTR'.
IF sy-subrc EQ 0.
lv_var = in_tab-value.
len = STRLEN( lv_var ).
len1 = len - 3.
dot = lv_var+len1(1).
IF dot = ','.
SPLIT lv_var AT ',' INTO var1 var2.
REPLACE '.' IN var1 WITH ','.
CONCATENATE '.' var2 INTO var2.
CONCATENATE var1 var2 INTO var.
CONDENSE var.
vari = var1.
SHIFT vari LEFT DELETING LEADING '0'.
CONCATENATE vari var2 INTO vari.
lv_var4 = vari.
ELSE.
SPLIT lv_var AT '.' INTO var1 var2.
REPLACE '.' IN var1 WITH ','.
CONCATENATE '.' var2 INTO var2.
CONCATENATE var1 var2 INTO var.
CONDENSE var.
vari = var1.
SHIFT vari LEFT DELETING LEADING '0'.
CONCATENATE vari var2 INTO vari.
lv_var4 = vari.
ENDIF.
CLEAR: dot, len, len1.
ENDIF.
lv_var = vari.
CALL FUNCTION 'CHAR_NUMC_CONVERSION'
EXPORTING
input = lv_var
IMPORTING
numcstr = lv_var4.
READ TABLE in_tab WITH KEY 'REGUP-QBSHB'.
IF sy-subrc EQ 0.
lv_var1 = in_tab-value.
len = STRLEN( lv_var1 ).
len1 = len - 3.
dot = lv_var1+len1(1).
IF dot = ','.
SPLIT lv_var1 AT ',' INTO var3 var4.
REPLACE '.' IN var3 WITH ','.
CONCATENATE '.' var4 INTO var4.
CONDENSE var.
vari2 = var3.
SHIFT vari2 LEFT DELETING LEADING '0'.
CONCATENATE vari2 var4 INTO vari2.
lv_var6 = vari2.
ELSE.
SPLIT lv_var1 AT '.' INTO var3 var4.
REPLACE '.' IN var3 WITH ','.
CONCATENATE '.' var4 INTO var4.
CONDENSE var.
vari2 = var3.
SHIFT vari2 LEFT DELETING LEADING '0'.
CONCATENATE vari2 var4 INTO vari2.
lv_var6 = vari2.
ENDIF.
CLEAR: dot, len, len1.
ENDIF.
lv_var1 = vari2.
CALL FUNCTION 'CHAR_NUMC_CONVERSION'
EXPORTING
input = lv_var1
IMPORTING
numcstr = lv_var6.
lv_var5 = lv_var4 - lv_var6.
lv_var2 = lv_var5.
var = lv_var5.
WRITE lv_var5 TO var CURRENCY 'SG'.
READ TABLE out_tab WITH KEY 'LV_PAY'.
IF sy-subrc EQ 0.
out_tab-value = var.
MODIFY out_tab INDEX 1.
ENDIF.
ENDFORM. "get_PAY
Regards,
Narendra.
User | Count |
---|---|
95 | |
11 | |
11 | |
10 | |
9 | |
8 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.