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
RamI 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" -
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. -
hi,
i want a procedure that convert a amount (number) to amount in wordsFrom 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.Mcreate 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,
SheetalHi,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 advanceHi,
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 -
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 PiyersoapHi 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,
RahulDear 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 AMuser8731258 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
ReddyHi,
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
9946377990Hi
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
-
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
-
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