MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 20/02/09, 10:49:01
BY_MY BY_MY is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Mensajes: 130
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.
Responder Con Cita
  #2  
Viejo 20/02/09, 12:49:01
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
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..

Úlima edición por ballan fecha: 20/02/09 a las 12:51:49.
Responder Con Cita
  #3  
Viejo 26/02/09, 08:23:45
BY_MY BY_MY is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Mensajes: 130
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'.
dataff 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).
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 20:15:26.


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