cancel
Showing results for 
Search instead for 
Did you mean: 

Scripts - Amount Problem

Former Member
0 Kudos

Hi all,

Im facing this peculiar problem in scripts while passing amounts to external subroutines.

Firstly I need to do a simple calculation of REGUP-DMBTR - REGUP-QSSHB and display the result in the script, as this calculation is not possible in scripts I need to pass these two fields to the subroutine.

While passing thru subroutines they are passed in char formats, now as I cant assign the char format directly to curr fields please let me know how to go about this.

I have tried using numc also, but using this the decimals are getting rounded off. Kindly let me know how to do this, any piece of code or advice is highly regarded.

Secondly, a peculiar problem Im facing is about the decimals and comas placement, normally any amount field will be displayed as 1,234.45 , but in my case it is displayed as 1.234,45 sometimes and the normal way sometimes. This is behaving randomly, I have checked the user settings also and they are fine as 1,234,567.89.

Presently my code is as below:

FORM get_vat 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(25) 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, (NUMC length 13, decimals 0)

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.

vari = lv_var.

lv_var4 = vari.

ENDIF.

CLEAR: dot, len, len1.

ENDIF.

READ TABLE in_tab WITH KEY 'REGUP-QSSHB'.

IF sy-subrc EQ 0.

lv_var1 = in_tab-value.

len = STRLEN( lv_var ).

len1 = len - 3.

dot = lv_var+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.

vari2 = lv_var1.

lv_var6 = vari2.

ENDIF.

CLEAR: dot, len, len1.

ENDIF.

lv_var5 = lv_var4 - lv_var6.

lv_var2 = lv_var5.

vari3 = lv_var5.

SHIFT vari3 LEFT DELETING LEADING '0'.

lv_var2 = vari3.

READ TABLE out_tab WITH KEY 'LV_VAT'.

IF sy-subrc EQ 0.

out_tab-value = lv_var2.

MODIFY out_tab INDEX 1.

ENDIF.

ENDFORM. "get_vat

Regards,

Narendra.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Done.