Currency in Thousands, Lakhs & Crores

Hello Friends,
I have a requirement to print the currency in INR format.
i.e., i am getting currency 123,456,789.00, but i want it as 12,34,56,789.00
Please suggest me is there any funcition moudle to convert like this or otherwise give some
suggestion to solve the issue.
Thanks & Regards,
Asif Ahamed

hi,
if u want  program for this :
see this link:
http://www.erpgenie.com/sap-technical/abap/customized-spell-amount-function
regards,
V.Chandu

Similar Messages

  • Lakhs Currency in Thousands format in Oracle Report

    Hi Gurus,
    I have an requirement to change the currency amount display format should be in thousands for the lakhs currency since our client into UAE region and they wont use the lakhs currency format.
    Regards
    Ram

    I don't know what you mean. Instead of 1.000.000 you want to display 1.000?
    Just divide the amount by 1000 and make the prompt something like "* 1.000 Lakhs"

  • Use of "default" in function

    Hi,
    I have a function as given below:
    CREATE OR REPLACE FUNCTION SPELL_INDIAN_MONEY (
                                  p_currency   IN   VARCHAR2 DEFAULT 'Rs. ',
                                  p_number     IN   NUMBER DEFAULT 0
    RETURN VARCHAR2
    AS
       TYPE myarray IS TABLE OF VARCHAR2 (255);
       l_str      myarray
          := myarray (' Thousand ',
                      ' Lakh '       ,
                      ' Crore '   ,
                      ' Hundred ' , --' Arab ',
                      ' Thousand ', --' Kharab ',
                      ' Shankh '
       l_num      VARCHAR2 (50)   DEFAULT TRUNC (p_number);
       l_return   VARCHAR2 (4000);
    BEGIN
       IF (SUBSTR (l_num, LENGTH (l_num) - 2, 3) <> 0) THEN
          l_return := TO_CHAR (TO_DATE (SUBSTR (l_num, LENGTH (l_num) - 2, 3), 'J'), 'Jsp');
       END IF;
       l_num := SUBSTR (l_num, 1, LENGTH (l_num) - 3);
       FOR i IN 1 .. l_str.COUNT LOOP
          EXIT WHEN l_num IS NULL;
          IF (SUBSTR (l_num, LENGTH (l_num) - 1, 2) <> 0) THEN
             l_return := TO_CHAR (TO_DATE (SUBSTR (l_num, LENGTH (l_num) - 1, 2), 'J'), 'Jsp')
                               || l_str (i)
                               || l_return;
          END IF;
          l_num := SUBSTR (l_num, 1, LENGTH (l_num) - 2);
       END LOOP;
       IF     p_number BETWEEN 999999999 AND 9999999999999
              AND UPPER (l_return) NOT LIKE '%CRORE%' THEN
          l_return := l_return || 'Crore';
       END IF;
       IF TO_CHAR (p_number) LIKE '%.%' THEN
          l_num := SUBSTR (ROUND (p_number, 2), INSTR (p_number, '.') + 1);
          IF l_num > 0 THEN
             l_return := l_return
                          || ' And '
                          || TO_CHAR (TO_DATE (l_num, 'J'), 'Jsp')
                          || ' Paise';
          END IF;
       END IF;
       RETURN p_currency || ' ' || l_return;
    END spell_indian_money;When I select the function in an SQL as
    SELECT SPELL_INDIAN_MONEY(NULL,123) FROM DUALI expect result as
    Rs.  One Hundred Twenty-Threehowever the actual result is
    One Hundred Twenty-Three I understand that the result I got is because of the Default used in the function, can you suggest how shall I write the function to get the desired output.
    Thanks for reading the post
    *009*

    SELECT SPELL_INDIAN_MONEY(NULL,123) FROM DUALProblem lies here.
    You are passing two parameters. One is NULL and another is 123.
    So, you are not getting the value Rs.
    satyaki>
    satyaki>select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
    PL/SQL Release 11.1.0.6.0 - Production
    CORE    11.1.0.6.0      Production
    TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
    NLSRTL Version 11.1.0.6.0 - Production
    Elapsed: 00:00:00.04
    satyaki>
    satyaki>
    satyaki>CREATE OR REPLACE FUNCTION SPELL_INDIAN_MONEY (
      2                                p_currency   IN   VARCHAR2 DEFAULT 'Rs. ',
      3                                p_number     IN   NUMBER DEFAULT 0
      4                               )
      5  RETURN VARCHAR2
      6  AS
      7     TYPE myarray IS TABLE OF VARCHAR2(255);
      8
      9     l_str      myarray
    10        := myarray (' Thousand ',
    11                    ' Lakh '   ,
    12                    ' Crore '   ,
    13                    ' Hundred ' ,
    14                    ' Thousand ',
    15                    ' Shankh '
    16                   );
    17     l_num      VARCHAR2 (50)   DEFAULT TRUNC (p_number);
    18     l_return   VARCHAR2 (4000);
    19  BEGIN
    20
    21     IF (SUBSTR(l_num, LENGTH (l_num) - 2, 3) <> 0) THEN
    22        l_return := TO_CHAR (TO_DATE (SUBSTR (l_num, LENGTH (l_num) - 2, 3),
    'J'), 'Jsp');
    23     END IF;
    24
    25     l_num := SUBSTR (l_num, 1, LENGTH (l_num) - 3);
    26
    27     FOR i IN 1 .. l_str.COUNT LOOP
    28        EXIT WHEN l_num IS NULL;
    29        IF (SUBSTR(l_num, LENGTH (l_num) - 1, 2) <> 0) THEN
    30           l_return := TO_CHAR (TO_DATE (SUBSTR (l_num, LENGTH (l_num) - 1, 2
    ), 'J'), 'Jsp')
    31                                 || l_str (i)
    32                                 || l_return;
    33        END IF;
    34        l_num := SUBSTR(l_num, 1, LENGTH(l_num) - 2);
    35     END LOOP;
    36
    37     IF     p_number BETWEEN 999999999 AND 9999999999999
    38            AND UPPER (l_return) NOT LIKE '%CRORE%' THEN
    39        l_return := l_return || 'Crore';
    40     END IF;
    41
    42     IF TO_CHAR (p_number) LIKE '%.%' THEN
    43        l_num := SUBSTR (ROUND(p_number, 2), INSTR (p_number, '.') + 1);
    44        IF l_num > 0 THEN
    45           l_return := l_return
    46                         || ' And '
    47                         || TO_CHAR (TO_DATE (l_num, 'J'), 'Jsp')
    48                         || ' Paise';
    49        END IF;
    50     END IF;
    51
    52     RETURN p_currency || ' ' || l_return;
    53  END spell_indian_money;
    54  /
    Function created.
    Elapsed: 00:00:00.48
    satyaki>
    satyaki>
    satyaki>SELECT SPELL_INDIAN_MONEY(p_number => 123) FROM DUAL;
    SPELL_INDIAN_MONEY(P_NUMBER=>123)
    Rs.  One Hundred Twenty-Three
    Elapsed: 00:00:00.01
    satyaki>
    satyaki>I guess - you are looking for this.
    Regards.
    Satyaki De.

  • Convert to amount in words

    hi,
    i want a procedure that convert a amount (number) to amount in words

    From that link ->
    create or replace function spell_indian_money
        ( p_number in number )
        return varchar2
    as
        type myArray is table of varchar2(255);
        l_str    myArray := myArray( ' Thousand ',
                                     ' Lakh ',
                                     ' Crore ',
                                     ' Arab ',
                                     ' Kharab ',
                                     ' Shankh ' );
        l_num varchar2(50) default trunc( p_number );
        l_return varchar2(4000);
    begin
        if ( substr(l_num, length(l_num)-2, 3) <> 0 )
        then
            l_return := to_char(
                            to_date(
                             substr(l_num, length(l_num)-2, 3),
                               'J' ),
                        'Jsp' );
        end if;
        l_num := substr( l_num, 1, length(l_num)-3 );
        for i in 1 .. l_str.count
        loop
            exit when l_num is null;
            if ( substr(l_num, length(l_num)-1, 2) <> 0 )
            then
                l_return := to_char(
                                to_date(
                                 substr(l_num, length(l_num)-1, 2),
                                   'J' ),
                            'Jsp' ) || l_str(i) || l_return;
            end if;
            l_num := substr( l_num, 1, length(l_num)-2 );
        end loop;
        if to_char( p_number ) like '%.%'
        then
            l_num := substr( round( p_number, 2), instr( p_number, '.' )+1 );
            if l_num > 0
            then
                l_return := l_return || ' And '
                || to_char(
                       to_date(
                        l_num,
                         'J' ),
                   'Jsp' )
                || ' Paise';
            end if;
        end if;
        return l_return;
    end spell_indian_money;
    create or replace
    function spell_number_french( p_number in number )
    return varchar2
    as
    begin
        return replace( replace( replace( replace( replace(
               replace( replace( replace( replace( replace(
               replace( replace( replace( replace( replace(
               replace( replace( replace( replace( replace(
               replace( replace( replace( replace( replace(
               replace( replace( replace( replace( replace(
               replace( replace( replace( replace( replace(
               replace( replace( replace( replace( replace(
               replace(
               lower( spell_number( p_number ))
               , 'duodecillion', 'bidecillion'     )
               , 'quintillion' , 'cintillion'      )
               , 'billion'     , 'milliard'        )
               , 'thousand'    , 'mille'           )
               , 'hundred'     , 'cent'            )
               , 'ninety'      , 'quatre-vingt-dix')
               , 'eighty'      , 'quatre-vingt'    )
               , 'seventy'     , 'soixante-dix'    )
               , 'sixty'       , 'soixante'        )
               , 'fifty'       , 'cinquante'       )
               , 'forty'       , 'quarante'        )
               , 'thirty'      , 'trente'          )
               , 'twenty'      , 'vingt'           )
               , 'nineteen'    , 'dix-neuf'        )
               , 'eighteen'    , 'dix-huit'        )
               , 'seventeen'   , 'dix-sept'        )
               , 'sixteen'     , 'seize'           )
               , 'fifteen'     , 'quinze'          )
               , 'fourteen'    , 'quatorze'        )
               , 'thirteen'    , 'treize'          )
               , 'twelve'      , 'douze'           )
               , 'eleven'      , 'onze'            )
               , 'ten'         , 'dix'             )
               , 'nine'        , 'neuf'            )
               , 'eight'       , 'huit'            )
               , 'seven'       , 'sept'            )
               , 'five'        , 'cinq'            )
               , 'four'        , 'quatre'          )
               , 'three'       , 'trois'           )
               , 'two'         , 'deux'            )
               , 'one'         , 'un'              )
               , 'dix-six'     , 'seize'           )
               , 'dix-cinq'    , 'quinze'          )
               , 'dix-quatre'  , 'quatorze'        )
               , 'dix-trois'   , 'treize'          )
               , 'dix-deux'    , 'douze'           )
               , 'dix-un'      , 'onze'            )
               , '-un '        , '-une '           )
               , 'un cent'     , 'cent'            )
               , 'un mille'    , 'mille'           )
               , 'une'         , 'un' );
    end spell_number_french;
    please help me, it's urgentBad words..... :(
    Hope you didn't go with this word next time here.
    Regards.
    Satyaki De.

  • Query to convert number to char

    Hai All
    I have a salary column in my table as declare as number now i need to spell this in words
    For example
    500 as five hundred how to use Jsp
    Regards
    Srikkanth.M

    create or replace
    FUNCTION SPELL_INDIAN_MONEY (
                                                                   p_currency   IN   VARCHAR2 DEFAULT 'Rs.',
                                                                   p_number     IN   NUMBER DEFAULT 0
    RETURN VARCHAR2
    AS
       TYPE myarray IS TABLE OF VARCHAR2 (255);
       l_str      myarray
          := myarray (' Thousand ',
                      ' Lakh '       ,
                      ' Crore '   ,
                      ' Hundred ' , --' Arab ',
                      ' Thousand ', --' Kharab ',
                      ' Shankh '
       l_num      VARCHAR2 (50)   DEFAULT TRUNC (p_number);
       l_return   VARCHAR2 (4000);
    BEGIN
       IF (SUBSTR (l_num, LENGTH (l_num) - 2, 3) <> 0) THEN
          l_return := TO_CHAR (TO_DATE (SUBSTR (l_num, LENGTH (l_num) - 2, 3), 'J'), 'Jsp');
       END IF;
       l_num := SUBSTR (l_num, 1, LENGTH (l_num) - 3);
       FOR i IN 1 .. l_str.COUNT LOOP
          EXIT WHEN l_num IS NULL;
          IF (SUBSTR (l_num, LENGTH (l_num) - 1, 2) <> 0) THEN
             l_return := TO_CHAR (TO_DATE (SUBSTR (l_num, LENGTH (l_num) - 1, 2), 'J'), 'Jsp')
                               || l_str (i)
                               || l_return;
          END IF;
          l_num := SUBSTR (l_num, 1, LENGTH (l_num) - 2);
       END LOOP;
       IF     p_number BETWEEN 999999999 AND 9999999999999 AND UPPER (l_return) NOT LIKE '%CRORE%' THEN
          l_return := l_return || 'Crore';
       END IF;
       IF TO_CHAR (p_number) LIKE '%.%' THEN
          l_num := SUBSTR (to_char(ROUND (p_number, 2),'D00'), INSTR (p_number, '.') + 1);
           SELECT REPLACE(TO_CHAR(SUBSTR (ROUND (p_number, 2),INSTR (p_number, '.')),'D90'),'.','')l_num
           INTO       l_num
           FROM       DUAL;
    --       l_num := REPLACE(TO_CHAR(SUBSTR (ROUND (p_number, 2),INSTR (p_number, '.')),'D90'),'.','');
    --       l_num := SUBSTR (ROUND (p_number, 2), INSTR (p_number, '.') + 1);
          IF l_num > 0 THEN
             l_return := l_return
                          || ' And '
                          || TO_CHAR (TO_DATE (l_num, 'J'), 'Jsp')
                          || ' Paise';
          END IF;
       END IF;
       RETURN p_currency || ' ' || l_return;
    END spell_indian_money;*009*

  • Spell amount functional module

    hi guys,
             i want u guys to help me out here.i need a functional module which works exactly like SPELL_AMOUNT.The issue is that i want the amount 100,000 to be spelt as 1 lakh instead of one hundred thousand.

    hi Arup,
    If you look at the documentation of the Function Module, it tells you that the table T015Z has to be customized for your language if the default format of the spelled amounts is not acceptable.
    Unfortunately, the vales are stored only based on the language, and not on the currency. So If you configure the table for the English language, then all users who log on in English will get the same format (LAKHS, CRORES etc.,). This may not be acceptable for users in a country like US where the format preferred might be MILLIONS , BILLIONS etc.,
    Please exercise caution before going ahead with configuring the table.
    The only other alternative (to modifying the table) that I can think of will be to write your own function module!!
    or check the below program
    FUNCTION Z_FI_AMT_WRDS_CONVERT .
    ""Local interface:
    *" IMPORTING
    *" REFERENCE(AMT)
    *" EXPORTING
    *" REFERENCE(WORD) TYPE SPELL-WORD
    amt_c1 = amt.
    replace '.' with 'D' into amt_c1.
    SEARCH amt_c1 for 'D'.
    IF sy-subrc = 0.
    amt_wh1 = amt_c1+0(sy-fdpos).
    wrk_fdpos = sy-fdpos + 1.
    amt_dc1 = amt_c1+wrk_fdpos(2).
    ELSE.
    amt_wh1 = amt_c1.
    amt_dc1 = '00'.
    ENDIF.
    amtnmr = amt_wh1.
    amtdec = amt_dc1.
    CONCATENATE amtnmr amtdec INTO amount.
    CALL FUNCTION 'SPELL_AMOUNT'
    EXPORTING
    amount = amount
    currency = 'INR'
    filler = ' '
    language = 'E'
    IMPORTING
    in_words = amountrs.
    *WRITE: / 'amount in figures: ' ,'Rs.-->', AMTNMR,'.',AMTDEC.
    *WRITE: / 'Amount in WORDS.: ' ,' Rs.' ,AMOUNTRS-WORD,
    *'AND' ,AMOUNTRS-DECWORD ,'Paisa Only'.
    *SKIP.
    CLEAR: unit1,digit1,unit2,digit2,unit3,digit3,unit4,digit4,word1,word2,
    word3,word4,word.
    digit1 = amtnmr+14.
    unit1 = amtnmr+13.
    digit2 = amtnmr+12.
    unit2 = '0'.
    digit3 = amtnmr+11.
    unit3 = amtnmr+10.
    digit4 = amtnmr+9.
    unit4 = amtnmr+8.
    digit5 = amtnmr+7.
    unit5 = amtnmr+6.
    digit6 = amtnmr+5.
    unit6 = '0'.
    digit7 = amtnmr+4.
    unit7 = amtnmr+3.
    digit8 = amtnmr+2.
    unit8 = amtnmr+1.
    digit9 = amtnmr.
    unit9 = '0'.
    *WRITE:/ 'UNIT9 = ' , UNIT9, 'DIGIT9 = ', DIGIT9.
    IF ( unit1 NE '0' ) OR ( digit1 NE '0' ).
    SELECT SINGLE wort INTO word1 FROM t015z WHERE einh = unit1
    AND ziff = digit1 AND spras = 'E'.
    word1 = t015z-wort.
    REPLACE ';' WITH '' INTO word1.
    *write: / word1.
    ENDIF.
    IF unit2 NE '0' OR digit2 NE '0'.
    SELECT SINGLE * FROM t015z WHERE einh = unit2
    AND ziff = digit2 AND spras = 'E'.
    word2 = t015z-wort.
    REPLACE ';' WITH '' INTO word2.
    CONCATENATE word2 ' HUNDRED ' INTO word2.
    *REPLACE '(FEMININE)' WITH '' INTO WORD2.
    *write: / word2.
    ENDIF.
    IF unit3 NE '0' OR digit3 NE '0'.
    SELECT SINGLE * FROM t015z WHERE einh = unit3
    AND ziff = digit3 AND spras = 'E'.
    word3 = t015z-wort .
    CONCATENATE word3 ' THOUSAND ' INTO word3.
    REPLACE ';' WITH '' INTO word3.
    *write: / word3.
    ENDIF.
    IF unit4 NE '0' OR digit4 NE '0'.
    SELECT SINGLE * FROM t015z WHERE einh = unit4
    AND ziff = digit4 AND spras = 'E'.
    word4 = t015z-wort.
    REPLACE ';' WITH '' INTO word4.
    CONCATENATE word4 ' LAKH ' INTO word4.
    *WRITE: / WORD4.
    ENDIF.
    IF unit5 NE '0' OR digit5 NE '0'.
    SELECT SINGLE * FROM t015z WHERE einh = unit5
    AND ziff = digit5 AND spras = 'E'.
    word5 = t015z-wort.
    REPLACE ';' WITH '' INTO word5.
    *write: / word5.
    ENDIF.
    IF unit6 NE '0' OR digit6 NE '0'.
    *UNIT6 = 'H'.
    SELECT SINGLE * FROM t015z WHERE einh = unit6
    AND ziff = digit6 AND spras = 'E'.
    word6 = t015z-wort.
    REPLACE ';' WITH ' ' INTO word6.
    CONCATENATE word6 ' HUNDRED ' INTO word6.
    *REPLACE '(FEMININE)' WITH '' INTO WORD6.
    *write: / word6.
    ENDIF.
    IF unit7 NE '0' OR digit7 NE '0'.
    SELECT SINGLE * FROM t015z WHERE einh = unit7
    AND ziff = digit7 AND spras = 'E'.
    word7 = t015z-wort.
    REPLACE ';' WITH ' ' INTO word7.
    CONCATENATE word7 ' THOUSAND ' INTO word7.
    *write: / word7.
    ENDIF.
    IF unit8 NE '0' OR digit8 NE '0'.
    SELECT SINGLE * FROM t015z WHERE einh = unit8
    AND ziff = digit8 AND spras = 'E'.
    word8 = t015z-wort.
    REPLACE ';' WITH '' INTO word8.
    CONCATENATE word8 ' LAKHS ' INTO word8.
    *write: / word8.
    ENDIF.
    IF digit9 NE '0'.
    unit9 = '0'.
    SELECT SINGLE * FROM t015z WHERE einh = unit9
    AND ziff = digit9 AND spras = 'E'.
    word9 = t015z-wort.
    REPLACE ';' WITH ' ' INTO word9.
    *REPLACE '(FEMININE)' WITH ' ' INTO WORD9.
    CONCATENATE word9 ' HUNDRED ' INTO word9.
    ENDIF.
    CONCATENATE word9 word8 word7 word6 word5 ' CRORE ' INTO wordc
    SEPARATED BY space.
    *WRITE:/ 'Amount in Rs.------->'.
    IF amountrs-decword NE 'ZERO'.
    CONCATENATE ' AND PAISE ' amountrs-decword INTO dcwrd
    SEPARATED BY space.
    ENDIF.
    IF amtnmr > 9999999.
    *WRITE: / WORDC.
    *ENDIF.
    CONCATENATE 'RUPEES' wordc word4 word3 word2 word1 dcwrd 'ONLY'
    INTO word SEPARATED BY space.
    ELSE.
    CONCATENATE 'RUPEES'word4 word3 word2 word1 dcwrd 'ONLY'
    INTO word SEPARATED BY space.
    ENDIF.
    CLEAR dcwrd.
    *WRITE :/ WORD.
    *WRITE: 'AND' ,AMOUNTRS-DECWORD ,'Paise Only
    ENDFUNCTION.
    or try to use the below function module
    HR_IN_CHG_INR_WRDS
    if u find it useful just mark some points
    Regards,
    Naveen

  • How to use stored Procedure in PLD

    Hi All,
    I have create a procedure for converting number to words in SQL. I want to call this procedure in PLD. Is this possible?
    Thanks & Regards,
    Sheetal

    Hi,Sheetal Sarode
    First Create 2 funtions in SQL server: and apply trigger for system filed you can get data automatically amount in words when ever user is adding Outgoing payment.
    1.set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    select dbo.AmountToWords (4980)
    ALTER function dbo.AmountToWords
    @InNumber Numeric(18,2)
    --Returns the number as words.
    returns VARCHAR(2000)
    as
    BEGIN
    --SEt NoCount ON
    Declare @Num Varchar(20)
    Declare @Dec Varchar(3)
    Declare @Return Varchar(2000)
    Set @Dec = SubString(Convert(Varchar(20),@Innumber),Len(Convert(Varchar(20),@Innumber))-2,3)
    Set @Num = SubString(Convert(Varchar(20),@Innumber),1, Len(Convert(Varchar(20),@Innumber))-3)
    Declare @Hundred Char(8)
    Declare @HundredAnd Char(12)
    Declare @Thousand Char(9)
    Declare @Lakh Char(5)
    Declare @Lakhs Char(6)
    Declare @Crore Char(6)
    Declare @Crores Char(7)
    Set @Hundred = 'Hundred '
    Set @Thousand = 'Thousand '
    Set @Lakh = 'Lakh '
    Set @Lakhs = 'Lakhs '
    Set @Crore = 'Crore '
    Set @Crores = 'Crores '
    Set @HundredAnd = 'Hundred '
    if Len(@Num) = 1 -- One
    Begin
    Set @Return = dbo.GetTextValue(@Num)
    End
    Else if Len(@Num) = 2 -- Ten
    Begin
    Set @Return = dbo.GetTextValue(@Num)
    End
    Else if Len(@Num) = 3 -- Hundred
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Hundred
    IF SubString(@num,2,2) '00'
    Set @Return = @Return + ' '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2))
    End
    Else if Len(@Num) = 4 -- thousand
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Thousand
    If SubString(@Num,2,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,1)) + @Hundred
    IF SubString(@num,3,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2))
    End
    Else if Len(@Num) = 5 -- Ten Thousand
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Thousand
    If SubString(@Num,3,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,1)) + @Hundred
    IF SubString(@num,4,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2))
    End
    Else if Len(@Num) = 6 -- Lakh
    Begin
    If SubString(@Num,1,1) = '1'
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakh
    Else
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakhs
    If SubString(@Num,2,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Thousand
    If SubString(@Num,4,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,1)) + @Hundred
    IF SubString(@num,5,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2))
    End
    Else if Len(@Num) = 7 -- Ten Lakhs
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Lakhs
    If SubString(@Num,3,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Thousand
    If SubString(@Num,6,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,1)) + @Hundred
    IF SubString(@num,6,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2))
    End
    Else if Len(@Num) = 8 -- Crore
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Crore
    If SubString(@Num,2,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Lakhs
    If SubString(@Num,4,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Thousand
    If SubString(@Num,6,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,1)) + @Hundred
    IF SubString(@num,7,2) '00'
    Set @Return = @Return + ' '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2))
    End
    Else if Len(@Num) = 9 -- Ten Crore
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Crores
    If SubString(@Num,3,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Lakhs
    If SubString(@Num,5,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Thousand
    If SubString(@Num,7,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,1)) + @Hundred
    IF SubString(@num,8,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2))
    End
    Else if Len(@Num) = 10 -- Hundred Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Hundred
    IF Substring(@Num,2,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,4,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Lakhs
    If SubString(@Num,6,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Thousand
    If SubString(@Num,8,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,1)) + @Hundred
    IF SubString(@num,9,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2))
    End
    Else if Len(@Num) = 11 -- Thousand Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Thousand
    IF SubString(@Num,2,1) '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,1)) + @Hundred
    IF Substring(@Num,3,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,5,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Lakhs
    If SubString(@Num,7,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Thousand
    If SubString(@Num,9,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,1)) + @Hundred
    IF SubString(@num,10,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2))
    End
    Else if Len(@Num) = 12 -- Ten thousand Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Thousand
    IF SubString(@Num,3,1) '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,1)) + @Hundred
    IF Substring(@Num,4,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,6,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Lakhs
    If SubString(@Num,8,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Thousand
    If SubString(@Num,10,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,1)) + @Hundred
    IF SubString(@num,11,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,2))
    End
    Else if Len(@Num) = 13 -- Lakh Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Lakh
    If Substring(@Num,2,2) '00'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,2)) + @Thousand
    IF SubString(@Num,4,1) '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,4,1)) + @Hundred
    IF Substring(@Num,5,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,7,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Lakhs
    If SubString(@Num,9,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2)) + @Thousand
    If SubString(@Num,11,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,1)) + @Hundred
    IF SubString(@num,12,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,2))
    End
    Else if Len(@Num) = 14 -- Ten Lakh Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Lakhs
    If Substring(@Num,3,2) '00'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,2)) + @Thousand
    IF SubString(@Num,5,1) '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,5,1)) + @Hundred
    IF Substring(@Num,6,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,8,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Lakhs
    If SubString(@Num,10,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2)) + @Thousand
    If SubString(@Num,12,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,1)) + @Hundred
    IF SubString(@num,13,2) '00'
    Set @Return = @Return + ''
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,13,2))
    End
    If @Dec '.00'
    Set @Return = @Return + ' And ' + dbo.GetTextValue(SubString(@Dec,2,2)) + 'Paise'
    Return @return
    END
    2.This is for Get texl vavlue funtion:
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    ALTER function dbo.GetTextValue
    @num varchar(20)
    returns VARCHAR(2000)
    as
    BEGIN
    Declare @Return varchar(2000)
    Declare @temp char(1)
    Declare @tempZero char(1)
    Declare @Zero char(1)
    Declare @One char(4)
    Declare @Two char(4)
    Declare @Three char(6)
    Declare @Four char(5)
    Declare @Five char(5)
    Declare @Six char(4)
    Declare @Seven char(6)
    Declare @Eight char(6)
    Declare @Nine char(5)
    Declare @Eleven char(7)
    Declare @Twelve char(7)
    Declare @Thirteen char(9)
    Declare @Fourteen char(9)
    Declare @Fifteen char(8)
    Declare @Sixteen char(8)
    Declare @Seventeen char(10)
    Declare @Eighteen char(9)
    Declare @Nineteen char(9)
    Declare @Ten char(4)
    Declare @Twenty char(6)
    Declare @Thirty char(7)
    Declare @Forty char(6)
    Declare @Fifty char(6)
    Declare @Sixty char(6)
    Declare @Seventy char(8)
    Declare @Eighty char(7)
    Declare @Ninety char(7)
    set @tempZero = '0'
    set @Zero = ''
    set @One = 'One '
    set @Two = 'Two '
    set @Three = 'Three '
    set @Four = 'Four '
    set @Five = 'Five '
    set @Six = 'Six '
    set @Seven = 'Seven '
    set @Eight = 'Eight '
    set @Nine = 'Nine '
    set @Eleven = 'Eleven '
    set @Twelve = 'Twelve '
    set @Thirteen = 'Thirteen '
    set @Fourteen = 'Fourteen '
    set @Fifteen = 'Fifteen '
    set @Sixteen = 'Sixteen '
    set @Seventeen = 'Seventeen '
    set @Eighteen = 'Eighteen '
    set @Nineteen = 'Nineteen '
    set @Ten = 'Ten '
    set @Twenty = 'Twenty '
    set @Thirty = 'Thirty '
    set @Forty = 'Forty '
    set @Fifty = 'Fifty '
    set @Sixty = 'Sixty '
    set @Seventy = 'Seventy '
    set @Eighty = 'Eighty '
    set @Ninety = 'Ninety '
    IF Len(@num) = 2
    Begin
    If SubString(@num,2,1) '0'
    Begin
    Set @temp = SubString(@num,1,1)
    Set @Return = dbo.GetTextValue(@temp+@tempZero)
    Set @Return = @Return + dbo.GetTextValue(SubString(@num,2,1))
    End
    END
    If @num = 0
    Begin
    set @Return = @Zero
    End
    Else if @num = 1
    Begin
    set @Return = @One
    End
    Else if @num = 2
    Begin
    set @Return = @Two
    End
    Else if @num = 3
    Begin
    set @Return = @Three
    End
    Else if @num = 4
    Begin
    set @Return = @Four
    End
    Else if @num = 5
    Begin
    set @Return = @Five
    End
    Else if @num = 6
    Begin
    set @Return = @Six
    End
    Else if @num = 7
    Begin
    set @Return = @Seven
    End
    Else if @num = 8
    Begin
    set @Return = @Eight
    End
    Else if @num = 9
    Begin
    set @Return = @Nine
    End
    Else if @num = 10
    Begin
    set @Return = @Ten
    End
    Else if @num = 11
    Begin
    set @Return = @Eleven
    End
    Else if @num = 12
    Begin
    set @Return = @Twelve
    End
    Else if @num = 13
    Begin
    set @Return = @Thirteen
    End
    Else if @num = 14
    Begin
    set @Return = @Fourteen
    End
    Else if @num = 15
    Begin
    set @Return = @Fifteen
    End
    Else if @num = 16
    Begin
    set @Return = @Sixteen
    End
    Else if @num = 17
    Begin
    set @Return = @Seventeen
    End
    Else if @num = 18
    Begin
    set @Return = @Eighteen
    End
    Else if @num = 19
    Begin
    set @Return = @Nineteen
    End
    Else if @num = 20
    Begin
    set @Return = @Twenty
    End
    Else if @num = 30
    Begin
    set @Return = @Thirty
    End
    Else if @num = 40
    Begin
    set @Return = @Forty
    End
    Else if @num = 50
    Begin
    set @Return = @Fifty
    End
    Else if @num = 60
    Begin
    set @Return = @Sixty
    End
    Else if @num = 70
    Begin
    set @Return = @Seventy
    End
    Else if @num = 80
    Begin
    set @Return = @Eighty
    End
    Else if @num = 90
    Begin
    set @Return = @Ninety
    End
    Return @Return
    END
    3. Create trigger for OCHO table:
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    =============================================
    Author: <Author,,Name>
    Create date: <Create Date,,>
    Description: <Description,,>
    =============================================
    ALTER TRIGGER AmountToWordsTrigger
    ON dbo.OCHO
    AFTER INSERT,UPDATE
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    UPDATE dbo.OCHO
    SET TotalWords = dbo.AmountToWords (LinesSum)+'Only'
    WHERE CheckKey IN ( SELECT CheckKey From Inserted)
    END
    it will update exisitng filed i.e.,Amount in words. call this field in your PLD.it will help you to get Amount in words through PLD
    Regds,
    sampath kumar devunuri..

  • Numeric value in words (for Cheque printing)

    Hi All,
    To convert numeric value in words (for Cheque printing), I created two functions in Forms and reports 6i.
    1) FUNCTION Spell (val number) RETURN CHAR IS
    sp varchar2(100);
    BEGIN
    if val > 0 then
         return(initcap(to_char(to_date(val, 'SSSSS'), 'SSSSSSP')));
    else
         return('');
    end if;
    END;
    2) function SPELLED_AMOUNTFormula return Char is
    cents number;
    c_str varchar2(80);
    val number;
    begin
    val := :p_instr_amt;
    cents := (val mod 1) * 100;
    if cents > 0 then --creates string for cents
    c_str := ' and ' || spell(TO_CHAR(cents)) || ' fils Only';
    else
    c_str := ' Only';
    end if;
    if val < 1000 and val > 1 then
    return (initcap(spell(floor(val))) || c_str);
    elsif val > 1000 then
    return(initcap(spell(floor(val/1000))) || ' Thousand ' ||
    spell(floor(val mod 1000)) || c_str);
    else
    return('Zero'||c_str);
    end if;
    end;
    This convert value up to thousands. How to convert the value more than 1 lac. please configure this code.
    Thanks in advance

    Hi,
    To spell integers as high as 5,373,484, use 'Jsp' instead of 'ssssssp'.
    TO_CHAR ( TO_DATE ( n     -- n = integer to be spelled
                  , 'J'
         , 'Jsp'          -- Case-sensitive
         )5373484 is the Julian date of December 31, 9999, the latest DATE value in Oracle. In Oracle 10.2, you can actually spell numbers a little bit higher using the expression above, but I'm not sure why, and I wouldn't count on being able to do so in future versions.
    There's no need for INITCAP here. If the 2nd argument to TO_CHAR is initcapped (as above), then the output will be, too.
    To spell even larger numbers, see this page by Tom Kyte, which also includes languages other than English, and lakh-crore-arab-kharab wording.
    Edited by: Frank Kulash on Oct 13, 2012 7:21 AM

  • Amount required in Words ?

    Hi ,
    Experts
    For any Transaction/Banking  documents in it's PLDs , there is an requirement of both --
    Amount in figure   (Curency - Indian Rupees)
    Amount  in words (Curency - Indian Rupees)
    *Example Rs- 3450566 /-  so it should be
    thirtyfour lacs fifty thousand  five hundred and sixtysix*
    I have the problem in getting the Amount in words
    Tried the other solutions not able to get it ..

    Hi,
    Run the below in sql server.
    if exists (select * from dbo.sysobjects where id = object_id(N'dbo.AmountToWords') and xtype in (N'FN', N'IF', N'TF'))
    drop function dbo.AmountToWords
    GO
    if exists (select * from dbo.sysobjects where id = object_id(N'dbo.GetTextValue') and xtype in (N'FN', N'IF', N'TF'))
    drop function dbo.GetTextValue
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO
    CREATE function AmountToWords
    @InNumber Numeric(18,2)
    --Returns the number as words.
    returns VARCHAR(2000)
    as
    BEGIN
    --SEt NoCount ON
    Declare @Num Varchar(20)
    Declare @Dec Varchar(3)
    Declare @Return Varchar(2000)
    Set @Dec = SubString(Convert(Varchar(20),@Innumber),Len(Convert(Varchar(20),@Innumber))-2,3)
    Set @Num = SubString(Convert(Varchar(20),@Innumber),1, Len(Convert(Varchar(20),@Innumber))-3)
    Declare @Hundred Char(8)
    Declare @HundredAnd Char(12)
    Declare @Thousand Char(9)
    Declare @Lakh Char(5)
    Declare @Lakhs Char(6)
    Declare @Crore Char(6)
    Declare @Crores Char(7)
    Set @Hundred = 'Hundred '
    Set @Thousand = 'Thousand '
    Set @Lakh = 'Lakh '
    Set @Lakhs = 'Lakhs '
    Set @Crore = 'Crore '
    Set @Crores = 'Crores '
    Set @HundredAnd = 'Hundred and '
    if Len(@Num) = 1 -- One
    Begin
    Set @Return = dbo.GetTextValue(@Num)
    End
    Else if Len(@Num) = 2 -- Ten
    Begin
    Set @Return = dbo.GetTextValue(@Num)
    End
    Else if Len(@Num) = 3 -- Hundred
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Hundred
    IF SubString(@num,2,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2))
    End
    Else if Len(@Num) = 4 -- thousand
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Thousand
    If SubString(@Num,2,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,1)) + @Hundred
    IF SubString(@num,3,2)  <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2))
    End
    Else if Len(@Num) = 5 -- Ten Thousand
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Thousand
    If SubString(@Num,3,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,1)) + @Hundred
    IF SubString(@num,4,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2))
    End
    Else if Len(@Num) = 6 -- Lakh
    Begin
    If SubString(@Num,1,1) = '1'
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakh
    Else
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakhs
    If SubString(@Num,2,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Thousand
    If SubString(@Num,4,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,1)) + @Hundred
    IF SubString(@num,5,2)  <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2))
    End
    Else if Len(@Num) = 7 -- Ten Lakhs
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Lakhs
    If SubString(@Num,3,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Thousand
    If SubString(@Num,6,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,1)) + @Hundred
    IF SubString(@num,6,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2))
    End
    Else if Len(@Num) = 8 -- Crore
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Crore
    If SubString(@Num,2,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Lakhs
    If SubString(@Num,4,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Thousand
    If SubString(@Num,6,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,1)) + @Hundred
    IF SubString(@num,7,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2))
    End
    Else if Len(@Num) = 9 -- Ten Crore
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Crores
    If SubString(@Num,3,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Lakhs
    If SubString(@Num,5,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Thousand
    If SubString(@Num,7,1)  <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,1)) + @Hundred
    IF SubString(@num,8,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2))
    End
    Else if Len(@Num) = 10 -- Hundred Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Hundred
    IF Substring(@Num,2,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,4,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Lakhs
    If SubString(@Num,6,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Thousand
    If SubString(@Num,8,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,1)) + @Hundred
    IF SubString(@num,9,2)  <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2))
    End
    Else if Len(@Num) = 11 -- Thousand Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Thousand
    IF SubString(@Num,2,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,1)) + @Hundred
    IF Substring(@Num,3,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,5,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Lakhs
    If SubString(@Num,7,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Thousand
    If SubString(@Num,9,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,1)) + @Hundred
    IF SubString(@num,10,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2))
    End
    Else if Len(@Num) = 12 -- Ten thousand Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Thousand
    IF SubString(@Num,3,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,1)) + @Hundred
    IF Substring(@Num,4,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,6,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Lakhs
    If SubString(@Num,8,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Thousand
    If SubString(@Num,10,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,1)) + @Hundred
    IF SubString(@num,11,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,2))
    End
    Else if Len(@Num) = 13 -- Lakh Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Lakh
    If Substring(@Num,2,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,2)) + @Thousand
    IF SubString(@Num,4,1)  <> '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,4,1)) + @Hundred
    IF Substring(@Num,5,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,7,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Lakhs
    If SubString(@Num,9,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2)) + @Thousand
    If SubString(@Num,11,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,1)) + @Hundred
    IF SubString(@num,12,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,2))
    End
    Else if Len(@Num) = 14 -- Ten Lakh Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Lakhs
    If Substring(@Num,3,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,2)) + @Thousand
    IF SubString(@Num,5,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,5,1)) + @Hundred
    IF Substring(@Num,6,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,8,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Lakhs
    If SubString(@Num,10,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2)) + @Thousand
    If SubString(@Num,12,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,1)) + @Hundred
    IF SubString(@num,13,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,13,2))
    End
    If @Dec  <> '.00'
    Set @Return = @Return + 'Rupees And ' + dbo.GetTextValue(SubString(@Dec,2,2)) + 'Paise'
    ELSE
    Set @Return =@Return +'Rupees'
    Return @return
    End
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO
    CREATE Function dbo.GetTextValue
    @dblNumber Numeric
    Returns Varchar(1000)
    As
    Begin
    Declare @StrWord Varchar(400)
    SEt @strWord = Case @dblNumber
    When 1 Then 'One '
    When 2 Then 'Two '
    When 3 Then 'Three '
    When 4 Then 'Four '
    When 5 Then 'Five '
    When 6 Then 'Six '
    When 7 Then 'Seven '
    When 8 Then 'Eight '
    When 9 Then 'Nine '
    When 10 Then 'Ten '
    When 11 Then 'Eleven '
    When 12 Then 'Twelve '
    When 13 Then 'Thirteen '
    When 14 Then 'Fourteen '
    When 15 Then 'Fifteen '
    When 16 Then 'Sixteen '
    When 17 Then 'Seventeen '
    When 18 Then 'Eighteen '
    When 19 Then 'Nineteen '
    When 20 Then 'Twenty '
    When 21 Then 'Twenty One '
    When 22 Then 'Twenty Two '
    When 23 Then 'Twenty Three '
    When 24 Then 'Twenty Four '
    When 25 Then 'Twenty Five '
    When 26 Then 'Twenty Six '
    When 27 Then 'Twenty Seven '
    When 28 Then 'Twenty Eight '
    When 29 Then 'Twenty Nine '
    When 30 Then 'Thirty '
    When 31 Then 'Thirty One '
    When 32 Then 'Thirty Two '
    When 33 Then 'Thirty Three '
    When 34 Then 'Thirty Four '
    When 35 Then 'Thirty Five '
    When 36 Then 'Thirty Six '
    When 37 Then 'Thirty Seven '
    When 38 Then 'Thirty Eight '
    When 39 Then 'Thirty Nine '
    When 40 Then 'Fourty '
    When 41 Then 'Fourty One '
    When 42 Then 'Fourty Two '
    When 43 Then 'Fourty Three '
    When 44 Then 'Fourty Four '
    When 45 Then 'Fourty Five '
    When 46 Then 'Fourty Six '
    When 47 Then 'Fourty Seven '
    When 48 Then 'Fourty Eight '
    When 49 Then 'Fourty Nine '
    When 50 Then 'Fifty '
    When 51 Then 'Fifty One '
    When 52 Then 'Fifty Two '
    When 53 Then 'Fifty Three '
    When 54 Then 'Fifty Four '
    When 55 Then 'Fifty Five '
    When 56 Then 'Fifty Six '
    When 57 Then 'Fifty Seven '
    When 58 Then 'Fifty Eight '
    When 59 Then 'Fifty Nine '
    When 60 Then 'Sixty '
    When 61 Then 'Sixty One '
    When 62 Then 'Sixty Two '
    When 63 Then 'Sixty Three '
    When 64 Then 'Sixty Four '
    When 65 Then 'Sixty Five '
    When 66 Then 'Sixty Six '
    When 67 Then 'Sixty Seven '
    When 68 Then 'Sixty Eight '
    When 69 Then 'Sixty Nine '
    When 70 Then 'Seventy '
    When 71 Then 'Seventy One '
    When 72 Then 'Seventy Two '
    When 73 Then 'Seventy Three '
    When 74 Then 'Seventy Four '
    When 75 Then 'Seventy Five '
    When 76 Then 'Seventy Six '
    When 77 Then 'Seventy Seven '
    When 78 Then 'Seventy Eight '
    When 79 Then 'Seventy Nine '
    When 80 Then 'Eighty '
    When 81 Then 'Eighty One '
    When 82 Then 'Eighty Two '
    When 83 Then 'Eighty Three '
    When 84 Then 'Eighty Four '
    When 85 Then 'Eighty Five '
    When 86 Then 'Eighty Six '
    When 87 Then 'Eighty Seven '
    When 88 Then 'Eighty Eight '
    When 89 Then 'Eighty Nine '
    When 90 Then 'Ninety '
    When 91 Then 'Ninety One '
    When 92 Then 'Ninety Two '
    When 93 Then 'Ninety Three '
    When 94 Then 'Ninety Four '
    When 95 Then 'Ninety Five '
    When 96 Then 'Ninety Six '
    When 97 Then 'Ninety Seven '
    When 98 Then 'Ninety Eight '
    When 99 Then 'Ninety Nine '
    When 100 Then 'One hundred '
    else ' '
    End
    Return @strWord
    End
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO
    create UDF on the document where you want the amount in words as per indian format.
    run the query generateor,paste the below query...
    and save it.
    declare @Doc_total numeric (19,6)
    set @Doc_total=$[OINV.DocTotal]
    select  dbo.AmountToWords (@Doc_total)
    now apply formated search on the UDF you created(For e.g. i created on SALes Invoice)
    refresh regularly on doctotal.
    now choose that UDF on pld.
    Hope this will help u.
    Regards,
    Neetu

  • Amount in words problem

    Hi All,
    Please help me to get Amount in words in Indian standards
    i.e
    if amount is 125000 then it should print
    "One Lakh Twenty-five thousand rupees only"
    All these I need in a Check Print layout
    here i  can see amount but how will i get Amount in words there.
    I have made a query CheckPrint
    which contains follwing fields from OPCH (A/P Invoice table)
    DocNum , DocDate, CardName, DocTotal.
    I just want DocTotal in words so that i can display it on the layout and get the print on Cheque.
    I am using SAP 2005 B version.
    Please help I am not a trained professional in SAP Business One
    Kindly do the needful.
    Thanks and Regards,
    Murtaza Piyersoap

    Hi Murtaza,
    I had a similar issue, and I addressed it by:
    1. Creating a UDF in the Payments>Title called AmountInWord of Type AlphaNumeric Structure Text (i.e. in OVPM Table)
    2. Created a Function called I_ConvertN2W in the database, which converts any number into Words as per Indian Style i.e. Lakh, Crore
    3. In the SBO_SP_TransactionNotification, I am filling the Value in the UDF on every Add of Outgoing Payment
    4. In the PLD for the printing of the cheque, I am using the UDF, instead of the SAPB1 Amount (which is non Indian Style)
    Step 1:
    Create the UDF as mentioned above, I guess no further explanation required
    Step 2:
    Creating the Function I_ConvertN2W, but first you will have to create all the support functions, I am listing the function in the order of creation
    CREATE FUNCTION I_Modulus (@INPUT INT, @DIVIDER INT) 
    RETURNS INT AS 
    BEGIN
    DECLARE @RETVAL AS INT, @MODULUS AS INT
    IF @INPUT = @DIVIDER
    BEGIN
         SET @RETVAL = 0
    END
    IF @INPUT < @DIVIDER
    BEGIN
         SET @RETVAL = @INPUT
    END
    SET @MODULUS = @INPUT
    WHILE @MODULUS >= @DIVIDER
    BEGIN
         SET @MODULUS = @MODULUS - @DIVIDER
    END
    SET @RETVAL = @MODULUS
    RETURN (@RETVAL)
    END
    CREATE FUNCTION I_Mid (@sInput VARCHAR(8000), @iStart INT, @iLen INT) 
    RETURNS VARCHAR(8000) AS 
    BEGIN
    --Adapted from the Mid function of Visual Basic
    DECLARE @sRetVal AS VARCHAR(8000)
    IF @iLen = 0
    BEGIN
         SET @iLen = LEN(@sInput)-(@iStart-1)
    END
    SET @sRetVal = RIGHT(@sInput,LEN(@sInput) - (@iStart-1))
    SET @sRetVal = LEFT(@sRetVal,@iLen)
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetWord (@cValue INT) 
    RETURNS nvarchar(10)
    AS 
    BEGIN
    DECLARE @sRetVal AS NVARCHAR(10)
    SET @sRetVal =
         CASE
              WHEN @cValue = 0 THEN ''
              WHEN @cValue = 1 THEN 'One'
              WHEN @cValue = 2 THEN 'Two'
              WHEN @cValue = 3 THEN 'Three'
              WHEN @cValue = 4 THEN 'Four'
              WHEN @cValue = 5 THEN 'Five'
              WHEN @cValue = 6 THEN 'Six'
              WHEN @cValue = 7 THEN 'Seven'
              WHEN @cValue = 8 THEN 'Eight'
              WHEN @cValue = 9 THEN 'Nine'
              WHEN @cValue = 10 THEN 'Ten'
              WHEN @cValue = 11 THEN 'Eleven'
              WHEN @cValue = 12 THEN 'Twelve'
              WHEN @cValue = 13 THEN 'Thirteen'
              WHEN @cValue = 14 THEN 'Fourteen'
              WHEN @cValue = 15 THEN 'Fifteen'
              WHEN @cValue = 16 THEN 'Sixteen'
              WHEN @cValue = 17 THEN 'Seventeen'
              WHEN @cValue = 18 THEN 'Eighteen'
              WHEN @cValue = 19 THEN 'Ninteen'
              WHEN @cValue = 20 THEN 'Twenty'
              WHEN @cValue = 30 THEN 'Thirty'
              WHEN @cValue = 40 THEN 'Forty'
              WHEN @cValue = 50 THEN 'Fifty'
              WHEN @cValue = 60 THEN 'Sixty'
              WHEN @cValue = 70 THEN 'Seventy'
              WHEN @cValue = 80 THEN 'Eighty'
              WHEN @cValue = 90 THEN 'Ninty'
         END
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetTens (@sValue as NVARCHAR(100)) 
    RETURNS NVARCHAR(100) AS 
    BEGIN
    DECLARE @sTens AS NVARCHAR(100), @iNum AS INT, @cnt AS INT, @iDigit AS INT, @sRetVal AS NVARCHAR(100)
    SET @iNum = CAST(@sValue AS INT)
    SET @sTens = ''
    IF @iNum <= 20
    BEGIN
         SET @sRetVal =  dbo.I_CN2W_GetWord(@iNum)
    END
    ELSE
    BEGIN
         SET @cnt = 1
         WHILE @iNum > 0
              BEGIN
                   SET @iDigit = dbo.I_Modulus(@iNum, 10)
                   IF @cnt = 1
                        SET @sTens = dbo.I_CN2W_GetWord(@iDigit)
                   ELSE
                   BEGIN
                        SET @iDigit = @iDigit * 10
                        SET @sTens = dbo.I_CN2W_GetWord(@iDigit) + ' ' + @sTens
                   END
                   SET @cnt = (@cnt + 1)
                   SET @iNum = (@iNum / 10)
              END
         SET @sRetVal = @sTens
    END
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetHundreds (@sValue NVARCHAR(100)) 
    RETURNS NVARCHAR(100) AS 
    BEGIN
    DECLARE @rstHun as NVARCHAR(100), @sHun as NVARCHAR(100), @sTens AS NVARCHAR(100), @sRetVal as NVARCHAR(100)
    IF RTRIM(LTRIM(@sValue)) = '000'
    BEGIN
         SET @sRetVal = ''
    END
    ELSE
    BEGIN
         SET @sHun = SUBSTRING(RTRIM(LTRIM(@sValue)),1,1)
         SET @sTens = dbo.I_CN2W_GetTens(SUBSTRING(RTRIM(LTRIM(@sValue)),2,2))
         IF (LEN(RTRIM(LTRIM(@sTens))) > 0)
         BEGIN
              SET @rstHun = dbo.I_CN2W_GetWord(CONVERT(INT, @sHun))
              IF (LEN(RTRIM(LTRIM(@rstHun))) > 0)
              BEGIN
                   SET @rstHun = @rstHun + ' Hundred and ' + @sTens
              END
              ELSE
              BEGIN
                   SET @rstHun = @sTens
              END
         END
         ELSE
         BEGIN
              SET @rstHun = dbo.I_CN2W_GetWord(CONVERT(INT, @sHun)) + ' Hundred'
         END
         SET @sRetVal = @rstHun
    END
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetThousands (@sValue NVARCHAR(100)) 
    RETURNS NVARCHAR(100) AS 
    BEGIN
    DECLARE @rstHun as NVARCHAR(100), @rstThou AS NVARCHAR(100), @strHun as NVARCHAR(100), @strNum AS NVARCHAR(100), @strThou AS NVARCHAR(100)
    DECLARE @sRetVal as NVARCHAR(100)
    IF @sValue = '00000'
    BEGIN
         SET @sRetVal = ''
    END
    ELSE
    BEGIN
         SET @strNum = RTRIM(LTRIM(@sValue))
         SET @strHun =
              CASE
                   WHEN LEN(@strNum) = 4 THEN SUBSTRING(@strNum,2,3)
                   ELSE SUBSTRING(@strNum,3,3)
              END
         SET @strThou = SUBSTRING(@strNum,1,LEN(@strNum)-3)
         SET @rstHun = dbo.I_CN2W_GetHundreds(@strHun)
         SET @rstThou =
              CASE
                   WHEN CAST(@strThou AS INT) <= 20 THEN dbo.I_CN2W_GetWord(CONVERT(INT, @strThou))
                   ELSE dbo.I_CN2W_GetTens(@strThou)
              END
         IF (LEN(@rstThou)>0)
         BEGIN
              SET @rstThou = @rstThou + ' Thousand ' + @rstHun
         END
         ELSE
         BEGIN
              SET @rstThou = @rstHun
         END
         SET @sRetVal = @rstThou
    END
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetLakhs (@sValue NVARCHAR(100)) 
    RETURNS NVARCHAR(100) AS 
    BEGIN
    DECLARE @rstThou as NVARCHAR(100), @rstLakhs AS NVARCHAR(100), @strLakhs as NVARCHAR(100), @strNum AS NVARCHAR(100), @strThou AS NVARCHAR(100)
    DECLARE @sRetVal as NVARCHAR(100)
    IF @sValue = '0000000'
    BEGIN
         SET @sRetVal = ''
    END
    ELSE
    BEGIN
         SET @strNum = RTRIM(LTRIM(@sValue))
         SET @strThou =
              CASE
                   WHEN LEN(@strNum) = 6 THEN SUBSTRING(@strNum,2,5)
                   ELSE SUBSTRING(@strNum,3,5)
              END
         SET @strLakhs = SUBSTRING(@strNum,1,LEN(@strNum)-5)
         SET @rstThou = dbo.I_CN2W_GetThousands(@strThou)
         SET @rstLakhs =
              CASE
                   WHEN CAST(@strLakhs AS INT) <= 20 THEN dbo.I_CN2W_GetWord(CONVERT(INT, @strLakhs))
                   ELSE dbo.I_CN2W_GetTens(@strLakhs)
              END
         IF (LEN(@rstLakhs)>0)
         BEGIN
              SET @rstLakhs = @rstLakhs + ' Lakh ' + @rstThou
         END
         ELSE
         BEGIN
              SET @rstLakhs = @rstThou
         END
         SET @sRetVal = @rstLakhs
    END
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetCrores (@sValue NVARCHAR(255)) 
    RETURNS NVARCHAR(255) AS 
    BEGIN
    DECLARE @rstCro as NVARCHAR(255), @rstLakhs AS NVARCHAR(255), @strNum as NVARCHAR(100), @strLakhs AS NVARCHAR(255), @strCro AS NVARCHAR(255)
    DECLARE @sRetVal as NVARCHAR(255)
    IF @sValue = '000000000'
    BEGIN
         SET @sRetVal = ''
    END
    ELSE
    BEGIN
         SET @strNum = RTRIM(LTRIM(@sValue))
         SET @strLakhs =
              CASE
                   WHEN LEN(@strNum) = 8 THEN SUBSTRING(@strNum,2,7)
                   ELSE SUBSTRING(@strNum,3,7)
              END
         SET @strCro = SUBSTRING(@strNum,1,LEN(@strNum)-7)
         SET @rstLakhs = dbo.I_CN2W_GetLakhs(@strLakhs)
         SET @rstCro =
              CASE
                   WHEN CAST(@strCro AS INT) <= 20 THEN dbo.I_CN2W_GetWord(CONVERT(INT, @strCro))
                   ELSE dbo.I_CN2W_GetTens(@strCro)
              END
         IF LEN(@rstCro)>0
         BEGIN
              SET @rstCro = @rstCro + ' Crore ' + @rstLakhs
         END
         ELSE
         BEGIN
              SET @rstCro = @rstLakhs
         END
         SET @sRetVal = @rstCro
    END
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetArabs (@sValue NVARCHAR(255)) 
    RETURNS NVARCHAR(255) AS 
    BEGIN
    DECLARE @rstArab as NVARCHAR(255), @rstCro AS NVARCHAR(255), @strNum as NVARCHAR(255), @strCro AS NVARCHAR(255), @strArab AS NVARCHAR(255)
    DECLARE @sRetVal as NVARCHAR(255)
    IF @sValue = '00000000000'
    BEGIN
         SET @sRetVal = ''
    END
    ELSE
    BEGIN
         SET @strNum = RTRIM(LTRIM(@sValue))
         SET @strCro =
              CASE
                   WHEN LEN(@strNum) = 10 THEN SUBSTRING(@strNum,2,9)
                   ELSE SUBSTRING(@strNum,3,9)
              END
         SET @strArab = SUBSTRING(@strNum,1,LEN(@strNum)-9)
         SET @rstCro = dbo.I_CN2W_GetCrores(@strCro)
         SET @rstArab =
              CASE
                   WHEN CAST(@strArab AS INT) <= 20 THEN dbo.I_CN2W_GetWord(CONVERT(INT, @strArab))
                   ELSE dbo.I_CN2W_GetTens(@strArab)
              END
         IF LEN(@rstArab)>0
         BEGIN
              SET @rstArab = @rstArab + ' Arab ' + @rstCro
         END
         ELSE
         BEGIN
              SET @rstArab = @rstCro
         END
         SET @sRetVal = @rstArab
    END
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetKharabs (@sValue NVARCHAR(255)) 
    RETURNS NVARCHAR(255) AS 
    BEGIN
    DECLARE @rstArab as NVARCHAR(255), @rstKharab AS NVARCHAR(255), @strNum as NVARCHAR(255), @strKharab AS NVARCHAR(255), @strArab AS NVARCHAR(255)
    DECLARE @sRetVal as NVARCHAR(255)
    IF @sValue = '10000000000000'
    BEGIN
         SET @sRetVal = 'Hundred Kharab '
    END
    ELSE
    BEGIN
         SET @strNum = RTRIM(LTRIM(@sValue))
         SET @strArab =
              CASE
                   WHEN LEN(@strNum) = 12 THEN SUBSTRING(@strNum,2,11)
                   ELSE SUBSTRING(@strNum,3,11)
              END
         SET @strKharab = SUBSTRING(@strNum,1,LEN(@strNum)-11)
         SET @rstArab = dbo.I_CN2W_GetArabs(@strArab)
         SET @rstKharab =
              CASE
                   WHEN CAST(@strKharab AS INT) <= 20 THEN dbo.I_CN2W_GetWord(CONVERT(INT, @strKharab))
                   ELSE dbo.I_CN2W_GetTens(@strKharab)
              END
         IF @rstKharab IS NOT NULL
         BEGIN
              SET @rstKharab = @rstKharab + ' Kharab ' + @rstArab
         END
         ELSE
         BEGIN
              SET @rstKharab = @rstArab
         END
         SET @sRetVal = @rstKharab
    END
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_CN2W_GetAbvKharab (@sValue NVARCHAR(255)) 
    RETURNS NVARCHAR(255) AS 
    BEGIN
    DECLARE @rstArab as NVARCHAR(255), @rstAbvKharab AS NVARCHAR(255), @strNum as NVARCHAR(255), @strArab AS NVARCHAR(255), @strAbvKharab AS NVARCHAR(255)
    DECLARE @sRetVal as NVARCHAR(255), @ONLY AS NVARCHAR(10)
    SET @ONLY = 'Only'
    SET @strNum = RTRIM(LTRIM(@sValue))
    SET @strArab = SUBSTRING(@strNum, ((LEN(@strNum)-11)+1),11)
    SET @strAbvKharab = SUBSTRING(@strNum,1,LEN(@strNum)-11)
    SET @rstArab = dbo.I_CN2W_GetArabs(@strArab)
    SET @rstAbvKharab = REPLACE(dbo.I_ConvertN2W(CONVERT(MONEY, @strAbvKharab),0),@ONLY,'')
    SET @rstAbvKharab = @rstAbvKharab + ' Kharab ' + @rstArab
    SET @sRetVal = @rstAbvKharab
    RETURN (@sRetVal)
    END
    CREATE FUNCTION I_ConvertN2W (@curNumber MONEY, @bPrefixCurrencyName BIT)
    RETURNS VARCHAR(400) AS 
    BEGIN
    ---This Function is an Adapted (Scaled Down) version of ConvertN2W from the ITCCF32.dll Custom Functions Library by Infinite Technologies
    ---Original and Adapted (SQL) both Versions authored by Murtaza R.E. This function is provided on AS IS WHERE IS BASIS
    ---This peice of code can be freely used for all puposes, however please Do Not Forget to mention the source
    ---Suggestions and Bugs can be send to me at murtaza1972 at gmail dot com, I do not assure an immediate fix, but will try as time permits
    ---If you find this peice of code helpful, please do drop me a mail, this will encourage me to do something more creative
    DECLARE @sRetVal AS VARCHAR(400), @RUP AS NVARCHAR(10), @PAISE AS NVARCHAR(10), @ONLY AS NVARCHAR(10)
    DECLARE @curr AS MONEY, @strFirst AS VARCHAR(100), @lngDeciLen AS INT, @strDeci AS VARCHAR(100)
    DECLARE @i AS INT, @rstDeci AS VARCHAR(100), @strNum as VARCHAR(400), @lngNum AS INT, @rstNum AS VARCHAR(400)
    DECLARE @rstWord AS VARCHAR(400)
    SET @RUP =
         CASE
              WHEN (@bPrefixCurrencyName = 1) THEN 'Rupees'
              ELSE ''
         END
    SET @PAISE = 'Paise'
    SET @ONLY = 'Only'
    SET @curr = @curNumber
    IF @curr < 0
    BEGIN     
         SET @sRetVal = NULL
    END
    IF @curr = 0
    BEGIN
         SET @sRetVal = @RUP + ' Zero ' + @ONLY
    END
    SET @strFirst = LTRIM(STR(@curNumber,30,2))
    SET @lngDeciLen =
         CASE
              WHEN PATINDEX('%.%',@strFirst) > 0 THEN (LEN(@strFirst)-PATINDEX('%.%',@strFirst))
              ELSE 0
         END
    IF @lngDeciLen <> 0
    BEGIN
         SET @i = CASE
                   WHEN PATINDEX('%.%',@strFirst) > 0 THEN (PATINDEX('%.%',@strFirst) + 1)
                   ELSE 0
              END
         SET @strDeci = dbo.I_Mid(@strFirst, @i, @lngDeciLen)
    END
    ELSE
    BEGIN
         SET @strDeci = '0'
    END
    SET @strDeci =
         CASE
              WHEN LEN(@strDeci) = 1 THEN (@strDeci + '0')
              ELSE @strDeci
         END
    SET @rstDeci = dbo.I_CN2W_GetTens(@strDeci)
    SET @i =
         CASE
              WHEN PATINDEX('%.%', @strFirst)>0 THEN (PATINDEX('%.%',@strFirst)-1)
              ELSE LEN(@strFirst)
         END
    SET @strNum = dbo.I_Mid(@strFirst,1,@i)
    IF (@strNum IS NULL) OR (LEN(@strNum)=0)
    BEGIN
         SET @strNum = '0'
    END
    IF CONVERT(MONEY,@strNum) <= 99999
    BEGIN
         SET @lngNum = CONVERT(INT,@strNum)
         SET @rstNum =
              CASE
                   WHEN (@lngNum <= 20) THEN dbo.I_CN2W_GetWord(@lngNum)
                   WHEN ((@lngNum > 21) AND (@lngNum <= 99)) THEN dbo.I_CN2W_GetTens(@strNum)
                   WHEN ((@lngNum > 99) AND (@lngNum <= 999)) THEN dbo.I_CN2W_GetHundreds(@strNum)
                   WHEN ((@lngNum > 999) AND (@lngNum <= 99999)) THEN dbo.I_CN2W_GetThousands(@strNum)
              END
    END
    IF CONVERT(MONEY,@strNum) > 99999
    BEGIN
         SET @rstNum =
              CASE
                   WHEN ((CONVERT(MONEY,@strNum) > 99999) AND (CONVERT(MONEY,@strNum) <= 9999999)) THEN dbo.I_CN2W_GetLakhs(@strNum)
                   WHEN ((CONVERT(MONEY,@strNum) > 9999999) AND (CONVERT(MONEY,@strNum) <= 999999999)) THEN dbo.I_CN2W_GetCrores(@strNum)
                   WHEN ((CONVERT(MONEY,@strNum) > 999999999) AND (CONVERT(MONEY,@strNum) <= 99999999999)) THEN dbo.I_CN2W_GetArabs(@strNum)
                   WHEN (CONVERT(MONEY,@strNum) <= 10000000000000) THEN dbo.I_CN2W_GetKharabs(@strNum)
                   WHEN (CONVERT(MONEY,@strNum) > 10000000000000) THEN dbo.I_CN2W_GetAbvKharab(@strNum)
              END
    END
    IF (LEN(RTRIM(LTRIM(@rstDeci))) = 0) OR (@rstDeci IS NULL)
    BEGIN
         SET @rstWord = @RUP + ' ' + @rstNum + ' ' + @ONLY
    END
    ELSE
    BEGIN
         IF (LEN(RTRIM(LTRIM(@rstNum))) > 0) OR (@rstNum IS NOT NULL)
         BEGIN
              SET @rstWord = @RUP + ' ' + @rstNum + ' and ' + @rstDeci + ' ' + @PAISE + ' ' + @ONLY
         END
         ELSE
         BEGIN
              SET @rstWord = @rstDeci + ' ' + @PAISE + ' ' + @ONLY
         END
    END
    SET @sRetVal =
         CASE
              WHEN ((LEN(RTRIM(LTRIM(@rstWord)))=0) OR (@rstWord IS NULL)) THEN 'Zero'
              ELSE REPLACE(RTRIM(LTRIM(@rstWord)),'  ',' ')
         END     
    RETURN (@sRetVal)
    END
    Step 3:
    Code in SBO_SP_TransactionNotification
    IF ((@object_type = '46') AND (@transaction_type = 'A')) -- Outgoing PAYMENT
    BEGIN
         DECLARE @sWords AS VARCHAR(400), @iValue AS MONEY
         SET @error = 46
         SET @iValue = (SELECT [CheckSum] FROM dbo.OVPM WHERE DocEntry = @list_of_cols_val_tab_del)
         SET @sWords =
              CASE
                   WHEN @iValue > 0 THEN dbo.I_ConvertN2W(@iValue,0) --call the function only when the value is more than 0
              END
         UPDATE dbo.OVPM
              SET U_AmountInWord = @sWords
              WHERE ((DocEntry = @list_of_cols_val_tab_del) AND ([CheckSum]>0)) --we want to update only when the means of payment is by cheque
         SET @error = 0 --success
    END
    xxxxxxxxxxxxxxxENDxxxxxxxxxxxxxxxxxx---
    This is being currently used by me, and works fine for me, I hope this will be useful to you and others
    Regards,
    Murtaza R.E.

  • Amount in Words (Indian Rupees)

    Dear All,
    I am using SAP 2007B PL 18.I have found out the below mentioned function for converting the amount to words in SDN only. But when i try and create the function it gives error "Incorrect Syntax near 00' . I think there is an incomplete syntax near the SubString function. Can someone please help me on the same and give the correct function.
    Create function [dbo].[AmountToWords] ( @InNumber Numeric(18,2) )
    --Returns the number as words.
    returns VARCHAR(2000)
    as
    BEGIN
    SET NoCount ON
    Declare @Num Varchar(20)
    Declare @Dec Varchar(3)
    Declare @Return Varchar(2000)
    Set @Dec = SubString(Convert(Varchar(20),@Innumber),Len(Convert(Varchar(20),@Innumber))-2,3)
    Set @Num = SubString(Convert(Varchar(20),@Innumber),1, Len(Convert(Varchar(20),@Innumber))-3)
    Declare @Hundred Char(8) Declare @HundredAnd Char(12) Declare @Thousand Char(9)
    Declare @Lakh Char(5)
    Declare @Lakhs Char(6)
    Declare @Crore Char(6)
    Declare @Crores Char(7)
    Set @Hundred = 'Hundred '
    Set @Thousand = 'Thousand '
    Set @Lakh = 'Lakh '
    Set @Lakhs = 'Lakhs '
    Set @Crore = 'Crore '
    Set @Crores = 'Crores '
    Set @HundredAnd = 'Hundred and '
    if Len(@Num) = 1
    -- One
    Begin
    Set @Return = dbo.GetTextValue(@Num)
    End
    Else if Len(@Num) = 2
    -- Ten
    Begin
    Set @Return = dbo.GetTextValue(@Num)
    End
    Else if Len(@Num) = 3
    -- Hundred
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Hundred
    IF SubString(@num,2,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2))
    End
    Else if Len(@Num) = 4
    -- thousand
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Thousand
    If SubString(@Num,2,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,1)) + @Hundred
    IF SubString(@num,3,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2))
    End
    Else if Len(@Num) = 5
    -- Ten Thousand
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Thousand
    If SubString(@Num,3,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,1)) + @Hundred
    IF SubString(@num,4,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2))
    End
    Else if Len(@Num) = 6
    -- Lakh
    Begin
    If SubString(@Num,1,1) = '1'
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakh
    Else
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakhs
    If SubString(@Num,2,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Thousand
    If SubString(@Num,4,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,1)) + @Hundred
    IF SubString(@num,5,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2))
    End
    Else if Len(@Num) = 7
    -- Ten Lakhs
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Lakhs
    If SubString(@Num,3,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Thousand
    If SubString(@Num,6,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,1)) + @Hundred
    IF SubString(@num,6,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2))
    End
    Else if Len(@Num) = 8
    -- Crore
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Crore
    If SubString(@Num,2,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Lakhs
    If SubString(@Num,4,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Thousand
    If SubString(@Num,6,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,1)) + @Hundred
    IF SubString(@num,7,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2))
    End
    Else if Len(@Num) = 9
    -- Ten Crore
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Crores
    If SubString(@Num,3,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Lakhs
    If SubString(@Num,5,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Thousand
    If SubString(@Num,7,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,1)) + @Hundred
    IF SubString(@num,8,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2))
    End
    Else if Len(@Num) = 10
    -- Hundred Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Hundred
    IF Substring(@Num,2,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,4,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Lakhs
    If SubString(@Num,6,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Thousand
    If SubString(@Num,8,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,1)) + @Hundred
    IF SubString(@num,9,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2))
    End
    Else if Len(@Num) = 11
    -- Thousand Crore
    Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Thousand
    IF SubString(@Num,2,1) '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,1)) + @Hundred
    IF Substring(@Num,3,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2))
    Set @Return = @Return + @Crores If SubString(@Num,5,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Lakhs
    If SubString(@Num,7,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Thousand
    If SubString(@Num,9,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,1)) + @Hundred
    IF SubString(@num,10,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2))
    End
    Else if Len(@Num) = 12
    -- Ten thousand Crore
    Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Thousand
    IF SubString(@Num,3,1) '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,1)) + @Hundred
    IF Substring(@Num,4,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2))
    Set @Return = @Return + @Crores If SubString(@Num,6,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Lakhs
    If SubString(@Num,8,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Thousand
    If SubString(@Num,10,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,1)) + @Hundred
    IF SubString(@num,11,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,2))
    End
    Else if Len(@Num) = 13
    -- Lakh Crore
    Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Lakh
    If Substring(@Num,2,2) '00'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,2)) + @Thousand
    IF SubString(@Num,4,1) '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,4,1)) + @Hundred
    IF Substring(@Num,5,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,7,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Lakhs
    If SubString(@Num,9,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2)) + @Thousand
    If SubString(@Num,11,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,1)) + @Hundred
    IF SubString(@num,12,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,2))
    End
    Else if Len(@Num) = 14
    -- Ten Lakh Crore
    Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Lakhs
    If Substring(@Num,3,2) '00'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,2)) + @Thousand
    IF SubString(@Num,5,1) '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,5,1)) + @Hundred
    IF Substring(@Num,6,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2))
    Set @Return = @Return + @Crores If SubString(@Num,8,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Lakhs
    If SubString(@Num,10,2) '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2)) + @Thousand
    If SubString(@Num,12,1) '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,1)) + @Hundred
    IF SubString(@num,13,2) '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,13,2))
    End
    If @Dec '.00'
    Set @Return = @Return + 'Rupees And ' + dbo.GetTextValue(SubString(@Dec,2,2)) + 'Paise Only'
    ELSE
    Set @Return =@Return+'Zero Rupees Only'
    Return @return
    End
    CREATE Function [dbo].[GetTextValue] ( @dblNumber Numeric )
    Returns Varchar(1000)
    As
    Begin
    Declare @StrWord Varchar(400)
    SET @strWord = Case @dblNumber
    When 1 Then 'One '
    When 2 Then 'Two '
    When 3 Then 'Three '
    When 4 Then 'Four '
    When 5 Then 'Five '
    When 6 Then 'Six '
    When 7 Then 'Seven '
    When 8 Then 'Eight '
    When 9 Then 'Nine '
    When 10 Then 'Ten '
    When 11 Then 'Eleven '
    When 12 Then 'Twelve '
    When 13 Then 'Thirteen '
    When 14 Then 'Fourteen '
    When 15 Then 'Fifteen '
    When 16 Then 'Sixteen '
    When 17 Then 'Seventeen '
    When 18 Then 'Eighteen '
    When 19 Then 'Nineteen '
    When 20 Then 'Twenty '
    When 21 Then 'Twenty One '
    When 22 Then 'Twenty Two '
    When 23 Then 'Twenty Three '
    When 24 Then 'Twenty Four '
    When 25 Then 'Twenty Five '
    When 26 Then 'Twenty Six '
    When 27 Then 'Twenty Seven '
    When 28 Then 'Twenty Eight '
    When 29 Then 'Twenty Nine '
    When 30 Then 'Thirty '
    When 31 Then 'Thirty One '
    When 32 Then 'Thirty Two '
    When 33 Then 'Thirty Three '
    When 34 Then 'Thirty Four '
    When 35 Then 'Thirty Five '
    When 36 Then 'Thirty Six '
    When 37 Then 'Thirty Seven '
    When 38 Then 'Thirty Eight '
    When 39 Then 'Thirty Nine '
    When 40 Then 'Fourty '
    When 41 Then 'Fourty One '
    When 42 Then 'Fourty Two '
    When 43 Then 'Fourty Three '
    When 44 Then 'Fourty Four '
    When 45 Then 'Fourty Five '
    When 46 Then 'Fourty Six '
    When 47 Then 'Fourty Seven '
    When 48 Then 'Fourty Eight '
    When 49 Then 'Fourty Nine '
    When 50 Then 'Fifty '
    When 51 Then 'Fifty One '
    When 52 Then 'Fifty Two '
    When 53 Then 'Fifty Three '
    When 54 Then 'Fifty Four '
    When 55 Then 'Fifty Five '
    When 56 Then 'Fifty Six '
    When 57 Then 'Fifty Seven '
    When 58 Then 'Fifty Eight '
    When 59 Then 'Fifty Nine '
    When 60 Then 'Sixty '
    When 61 Then 'Sixty One '
    When 62 Then 'Sixty Two '
    When 63 Then 'Sixty Three '
    When 64 Then 'Sixty Four '
    When 65 Then 'Sixty Five '
    When 66 Then 'Sixty Six '
    When 67 Then 'Sixty Seven '
    When 68 Then 'Sixty Eight '
    When 69 Then 'Sixty Nine '
    When 70 Then 'Seventy '
    When 71 Then 'Seventy One '
    When 72 Then 'Seventy Two '
    When 73 Then 'Seventy Three '
    When 74 Then 'Seventy Four '
    When 75 Then 'Seventy Five '
    When 76 Then 'Seventy Six '
    When 77 Then 'Seventy Seven '
    When 78 Then 'Seventy Eight '
    When 79 Then 'Seventy Nine '
    When 80 Then 'Eighty '
    When 81 Then 'Eighty One '
    When 82 Then 'Eighty Two '
    When 83 Then 'Eighty Three '
    When 84 Then 'Eighty Four '
    When 85 Then 'Eighty Five '
    When 86 Then 'Eighty Six '
    When 87 Then 'Eighty Seven '
    When 88 Then 'Eighty Eight '
    When 89 Then 'Eighty Nine '
    When 90 Then 'Ninety '
    When 91 Then 'Ninety One '
    When 92 Then 'Ninety Two '
    When 93 Then 'Ninety Three '
    When 94 Then 'Ninety Four '
    When 95 Then 'Ninety Five '
    When 96 Then 'Ninety Six '
    When 97 Then 'Ninety Seven '
    When 98 Then 'Ninety Eight '
    When 99 Then 'Ninety Nine '
    When 100 Then 'One hundred '
    else ' '
    End
    Return @strWord
    End
    Regards,
    Rahul

    Dear Rahul,
    Try this,
    ->> Create 1 UDF in Header on Requrie Documents (ex. Marketing Documents).
    ->> Create 3 Function in MSSQL Server Management.
    ->> Create 1 FMS in Query Generator and save as Query Manager then Assign to UDF for Amount in Words.
    for example:
    Create UDF in Header on Marketing Documents.
    ->> Choose Tools on Top menu.
    ->> User - Defined Fields. -> User Manage Fields.
    ->> Open the User Manage Fields Widnow.
    ->> Marketing Documents. -> Title.
    ->> Select Title and Click Add button in Bottom on User Manage Fields Window.
    ->> Create Amount in Words UDF(Code, Discription and Type - Character) and Add the UDF.
    Create Function in MSSQL Server Management.
    Check this Link, (have 3 Functions in Link).
    http://techcreeze.blogspot.com/2008/11/convert-amount-into-words-according-to_15.html
    1st Funciton - to Convert one Digit Number to words
    2nd Funciton - to convert 2 digit number to words.
    3rd Funciton - to convert amt in numbers to words.
    ->> Open the MSSQL Server Management Window.
    ->> Choose your Company database and Create NEW Query.
    ->> Create 3 Function Queries one by one.
    ->> Create 3 NEW Query Tab and 1st one put the 1st Function then Run the Function. and
    2nd New Query tab put the 2nd Function then Run the Function.
    3rd New Query tab put the 3rd Function then Run the Function.
    Create FMS in Query Generator and Save as Query Manager.
    ->> Adminstration.
    ->> Reports. -> Query Generator.
    ->> Open the Query Generator and put the below FMS query.
    for example : Purchase Order Doc. Toal(in wrods).
    declare @Doc_total numeric (19,6)
    set @Doc_total=$[OPOR.DocTotal]
    select  dbo.fNumToWords (@Doc_total)
    ->> Assign the FMS in UDF on Purchase Order.
    ->> Auto Refresh of Document Total.
    Ex.
    1. Goto the UDF and Clcik ShiftAltF2.
    2. Select the SEARCH BY SAVED QUERY.
    3. Assign the FMS Query.
    4. Select the AUTO REFRESH WHEN FIELD CHENGES.
    5. Select Document Total.
    6. Check the Display Saved Values.

  • Amount in words in indian format

    Dear All,
    I have refer this link to get amount in words in indian format.but it is showing me error.what i copied in sql is -
    *if exists (select * from dbo.sysobjects where id = object_id(N'dbo.AmountToWords') and xtype in (N'FN', N'IF', N'TF')) drop function dbo.AmountToWords GO if exists (select * from dbo.sysobjects where id = object_id(N'dbo.GetTextValue') and xtype in (N'FN', N'IF', N'TF')) drop function dbo.GetTextValue GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO CREATE function AmountToWords ( @InNumber Numeric(18,2) ) --Returns the number as words. returns VARCHAR(2000) as BEGIN --SEt NoCount ON Declare @Num Varchar(20) Declare @Dec Varchar(3) Declare @Return Varchar(2000) Set @Dec = SubString(Convert(Varchar(20),@Innumber),Len(Convert(Varchar(20),@Innumber))-2,3) Set @Num = SubString(Convert(Varchar(20),@Innumber),1, Len(Convert(Varchar(20),@Innumber))-3) Declare @Hundred Char(8) Declare @HundredAnd Char(12) Declare @Thousand Char(9) Declare @Lakh Char(5) Declare @Lakhs Char(6) Declare @Crore Char(6) Declare @Crores Char(7) Set @Hundred = 'Hundred ' Set @Thousand = 'Thousand ' Set @Lakh = 'Lakh ' Set @Lakhs = 'Lakhs ' Set @Crore = 'Crore ' Set @Crores = 'Crores ' Set @HundredAnd = 'Hundred and ' if Len(@Num) = 1 -- One Begin Set @Return = dbo.GetTextValue(@Num) End Else if Len(@Num) = 2 -- Ten Begin Set @Return = dbo.GetTextValue(@Num) End Else if Len(@Num) = 3 -- Hundred Begin Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Hundred IF SubString(@num,2,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) End Else if Len(@Num) = 4 -- thousand Begin Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Thousand If SubString(@Num,2,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,1)) + @Hundred IF SubString(@num,3,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) End Else if Len(@Num) = 5 -- Ten Thousand Begin Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Thousand If SubString(@Num,3,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,1)) + @Hundred IF SubString(@num,4,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) End Else if Len(@Num) = 6 -- Lakh Begin If SubString(@Num,1,1) = '1' Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakh Else Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakhs If SubString(@Num,2,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Thousand If SubString(@Num,4,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,1)) + @Hundred IF SubString(@num,5,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) End Else if Len(@Num) = 7 -- Ten Lakhs Begin Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Lakhs If SubString(@Num,3,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Thousand If SubString(@Num,6,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,1)) + @Hundred IF SubString(@num,6,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) End Else if Len(@Num) = 8 -- Crore Begin Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Crore If SubString(@Num,2,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Lakhs If SubString(@Num,4,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Thousand If SubString(@Num,6,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,1)) + @Hundred IF SubString(@num,7,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) End Else if Len(@Num) = 9 -- Ten Crore Begin Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Crores If SubString(@Num,3,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Lakhs If SubString(@Num,5,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Thousand If SubString(@Num,7,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,1)) + @Hundred IF SubString(@num,8,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) End Else if Len(@Num) = 10 -- Hundred Crore Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Hundred IF Substring(@Num,2,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) Set @Return = @Return + @Crores If SubString(@Num,4,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Lakhs If SubString(@Num,6,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Thousand If SubString(@Num,8,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,1)) + @Hundred IF SubString(@num,9,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2)) End Else if Len(@Num) = 11 -- Thousand Crore Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Thousand IF SubString(@Num,2,1) '0' Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,1)) + @Hundred IF Substring(@Num,3,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) Set @Return = @Return + @Crores If SubString(@Num,5,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Lakhs If SubString(@Num,7,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Thousand If SubString(@Num,9,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,1)) + @Hundred IF SubString(@num,10,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2)) End Else if Len(@Num) = 12 -- Ten thousand Crore Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Thousand IF SubString(@Num,3,1) '0' Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,1)) + @Hundred IF Substring(@Num,4,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) Set @Return = @Return + @Crores If SubString(@Num,6,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Lakhs If SubString(@Num,8,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Thousand If SubString(@Num,10,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,1)) + @Hundred IF SubString(@num,11,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,2)) End Else if Len(@Num) = 13 -- Lakh Crore Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Lakh If Substring(@Num,2,2) '00' Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,2)) + @Thousand IF SubString(@Num,4,1) '0' Set @Return = @Return + dbo.GetTextValue(Substring(@Num,4,1)) + @Hundred IF Substring(@Num,5,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) Set @Return = @Return + @Crores If SubString(@Num,7,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Lakhs If SubString(@Num,9,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2)) + @Thousand If SubString(@Num,11,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,1)) + @Hundred IF SubString(@num,12,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,2)) End Else if Len(@Num) = 14 -- Ten Lakh Crore Begin Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Lakhs If Substring(@Num,3,2) '00' Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,2)) + @Thousand IF SubString(@Num,5,1) '0' Set @Return = @Return + dbo.GetTextValue(Substring(@Num,5,1)) + @Hundred IF Substring(@Num,6,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) Set @Return = @Return + @Crores If SubString(@Num,8,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Lakhs If SubString(@Num,10,2) '00' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2)) + @Thousand If SubString(@Num,12,1) '0' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,1)) + @Hundred IF SubString(@num,13,2) '00' Set @Return = @Return + 'And ' Set @Return = @Return + dbo.GetTextValue(SubString(@Num,13,2)) End If @Dec '.00' Set @Return = @Return + 'Rupees And ' + dbo.GetTextValue(SubString(@Dec,2,2)) + 'Paise' ELSE Set @Return =@Return +'Rupees' Return @return End GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE Function dbo.GetTextValue ( @dblNumber Numeric ) Returns Varchar(1000) As Begin Declare @StrWord Varchar(400) SEt @strWord = Case @dblNumber When 1 Then 'One ' When 2 Then 'Two ' When 3 Then 'Three ' When 4 Then 'Four ' When 5 Then 'Five ' When 6 Then 'Six ' When 7 Then 'Seven ' When 8 Then 'Eight ' When 9 Then 'Nine ' When 10 Then 'Ten ' When 11 Then 'Eleven ' When 12 Then 'Twelve ' When 13 Then 'Thirteen ' When 14 Then 'Fourteen ' When 15 Then 'Fifteen ' When 16 Then 'Sixteen ' When 17 Then 'Seventeen ' When 18 Then 'Eighteen ' When 19 Then 'Nineteen ' When 20 Then 'Twenty ' When 21 Then 'Twenty One ' When 22 Then 'Twenty Two ' When 23 Then 'Twenty Three ' When 24 Then 'Twenty Four ' When 25 Then 'Twenty Five ' When 26 Then 'Twenty Six ' When 27 Then 'Twenty Seven ' When 28 Then 'Twenty Eight ' When 29 Then 'Twenty Nine ' When 30 Then 'Thirty ' When 31 Then 'Thirty One ' When 32 Then 'Thirty Two ' When 33 Then 'Thirty Three ' When 34 Then 'Thirty Four ' When 35 Then 'Thirty Five ' When 36 Then 'Thirty Six ' When 37 Then 'Thirty Seven ' When 38 Then 'Thirty Eight ' When 39 Then 'Thirty Nine ' When 40 Then 'Fourty ' When 41 Then 'Fourty One ' When 42 Then 'Fourty Two ' When 43 Then 'Fourty Three ' When 44 Then 'Fourty Four ' When 45 Then 'Fourty Five ' When 46 Then 'Fourty Six ' When 47 Then 'Fourty Seven ' When 48 Then 'Fourty Eight ' When 49 Then 'Fourty Nine ' When 50 Then 'Fifty ' When 51 Then 'Fifty One ' When 52 Then 'Fifty Two ' When 53 Then 'Fifty Three ' When 54 Then 'Fifty Four ' When 55 Then 'Fifty Five ' When 56 Then 'Fifty Six ' When 57 Then 'Fifty Seven ' When 58 Then 'Fifty Eight ' When 59 Then 'Fifty Nine ' When 60 Then 'Sixty ' When 61 Then 'Sixty One ' When 62 Then 'Sixty Two ' When 63 Then 'Sixty Three ' When 64 Then 'Sixty Four ' When 65 Then 'Sixty Five ' When 66 Then 'Sixty Six ' When 67 Then 'Sixty Seven ' When 68 Then 'Sixty Eight ' When 69 Then 'Sixty Nine ' When 70 Then 'Seventy ' When 71 Then 'Seventy One ' When 72 Then 'Seventy Two ' When 73 Then 'Seventy Three ' When 74 Then 'Seventy Four ' When 75 Then 'Seventy Five ' When 76 Then 'Seventy Six ' When 77 Then 'Seventy Seven ' When 78 Then 'Seventy Eight ' When 79 Then 'Seventy Nine ' When 80 Then 'Eighty ' When 81 Then 'Eighty One ' When 82 Then 'Eighty Two ' When 83 Then 'Eighty Three ' When 84 Then 'Eighty Four ' When 85 Then 'Eighty Five ' When 86 Then 'Eighty Six ' When 87 Then 'Eighty Seven ' When 88 Then 'Eighty Eight ' When 89 Then 'Eighty Nine ' When 90 Then 'Ninety ' When 91 Then 'Ninety One ' When 92 Then 'Ninety Two ' When 93 Then 'Ninety Three ' When 94 Then 'Ninety Four ' When 95 Then 'Ninety Five ' When 96 Then 'Ninety Six ' When 97 Then 'Ninety Seven ' When 98 Then 'Ninety Eight ' When 99 Then 'Ninety Nine ' When 100 Then 'One hundred ' else ' ' End Return @strWord End GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO*
    but it showed me error.Let me know where i am getting wrong.
    I also  created 1 UDF on the document where you want the amount in words as per indian format. run the query generateor,paste the below query... and save it. declare @Doc_total numeric (19,6) set @Doc_total=$[OINV.DocTotal] select dbo.AmountToWords (@Doc_total) now apply formated search on the UDF you created(For e.g. i created on SALes Invoice) refresh regularly on doctotal. now choose that UDF on pld. Hope this will help u. Regards, Neetu
    Regards-
    Mona.

    Dear,,
    Run the below functions in your database:
                                                                                    Create function [dbo].[AmountToWords]
    @InNumber Numeric(18,2)
    --Returns the number as words.
    returns VARCHAR(2000)
    as
    BEGIN
    --SEt NoCount ON
    Declare @Num Varchar(20)
    Declare @Dec Varchar(3)
    Declare @Return Varchar(2000)
    Set @Dec = SubString(Convert(Varchar(20),@Innumber),Len(Convert(Varchar(20),@Innumber))-2,3)
    Set @Num = SubString(Convert(Varchar(20),@Innumber),1, Len(Convert(Varchar(20),@Innumber))-3)
    Declare @Hundred Char(8)
    Declare @HundredAnd Char(12)
    Declare @Thousand Char(9)
    Declare @Lakh Char(5)
    Declare @Lakhs Char(6)
    Declare @Crore Char(6)
    Declare @Crores Char(7)
    Set @Hundred = 'Hundred '
    Set @Thousand = 'Thousand '
    Set @Lakh = 'Lakh '
    Set @Lakhs = 'Lakhs '
    Set @Crore = 'Crore '
    Set @Crores = 'Crores '
    Set @HundredAnd = 'Hundred and '
    if Len(@Num) = 1 -- One
    Begin
    Set @Return = dbo.GetTextValue(@Num)
    End
    Else if Len(@Num) = 2 -- Ten
    Begin
    Set @Return = dbo.GetTextValue(@Num)
    End
    Else if Len(@Num) = 3 -- Hundred
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Hundred
    IF SubString(@num,2,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2))
    End
    Else if Len(@Num) = 4 -- thousand
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Thousand
    If SubString(@Num,2,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,1)) + @Hundred
    IF SubString(@num,3,2)  <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2))
    End
    Else if Len(@Num) = 5 -- Ten Thousand
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Thousand
    If SubString(@Num,3,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,1)) + @Hundred
    IF SubString(@num,4,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2))
    End
    Else if Len(@Num) = 6 -- Lakh
    Begin
    If SubString(@Num,1,1) = '1'
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakh
    Else
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Lakhs
    If SubString(@Num,2,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Thousand
    If SubString(@Num,4,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,1)) + @Hundred
    IF SubString(@num,5,2)  <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2))
    End
    Else if Len(@Num) = 7 -- Ten Lakhs
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Lakhs
    If SubString(@Num,3,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Thousand
    If SubString(@Num,6,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,1)) + @Hundred
    IF SubString(@num,6,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2))
    End
    Else if Len(@Num) = 8 -- Crore
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,1)) + @Crore
    If SubString(@Num,2,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2)) + @Lakhs
    If SubString(@Num,4,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Thousand
    If SubString(@Num,6,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,1)) + @Hundred
    IF SubString(@num,7,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2))
    End
    Else if Len(@Num) = 9 -- Ten Crore
    Begin
    Set @Return = dbo.GetTextValue(SubString(@Num,1,2)) + @Crores
    If SubString(@Num,3,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2)) + @Lakhs
    If SubString(@Num,5,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Thousand
    If SubString(@Num,7,1)  <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,1)) + @Hundred
    IF SubString(@num,8,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2))
    End
    Else if Len(@Num) = 10 -- Hundred Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Hundred
    IF Substring(@Num,2,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,2,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,4,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2)) + @Lakhs
    If SubString(@Num,6,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Thousand
    If SubString(@Num,8,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,1)) + @Hundred
    IF SubString(@num,9,2)  <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2))
    End
    Else if Len(@Num) = 11 -- Thousand Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Thousand
    IF SubString(@Num,2,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,1)) + @Hundred
    IF Substring(@Num,3,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,3,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,5,2) <>'00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2)) + @Lakhs
    If SubString(@Num,7,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Thousand
    If SubString(@Num,9,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,1)) + @Hundred
    IF SubString(@num,10,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2))
    End
    Else if Len(@Num) = 12 -- Ten thousand Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Thousand
    IF SubString(@Num,3,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,1)) + @Hundred
    IF Substring(@Num,4,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,4,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,6,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2)) + @Lakhs
    If SubString(@Num,8,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Thousand
    If SubString(@Num,10,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,1)) + @Hundred
    IF SubString(@num,11,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,2))
    End
    Else if Len(@Num) = 13 -- Lakh Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,1)) + @Lakh
    If Substring(@Num,2,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,2,2)) + @Thousand
    IF SubString(@Num,4,1)  <> '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,4,1)) + @Hundred
    IF Substring(@Num,5,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,5,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,7,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,7,2)) + @Lakhs
    If SubString(@Num,9,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,9,2)) + @Thousand
    If SubString(@Num,11,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,11,1)) + @Hundred
    IF SubString(@num,12,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,2))
    End
    Else if Len(@Num) = 14 -- Ten Lakh Crore
    Begin
    Set @Return = dbo.GetTextValue(Substring(@Num,1,2)) + @Lakhs
    If Substring(@Num,3,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,3,2)) + @Thousand
    IF SubString(@Num,5,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(Substring(@Num,5,1)) + @Hundred
    IF Substring(@Num,6,2)  <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,6,2))
    Set @Return = @Return + @Crores
    If SubString(@Num,8,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,8,2)) + @Lakhs
    If SubString(@Num,10,2) <> '00'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,10,2)) + @Thousand
    If SubString(@Num,12,1) <> '0'
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,12,1)) + @Hundred
    IF SubString(@num,13,2) <> '00'
    Set @Return = @Return + 'And '
    Set @Return = @Return + dbo.GetTextValue(SubString(@Num,13,2))
    End
    If @Dec  <> '.00'
    Set @Return = @Return + 'Rupees And ' + dbo.GetTextValue(SubString(@Dec,2,2)) + 'Paise Only'
    ELSE
    Set @Return =@Return+'Zero Rupees Only'
    Return @return
    End
    CREATEFunction [dbo].[GetTextValue]
    @dblNumber Numeric
    Returns Varchar(1000)
    As
    Begin
    Declare @StrWord Varchar(400)
    SEt @strWord = Case @dblNumber
    When 1 Then 'One '
    When 2 Then 'Two '
    When 3 Then 'Three '
    When 4 Then 'Four '
    When 5 Then 'Five '
    When 6 Then 'Six '
    When 7 Then 'Seven '
    When 8 Then 'Eight '
    When 9 Then 'Nine '
    When 10 Then 'Ten '
    When 11 Then 'Eleven '
    When 12 Then 'Twelve '
    When 13 Then 'Thirteen '
    When 14 Then 'Fourteen '
    When 15 Then 'Fifteen '
    When 16 Then 'Sixteen '
    When 17 Then 'Seventeen '
    When 18 Then 'Eighteen '
    When 19 Then 'Nineteen '
    When 20 Then 'Twenty '
    When 21 Then 'Twenty One '
    When 22 Then 'Twenty Two '
    When 23 Then 'Twenty Three '
    When 24 Then 'Twenty Four '
    When 25 Then 'Twenty Five '
    When 26 Then 'Twenty Six '
    When 27 Then 'Twenty Seven '
    When 28 Then 'Twenty Eight '
    When 29 Then 'Twenty Nine '
    When 30 Then 'Thirty '
    When 31 Then 'Thirty One '
    When 32 Then 'Thirty Two '
    When 33 Then 'Thirty Three '
    When 34 Then 'Thirty Four '
    When 35 Then 'Thirty Five '
    When 36 Then 'Thirty Six '
    When 37 Then 'Thirty Seven '
    When 38 Then 'Thirty Eight '
    When 39 Then 'Thirty Nine '
    When 40 Then 'Fourty '
    When 41 Then 'Fourty One '
    When 42 Then 'Fourty Two '
    When 43 Then 'Fourty Three '
    When 44 Then 'Fourty Four '
    When 45 Then 'Fourty Five '
    When 46 Then 'Fourty Six '
    When 47 Then 'Fourty Seven '
    When 48 Then 'Fourty Eight '
    When 49 Then 'Fourty Nine '
    When 50 Then 'Fifty '
    When 51 Then 'Fifty One '
    When 52 Then 'Fifty Two '
    When 53 Then 'Fifty Three '
    When 54 Then 'Fifty Four '
    When 55 Then 'Fifty Five '
    When 56 Then 'Fifty Six '
    When 57 Then 'Fifty Seven '
    When 58 Then 'Fifty Eight '
    When 59 Then 'Fifty Nine '
    When 60 Then 'Sixty '
    When 61 Then 'Sixty One '
    When 62 Then 'Sixty Two '
    When 63 Then 'Sixty Three '
    When 64 Then 'Sixty Four '
    When 65 Then 'Sixty Five '
    When 66 Then 'Sixty Six '
    When 67 Then 'Sixty Seven '
    When 68 Then 'Sixty Eight '
    When 69 Then 'Sixty Nine '
    When 70 Then 'Seventy '
    When 71 Then 'Seventy One '
    When 72 Then 'Seventy Two '
    When 73 Then 'Seventy Three '
    When 74 Then 'Seventy Four '
    When 75 Then 'Seventy Five '
    When 76 Then 'Seventy Six '
    When 77 Then 'Seventy Seven '
    When 78 Then 'Seventy Eight '
    When 79 Then 'Seventy Nine '
    When 80 Then 'Eighty '
    When 81 Then 'Eighty One '
    When 82 Then 'Eighty Two '
    When 83 Then 'Eighty Three '
    When 84 Then 'Eighty Four '
    When 85 Then 'Eighty Five '
    When 86 Then 'Eighty Six '
    When 87 Then 'Eighty Seven '
    When 88 Then 'Eighty Eight '
    When 89 Then 'Eighty Nine '
    When 90 Then 'Ninety '
    When 91 Then 'Ninety One '
    When 92 Then 'Ninety Two '
    When 93 Then 'Ninety Three '
    When 94 Then 'Ninety Four '
    When 95 Then 'Ninety Five '
    When 96 Then 'Ninety Six '
    When 97 Then 'Ninety Seven '
    When 98 Then 'Ninety Eight '
    When 99 Then 'Ninety Nine '
    When 100 Then 'One hundred '
    else ' '
    End
    Return @strWord
    End
    Run the query generator of SAP,paste below query.
    Apply FMS on field.
    declare @Doc_total numeric (19,6)
    set @Doc_total=$[OINV.DocTotal]
    select  dbo.AmountToWords (@Doc_total)

  • How to purge 13 million data from a table?

    Hi,
    I have a table which is 10GB in size and it has 1.6 crore rows.
    Based on some conditions i want to remove the data.
    Since there are other processes which happen simultaneously,i am scared to even query and get the dataset which i require.
    can u suggest me something..
    The table has 2 XML columns so that scares me even more :)
    First approach whcih i tahught of is (which is normally practised for purging)
    create a copy of the table which has got data that needs to be retained.
    Secondly,purge this table
    third,rename the table to original.
    What my concern is that if i query this 2.6 crore data to get the desired result set..it will take a lot of time and will also hamper other processing.
    So...what appreaoch should i take??
    Also ,do u feel that this will require downtime.
    I am using oralce 11g
    Edited by: user8731258 on Aug 21, 2012 6:32 AM
    Edited by: user8731258 on Aug 22, 2012 5:57 AM

    user8731258 wrote:
    I guess people need not waste time on these silly things.I am sorry but even u need to show respect for others peoples language.
    Dont unnecessarily raise these issues.this forum is to share knowledge.
    Thanks.What you call Silly isn't silly, but perfectly legitimate. This being an International Forum, people not belonging (or un-aware) of Asian Subcontinental Terms would not be able to understand the jargons viz. Lakhs, Crores. In order to help people understand your problem, you should use Globally accepted terminology viz. use Million instead of 10 Lakhs etc.
    How do you react if some person posted a question using a terminology that you do not understand???
    Moreover, If you are asking for Help on Forums, you should provide sufficient information so that Volunteers would not have to Google out the Terms used in your question. You are definitely harming yourself in a way.
    Now, focusing on your original problem, if you can query out the Table and let us know how many records you wish to retain or delete, people are more than willing to help you out on it. RP and others have already provided you a short solution.

  • How can i pass input parameters to .rdf file in DOS  command prompt?

    Hi friends,
    Please give some idea about this problem.
    I am running a .rdf file at dos mode like this .
    c:\orareport\bin\RWRUN60 TEST.RDF USERNAME/PASS@DBINSTANCE
    now it asking input parameters.
    insted of passing the input values to parameter form
    can i pass at command line along with report name.
    if possible how ?
    thanx
    Reddy

    Hi,
    there is a plenty of parameters you can specify from DOC command line.
    You can have them in help menu.
    Lanch rwrun60
    Help\search\ seach for: param
    you will find parameters from rwrun60 from the command line.
    MODULErunfile
    [USERID=]userid
    [PARAMFORM=]YES
    [CMDFILE=]cmdfile
    [TERM=]termfile
    [ARRAYSIZE=]n
    [DESTYPE=]SCREEN]
    [DESNAME=]desname
    [DESFORMAT=]desformat
    [CACHELOB=]YES
    [COPIES=]n
    [CURRENCY=]currency_symbol
    [THOUSANDS=]thousands_symbol
    [DECIMAL=]decimal_symbol
    [READONLY=]YES
    [LOGFILE=]logfile
    [BUFFERS=]n
    [BATCH=]YES
    [PAGESIZE=]width x height
    [PROFILE=]profiler_file
    [RUNDEBUG=]YES
    [ONSUCCESS=]COMMIT
    [ONFAILURE=]COMMIT
    [KEYIN=]keyin_file
    [KEYOUT=]keyout_file
    [ERRFILE=]error_file
    [LONGCHUNK=]n
    [ORIENTATION=]DEFAULT
    [BACKGROUND=]YES
    [MODE=]BITMAP
    [PRINTJOB]YES
    [TRACEFILE=]tracefile
    [TRACEMODE=]{TRACE_APPEND|TRACE_REPLACE}
    [TRACEOPTS=]{TRACE_ERR|TRACE_PRF|TRACE_APP|TRACE_PLS|
    TRACE_SQL|TRACE_TMS|TRACE_DST|TRACE_ALL|(opt1, opt2, ...)}
    [AUTOCOMMIT=]YES
    [NONBLOCKSQL=]YES
    [ROLE=]rolename/[rolepassword]
    [BLANKPAGES=]YES
    [DISABLEPRINT=]YES
    [DISABLEMAIL=]YES
    [DISABLEFILE=]YES
    [DISABLENEW=]YES
    [DELIMITER=]value
    [CELLWRAPPER=]value
    [DATEFORMATMASK=]mask
    [NUMBERFORMATMASK=]mask
    [DESTINATION=]filename.DST
    [DISTRIBUTE=]YES
    [PAGESTREAM=]YES
    EXPRESS_SERVER="server=[server]/domain=[domain]/user=[userid]/password=[passwd]"
    [CUSTOMIZE]=filename.xml | (filename1.xml, filename2.xml, . . .)
    [SAVE_RDF]=filename.rdf
    <param>=value
    Mbo

  • TDS CERTIFICATE (J1INCERT) AMOUNT IN RUPEES SHOWN AS MILLION

    Hi,
    While printing TDS certificate (J1INCERT) amount in words shown as Rupees one million and three hundred only instead Rupees ten lacs and three hundred only.
    How we will get amount as lakhs.
    Thanks
    christopher.J
    9946377990

    Hi
    we used to have same problem , business wanted the amounts to be printed in Indian format e.g. lakhs ,crores etc.
    Our abaper had to write a program to solve the issue.
    thanks

Maybe you are looking for

  • I am trying to load Adobe Reader on windows 7 and I am getting an error message 1606

    teying to load Adobe Reader on windows 7 and getting an error message 1606 could not access network location c:\users\Scott\ApplicationData\ can you help with this?

  • Sending jms message from bc4j session bean

    Hi, i need to send some message from my bc4j (deployed as session bean). i have successfully deployed my mdb to listen for these message via Queue. I try to send some message from test client it works well, this the code snippet : String connectionFa

  • App update is frozen

    My iPad2 is updated regularly. Today the update froze after updating 2 apps. I have confirmed current OS release is up to date. I have turned the device off and back on. My appleID is accepted. But no more updates and I need the apps for a business t

  • Fractional Rate Line Dropping Intermittently

    Hi There, we have recently moved buildings and before our move we were running video conferencing across two pri links. We had multilink configured and were allowing a max of 10 links to come up. Everything worked well and the quality was good. Since

  • How to publish a podcast

    Steps to have a Podcast Published.  Ok so i have go daddy and it's for hosting. I have the church service already on the hosting site. What software or something do i use to create the xml or rss info so that i can publish this so i can have a link o