alli te va una funcion, espero te sirva saludos.
/*Esta funcion convierte numeros a letras*/
/*args: pass by value type decimal name:nnumero
pass by value type string name:cgenero*/
Decimal nNumero1, nNumero2, cdec
Long a, nGrupo
String aGrupos[5], aUnidad[10], aDecena[10,10], aCentena[10]
String aConector[5], cEnLetra, cNumStr, cUnidad, cDecena, cCentena, vLetras
String Y, F, M, MIL, MILLON, MILLONES, BILLON, BILLONES
Y = 'y ';F = 'as ';M = 'os ';MIL = 'mil ';MILLON = 'millón '
MILLONES = 'millones ';BILLON = 'billón ';BILLONES = 'billones '
if ISNull(nnumero) then
Return '**Error**'
end if
IF IsNull(cGenero) THEN
cGenero = 'F'
ELSE
cGenero = UPPER(cGenero)
END IF
nNumero2 = Round( nNumero, 2)
nNumero1 = Truncate( nNumero, 0)
cdec = nNumero2 - nNumero1
cdec = Round( cdec * 100, 2)
a = cdec
// conversión a caracter del número, justificado con cero a la izquierda
cNumStr = String( nNumero1)
cNumStr = Fill( '0', 15 - Len( cNumStr)) + cNumStr
// confección de grupos
FOR nGrupo = 1 to 5
aGrupos[ 5 - nGrupo + 1 ] = Mid(cNumStr, ((nGrupo -1)*3 +1), 3)
NEXT
//Proceso
cEnLetra=''
FOR nGrupo = 5 TO 1 STEP -1
cUnidad=Right(aGrupos[nGrupo],1)
cDecena=Mid(aGrupos[nGrupo],2,1)
cCentena=Left(aGrupos[nGrupo],1)
// asignación para las unidades
IF nNumero1=0 AND nGrupo=1 THEN
aUnidad[1]='cero'
ELSE
aUnidad[1]=''
END IF
IF cDecena='1' THEN
aUnidad[2]=aDecena[2,integer(cUnidad)+1]
ELSEIF(nGrupo = 2 OR nGrupo = 4) AND aGrupos[nGrupo] = '001' THEN
aUnidad[2]=''
ELSEIF (nGrupo > 2) THEN
aUnidad[2]='un '
ELSEIF (cGenero = 'F') THEN
aUnidad[2]='una '
ELSE
aUnidad[2]='uno '
END IF
IF cDecena='1' THEN
aUnidad[3]=aDecena[2,integer(cUnidad)+1]
ELSE
aUnidad[3]='dos '
END IF
IF cDecena='1' THEN
aUnidad[4]=aDecena[2,integer(cUnidad)+1]
ELSE
aUnidad[4]='tres '
END IF
IF cDecena='1' THEN
aUnidad[5]=aDecena[2,integer(cUnidad)+1]
ELSE
aUnidad[5]='cuatro '
END IF
IF cDecena='1' THEN
aUnidad[6]=aDecena[2,integer(cUnidad)+1]
ELSE
aUnidad[6]='cinco '
END IF
IF cDecena='1' THEN
aUnidad[7]=aDecena[2,integer(cUnidad)+1]
ELSE
aUnidad[7]='seis '
END IF
IF cDecena='1' THEN
aUnidad[8]=aDecena[2,integer(cUnidad)+1]
ELSE
aUnidad[8]='siete '
END IF
IF cDecena='1' THEN
aUnidad[9]=aDecena[2,integer(cUnidad)+1]
ELSE
aUnidad[9]='ocho '
END IF
IF cDecena='1' THEN
aUnidad[10]=aDecena[2,integer(cUnidad)+1]
ELSE
aUnidad[10]='nueve '
END IF
// asignación para las decenas
aDecena[1,1]=''
IF cUnidad='0' THEN
aDecena[2,1]='diez '
ELSE
aDecena[2,1]=''
END IF
aDecena[2,2]='once '
aDecena[2,3]='doce '
aDecena[2,4]='trece '
aDecena[2,5]='catorce '
aDecena[2,6]='quince '
aDecena[2,7]='dieciseis '
aDecena[2,8]='diecisiete '
aDecena[2,9]='dieciocho '
aDecena[2,10]='diecinueve '
IF cUnidad='0' THEN
aDecena[3,1]='veinte '
ELSE
aDecena[3,1]='veinti '
END IF
IF cUnidad <> '0' THEN
aDecena[4,1] = 'treinta '+Y
ELSE
aDecena[4,1] = 'treinta '+''
END IF
IF cUnidad <> '0' THEN
aDecena[5,1] = 'cuarenta '+Y
ELSE
aDecena[5,1] = 'cuarenta '+''
END IF
IF cUnidad <> '0' THEN
aDecena[6,1] = 'cincuenta '+Y
ELSE
aDecena[6,1] = 'cincuenta '+''
END IF
IF cUnidad <> '0' THEN
aDecena[7,1] = 'sesenta '+Y
ELSE
aDecena[7,1] = 'sesenta '+''
END IF
IF cUnidad<>'0' THEN
aDecena[8,1] = 'setenta '+Y
ELSE
aDecena[8,1] = 'setenta '+''
END IF
IF cUnidad<>'0' THEN
aDecena[9,1] = 'ochenta '+Y
ELSE
aDecena[9,1] = 'ochenta '+''
END IF
IF cUnidad<>'0' THEN
aDecena[10,1] = 'noventa '+Y
ELSE
aDecena[10,1] = 'noventa '+''
END IF
// Asignación para las centenas
aCentena[1]=''
IF cDecena+cUnidad = '00' THEN
aCentena[2]='cien '
ELSE
aCentena[2]='ciento '
END IF
IF nGrupo<3 AND cGenero='F' THEN
aCentena[3]='doscient'+F
ELSE
aCentena[3]='doscient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
aCentena[4]='trescient'+F
ELSE
aCentena[4]='trescient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
aCentena[5]='cuatrocient'+F
ELSE
aCentena[5]='cuatrocient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
aCentena[6]='quinient'+F
ELSE
aCentena[6]='quinient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
aCentena[7]='seiscient'+F
ELSE
aCentena[7]='seiscient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
aCentena[8]='setecient'+F
ELSE
aCentena[8]='setecient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
aCentena[9]='ochocient'+F
ELSE
aCentena[9]='ochocient'+M
END IF
IF nGrupo<3 AND cGenero='F' THEN
aCentena[10]='novecient'+F
ELSE
aCentena[10]='novecient'+M
END IF
// Asignación para los conectores
aConector[1]=''
IF aGrupos[2]>'000' THEN
aConector[2]=MIL
ELSE
aConector[2]=''
END IF
IF aGrupos[3]>'000' OR aGrupos[4]>'000' THEN
IF aGrupos[3]='001'THEN
aConector[3]=MILLON
ELSE
aConector[3]=MILLONES
END IF
ELSE
aConector[3]=''
END IF
IF aGrupos[4]>'000' THEN
aConector[4]=MIL
ELSE
aConector[4]=''
END IF
IF aGrupos[5]>'000' THEN
IF aGrupos[5]='001' THEN
aConector[5]=BILLON
ELSE
aConector[5]=BILLONES
END IF
ELSE
aConector[5]=' '
END IF
// Completar la cifra en letras del grupo en curso
cEnLetra=cEnLetra+(aCentena[integer(cCentena)+1]+aDecena[integer(cDecena)+1,1]+aUnidad[integer(cUnidad)+1]+aConector[nGrupo])
NEXT
string cdec1
cdec1=String(a)
vLetras='***'+cEnLetra + '***'//+'y '+ cdec1+'/100 nuevos soles'
RETURN vLetras