MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Secuenciar variable de caracteres. (foro/showthread.php?t=28308)

BY_MY 20/02/09 10:49:01

Secuenciar variable de caracteres.
 
Buenos dias a todos.

La cosa en principio es muy sencilla y aunque se puede programar supongo que sap tendra algo ya echo.


Lo que estoy buscando es una funcion o comando al que si yo le paso una 'A' me devuelva 'B'. si le paso 'B' devuelva 'C'. Etc. La variable sera tipo char de 4 y el rango menos sera 'A' y el mayor 'ZZZZ'.


¿Alguna forma limpia y eficiente de hacerlo sin tener que llenar el codigo de if, case, etc.?


gracias, un saludo.

ballan 20/02/09 12:49:01

Hasta donde yo se las tipicas funciones de CHR (le das un codigo ascii y te devuelve el caracter) y ASC(le das un caracter y te devuelve el codigo ascii) que tienen todos los lenguajes ABAP no las tiene, tendras que hacerlo por medio de field-symbols, por ejemplo



FIELD-SYMBOLS: <ascii> type x.

data: lv_caracter type c value 'A'.

assign lv_caracter to <ascii> CASTING.
*ahora en <ascii> tendrias el codigo hexadecimal de la 'A', es decir un 41

Tb podrias hacerlo al contrario

FIELD-SYMBOLS: <caracter> type c.

data: lv_ascii type x value '41'.

assign lv_ascii to <caracter> CASTING.
*ahora en <caracter> tendrias el caracter correspondiente al codigo ascii 65 (41 en hexadecimal) quicir la 'A'.

Luego es cuestion de jugar con esto, espero que te ayude


EDITO:

Se me acaba de ocurrir ahora que tb dispones de la variable de sistema SY-ABCDE que almacena 26 letras del alfabeto en orden asi que tb podrias jugar con esta variable, por ejemplo la 'A' seria el sy-abcde+0(1), la 'B' el sy-abcde+1(1), etc..

BY_MY 26/02/09 08:23:45

Buenos dias.

Muchas gracias por ambas soluciones, al final lo solucione de una forma similar a la que me comentas pero es bueno saber lo del codigo ASCII para futuro. ;-)



Data: cadena(26) type c VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
data:off TYPE I.

READ TABLE it_ziaviacionc INDEX 1.
* Buscamos en la cadena la posición de la letra
FIND letra IN cadena MATCH OFFSET off.
off = off + 1.
* Asignamos la siguiente a nuestro documento
letra = cadena+off(1).


Husos Horarios son GMT. La hora en este momento es 23:31:36.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web