cancel
Showing results for 
Search instead for 
Did you mean: 

error while sending data to a subroutine in script

Former Member
0 Kudos

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.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

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.

Former Member
0 Kudos

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!!

Former Member
0 Kudos

Hi narendra,

Could you please write a sample code for my above problem. How to do that. Thanks...

Regards,

Rose.

Former Member
0 Kudos

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.

Former Member
0 Kudos

Hi,

By the way ZTEMP is of NUMC type lenght 13 and decimals 0.

Regards,

Narendra.