|
#1
|
|||
|
|||
No tengo una función pero esto debiera servirte como base.
data letranumero type string. data letras type string. data numeros type p decimals 0. data cnumeros type string. data offset type i. letranumero = 'ABCDYYTRE334425632'. FIND REGEX '[0-9]' in letranumero MATCH OFFSET offset. letras = letranumero(offset). numeros = letranumero+offset. cnumeros = letranumero+offset. write / letranumero. write / numeros. write / cnumeros. write / letras. Saludos Úlima edición por Mauricio Hidalgo fecha: 08/07/13 a las 18:34:37. |
#2
|
|||
|
|||
Oyeee muchas gracias funciono perfecto pero queria preguntarte algo es que soy muy nueva en sap y apenas estoy aprendiendo... me salio un pequeño inconveniente tengo un registro que es 1215CSXD56245 .... que debo cambiar....??? |
#3
|
|||
|
|||
Cambio la especificación entonces:
data letranumero type string. data letras type string. data cnumeros type string. letranumero = '12159CSXD56245'. write / letranumero. while strlen( letranumero ) > 0. if letranumero(1) CO '0123456789'. concatenate letras letranumero(1) into letras. else. concatenate cnumeros letranumero(1) into cnumeros. endif. shift letranumero by 1 places left. endwhile. write / cnumeros. write / letras. Espero te ayude Úlima edición por Mauricio Hidalgo fecha: 09/07/13 a las 14:46:17. |
#4
|
|||
|
|||
Gracias!!
Mauricio muchas gracias ya lo coloque y funciono perfecto! muchísimas gracias por tu colaboración... aprendí dos cosas nueva contigo
|
#5
|
|||
|
|||
Pregunta
Mauricio una pregunta esto funciona perfecto pero en el caso en que el cliente requiera que se deje de esta manera letras = 12159CSXD y números = 56245, osea que los números que inician hagan parte de las letras y que después de las letras queden los números, se podría con este código colocar de esa manera??? |
#6
|
|||
|
|||
La expresión regular de la solución adjunta considera que un alfanumerico es la combinación de cero o más numeros seguidos de 1 o más letras mayusculas o mínusculas en tanto que los numeros será la secuencia de 1 o más digitos:
alfanumerico = [0-9]*[A-Z|a-z]+ numero = [0-9]+ Cualquier otra cosa, incorporar espacios y cualquier otro caracter que necesites considerar o incluso que el string comienze con letras y luego números como alfanumerico tendrás que modificar la expresión regular. Querdaría algo asi entonces: data letranumero type string. data offset type i. data largo type i. data letras type string. data cnumeros type string. letranumero = '12159CSXD56245'. FIND REGEX '[0-9]*[A-Za-z]+' in letranumero MATCH OFFSET offset MATCH LENGTH largo. letras = letranumero+offset(largo). FIND REGEX '[0-9]+' in letranumero MATCH OFFSET offset MATCH LENGTH largo. cnumeros = letranumero+offset(largo). write / letranumero. write / letras. write / cnumeros. Úlima edición por Mauricio Hidalgo fecha: 10/07/13 a las 19:36:08. |
#7
|
|||
|
|||
:(
Mauricio acabo de probar pero cuando pasa me dice por ejemplo de este caso 1CR6134 que letras es 1CR y el largo es 1 y me coloca el numero 1.
|
#8
|
|||
|
|||
Oka, dejalo asi:
data letranumero type string. data offset type i. data largo type i. data letras type string. data cnumeros type string. letranumero = '1CR6134'. FIND REGEX '[0-9]*[A-Za-z]+' in letranumero MATCH OFFSET offset MATCH LENGTH largo. letras = letranumero+offset(largo). cnumeros = letranumero+largo. write / letranumero. write / letras. write / cnumeros. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|