Register Login

Function Module For INR USD Currency Formatting.

Updated May 18, 2018

This FM is for formatting the number in the required format, either INR or USD

 

Ex: 12345678.00

 

In INR : 123,456,78.00

In USD : 12,345,678.00

 

 

FUNCTION ZSD_INR_USD_CONVERT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(CURRENCY_DATA) TYPE  ZTEXT30
*"     REFERENCE(CURRENCY) TYPE  CHAR3
*"  EXPORTING
*"     REFERENCE(CURRENCY_INR_USD) TYPE  ZTEXT30
*"----------------------------------------------------------------------


data a type i.
data b type i.

data p_str1 type string.
data p_str2 type string.

if CURRENCY_DATA is not INITIAL.

SPLIT CURRENCY_DATA AT '.' into p_str1 p_str2.

a = strlen( p_str1 ).

if CURRENCY = 'INR'.

IF A LT 4.
CONCATENATE p_str1 '.' p_str2 into p_str1.
elseIF A EQ 4.
  CONCATENATE p_str1(1',' p_str1+1(3'.' p_str2 into p_str1.
ELSEIF A EQ 5.
  CONCATENATE p_str1(2',' p_str1+2(3'.' p_str2 into p_str1.
ELSEIF A EQ 6.
  CONCATENATE p_str1(1',' p_str1+1(2','  p_str1+3(3'.' p_str2 into p_str1.
ELSEIF A EQ 7.
   CONCATENATE p_str1(2',' p_str1+2(2',' p_str1+4(3'.' p_str2 into p_str1.
ELSEIF A EQ 8.
  CONCATENATE p_str1(1',' p_str1+1(2',' p_str1+3(2',' p_str1+5(3'.' p_str2 into p_str1.
ELSEIF A EQ 9.
  CONCATENATE p_str1(2',' p_str1+2(2',' p_str1+4(2',' p_str1+6(3'.' p_str2 into p_str1.
ELSEIF A EQ 10.
 CONCATENATE p_str1(1',' p_str1+1(2',' p_str1+3(2',' p_str1+5(2',' p_str1+7(3'.' p_str2 into p_str1.
 ELSEIF A EQ 11.
  CONCATENATE p_str1(2',' p_str1+2(2',' p_str1+4(2',' p_str1+6(2',' p_str1+8(3'.' p_str2 into p_str1.
ELSEIF A EQ 12.
 CONCATENATE p_str1(1',' p_str1+1(2',' p_str1+3(2',' p_str1+5(2',' p_str1+7(2',' p_str1+9(3)'.' p_str2 into p_str1.
 ELSEIF A EQ 13.
  CONCATENATE p_str1(2',' p_str1+2(2',' p_str1+4(2',' p_str1+6(2',' p_str1+8(2',' p_str1+10(3)'.' p_str2 into p_str1.
 ELSEIF A EQ 14.
 CONCATENATE p_str1(1',' p_str1+1(2',' p_str1+3(2',' p_str1+5(2',' p_str1+7(2',' p_str1+9(2',' p_str1+11(3'.' p_str2 into p_str1.
 ELSEIF A EQ 15.
  CONCATENATE p_str1(2',' p_str1+2(2',' p_str1+4(2',' p_str1+6(2',' p_str1+8(2',' p_str1+10(2',' p_str1+12(3)'.' p_str2 into p_str1.
endif.

else.
  IF A EQ 4.
  CONCATENATE p_str1(1',' p_str1+1(3'.' p_str2 into p_str1.
  ELSEIF A LT 4.
CONCATENATE p_str1 '.' p_str2 into p_str1.
ELSEIF A EQ 5.
  CONCATENATE p_str1(2',' p_str1+2(3'.' p_str2 into p_str1.
ELSEIF A EQ 6.
  CONCATENATE p_str1(3','  p_str1+3(3'.' p_str2 into p_str1.
ELSEIF A EQ 7.
   CONCATENATE p_str1(1',' p_str1+1(3',' p_str1+4(3'.' p_str2 into p_str1.
ELSEIF A EQ 8.
  CONCATENATE p_str1(2',' p_str1+2(3','  p_str1+5(3'.' p_str2 into p_str1.
ELSEIF A EQ 9.
  CONCATENATE p_str1(3',' p_str1+3(3',' p_str1+6(3'.' p_str2 into p_str1.
ELSEIF A EQ 10.
 CONCATENATE p_str1(1',' p_str1+1(3',' p_str1+4(3','  p_str1+7(3'.' p_str2 into p_str1.
 ELSEIF A EQ 11.
  CONCATENATE p_str1(2',' p_str1+2(3',' p_str1+5(3','  p_str1+8(3'.' p_str2 into p_str1.
ELSEIF A EQ 12.
 CONCATENATE p_str1(3',' p_str1+3(3',' p_str1+6(3',' p_str1+9(3)  '.' p_str2 into p_str1.
 ELSEIF A EQ 13.
  CONCATENATE p_str1(1',' p_str1+1(3',' p_str1+4(3',' p_str1+7(3','  p_str1+10(3)'.' p_str2 into p_str1.
 ELSEIF A EQ 14.
 CONCATENATE p_str1(2',' p_str1+2(3',' p_str1+5(3',' p_str1+8(3',' p_str1+11(3)  '.' p_str2 into p_str1.
 ELSEIF A EQ 15.
  CONCATENATE p_str1(3',' p_str1+3(3',' p_str1+6(3',' p_str1+9(3',' p_str1+12(3'.' p_str2 into p_str1.
endif.


endif.


CURRENCY_INR_USD = p_str1.
else.
  CURRENCY_INR_USD  = CURRENCY_DATA.
endif.

ENDFUNCTION.

 

 

 

Thanks & Regards,

A.Uttam


 

 


Comments

  • 03 Feb 2017 10:20 am Guest Helpful Answer

    Hi,

       PARAMETERS : p_value TYPE dbekr_cm.
    DATA : gv_dbekr TYPE char18,
           p_str2   TYPE string,
           a        TYPE i,
           b        TYPE i,
           c        TYPE i,
           d        TYPE i,
           e        TYPE i,
           p_str3   TYPE string,
           p_str1   TYPE string.
    gv_dbekr = p_value.
    SPLIT gv_dbekr AT '.' INTO p_str1 p_str2.
    SHIFT p_str1 LEFT DELETING LEADING space.
    a = strlen( p_str1 ).
    IF a LT 4.
      CONCATENATE p_str1 '.' p_str2 INTO p_str1.
    ENDIF.
    IF a GE 4.
      c = a - 3.
      b = c / 2.
      d = c MOD 2.
      CONCATENATE  p_str1+c(3) '.' p_str2 INTO p_str3.
      c = c - 1.
      DO b TIMES.
        e = c - 1.
        IF e GE 0 AND c GE 0.
          CONCATENATE p_str1+e(1) p_str1+c(1) ',' p_str3 INTO p_str3.
        ELSEIF c GE 0.
          CONCATENATE  p_str1+c(1) ',' p_str3 INTO p_str3.
        ENDIF.
        c = c - 2.
      ENDDO.
    ENDIF.

     

    Thanks,

    Chai

     


×