PDA

Ver la Versión Completa : Comprobar si una cadena contiene letras


lucia_12
30/11/09, 09:35:34
Hola a tod@s!!

Quería saber si alguien sabe la forma de comprobar si una cadena no contiene únicamente números, es decir, si contiene sólo letras, o letras y números o letras y símbolos...


Muchas gracias!!!

VLozano
30/11/09, 10:10:37
IF cadena CN '0123456789'.
crashbumbang
ENDIF.O algo por el estilo ;)

Edd_401
02/12/09, 19:35:00
1. CO (contiene solo):

c1 contiene solo caracteres desde el string c2.
Si c1 o c2 es del tipo C, la comparación toma en cuenta el largo total de la variable, incluyendo los espacios al final.
Si c1 es del tipo STRING y vacío, el resultado de la comparación es siempre positiva.
Si c2 es del tipo STRING y vacío, el resultado de la comparación es siempre negativa, a menos que c1 sea tambien un string vacío.
Si el resultado de la comparación es negativa, la variable SY-FDPOS contiene el offset del primer caracter en c1 que no está incluido en c2.
Si el resultado de la comparación es positivo, la variable SY-FDPOS contiene el largo de c1.
La comparación es sensible a minúsculas y mayúsculas.

Ejemplos:

'ABCDE' CO 'XYZ' es falso; SY-FDPOS = 0.
'ABCDE' CO 'AB' es falso; SY-FDPOS = 2.
'ABCDE' CO 'ABCDE' es verdadero; SY-FDPOS = 5.

2. CN (no solo contiene):
"c1 CN c2" es equivalente a "NOT ( c1 CO c2 )".
c1 no solo contiene caracteres de c2.
Si el resultado de la comparación es positiva, la variable SY-FDPOS contiene el offset del primer caracter en c1 que no esta en c2.
Si el resultado de la comparación es negativa, la variable SY-FDPOS contiene el largo de c1.

3. CA (contiene cualquiera):
c1 contiene a lo menos un caracter de c2.
Si c1 o c2 es del tipo C, la comparación toma en cuenta el largo total de la variable, incluyendo los espacios al final.
Si c1 o c2 es del tipo STRING y vacío, el resultado de la comparación es siempre negativa.
Si el resultado de la comparación es positiva, la variable SY-FDPOS contiene el offset del primer caracter en c1 que esta en c2.
Si el resultado de la comparación es negativa, la variable SY-FDPOS contiene el largo de c1.
La comparación es sensible a minúsculas y mayúsculas.

Ejemplos:

'ABCDE' CA 'CY' es verdadero; SY-FDPOS = 2.
'ABCDE' CA 'XY' es falso; SY-FDPOS = 5.

4. NA (no contiene cualquiera):
"c1 NA c2" es equivalente a "NOT ( c1 CA c2 )".
c1 no contiene caracteres de c2.

5. CS (contiene String):
c1 contiene a c2.
Espacios sobrantes en c1 y c2 son ignorados si se trata de variables del tipo C.
Si el resultado de la comparación es positiva, la variable SY-FDPOS contiene el offset del primer caracter de c2 en c1.
Si el resultado de la comparación es negativo, la variable SY-FDPOS contiene largo de c1.
La comparación no es sensible a minúsculas y mayúsculas.

Ejemplos:

'ABCDE' CS 'CD' es verdadero; SY-FDPOS = 2.
'ABCDE' CS 'XY' es falso; SY-FDPOS = 5.
'ABAAA' CS 'AB ' es verdadero; SY-FDPOS = 0.
' ABC' CS ' AB' es verdadero; SY-FDPOS = 1.
'ABC DEF' CS ' ' es verdadero; but: SY-FDPOS = 0,
debido a que ' ' es interpretado como como espacio sobrante y se ignora.

6. NS (no contiene string):
"c1 NS c2" es equivalente a "NOT ( c1 CS c2 )".
c1 no contiene a c2.

7. CP (contiene patrón):
El string completo c1 coincide con el patrón c2 (c1 "coincide con" c2).
El patrón c2 puede contener caracteres comunes y asteíscos '*' para cualquier string y '+' para cualquier caracter.
Si el resultado de la comparación es positiva, la variable SY-FDPOS contiene el offset del primer caracter de c2 en c1. El asterísco '*' al principio del patrón c2 es ignorado cuando se determina el valor de SY-FDPOS.
Si el resultado de la comparación es negativa, la variable SY-FDPOS contiene el largo de c1.

Ejemplos:

'ABCDE' CP '*CD*' es verdadero; SY-FDPOS = 2.
'ABCDE' CP '*CD' es falso; SY-FDPOS = 5.
'ABCDE' CP '++CD+' es verdadero; SY-FDPOS = 0.
'ABCDE' CP '+CD*' es falso; SY-FDPOS = 5.
'ABCDE' CP '*B*D*' es verdadero; SY-FDPOS = 1.

El caracter '#' tiene un significado especial. Sirve como símbolo de escape e indica que cada caracter siguiente debería ser comparado "exactamente".
Esto permite buscar por:

- caracteres en mayúsculas o minúsculas
ejemplo: c1 CP '*#A#b*'
- buscar caracteres '*', '+' como tales
ejemplo: c1 CP '*#**' o c1 CP '*#+*'
- el símbolo de escape
ejemplo: c1 CP '*##*'
- espacios al final de c1
ejemplo: c1 CP '*# '


Ejemplos:

'ABC' CP 'ABC ' es verdadero,
'ABC ' CP 'ABC' es verdadero,

pero

'ABC' CP 'ABC+' es falso,
'ABC' CP 'ABC# ' es falso,


La comparación no es sensible a minúsculas y mayúsculas.

8. NP (no contiene patrón):
"c1 NP c2" es equivalente a "NOT ( c1 CP c2 )" c1 no coincide con c2.

novato-sap
16/12/10, 08:24:11
Buenos días,

Lo que quiero es comparar es que una varible no contenga ni caracteres numéricos ni signos ortograficos. He utilizado los operadores relacionales de tal manera que se ha comparado IF variable (operador_relacional) sy-abcde y no se ha obtenido lo esperado.

De tal manera si la variable es ABCFGUI el resultado debería ser ok y si es ABFK1K el resultado debería ser ko.

Gracias.

ppchico
16/12/10, 10:50:21
Buenos días,

Lo que quiero es comparar es que una varible no contenga ni caracteres numéricos ni signos ortograficos. He utilizado los operadores relacionales de tal manera que se ha comparado IF variable (operador_relacional) sy-abcde y no se ha obtenido lo esperado.

De tal manera si la variable es ABCFGUI el resultado debería ser ok y si es ABFK1K el resultado debería ser ko.

Gracias.
te lo he puesto en este hilo:
http://www.mundosap.com/foro/showthread.php?t=40498

En tu caso, deberías hacerlo al reves... que no contenga caracteris (NOT) ni números! Si tienes alguna duda me comentas!

Un Saludo!

jeanficetola
17/12/10, 14:19:42
call function 'CHECK_AND_CONVERT_NUMERICS'
exporting
dmzei = '.'
dtype = 'DEC'
efeld = gwa_art-ean11
imp_decimals = '0'
importing
error = l_error.