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 04/12/09, 06:50:31
romario2 romario2 is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 233
leer valor con letra al final

Hola,
tengo que leer estos valores de una tabla interna y controlarlos,
dependiendo de la letra final (D, E, P,)

00000162|A-AA-00031-D
00000162|A-AA-00031-E
00000162|A-AA-00031-P
00000162|A-AA-00031-PM

Como puedo capturar estos valores y asignarlos a una variable.
He probado un:

CLEAR p_pskio.
CLEAR tab_poski.
LOOP AT tab_poski WHERE poski = '%O'.

ENDLOOP.

p_pskio = tab_poski-poski.


Y no funciona
Responder Con Cita
  #2  
Viejo 04/12/09, 09:13:31
VLozano VLozano is offline
Senior Member
 
Fecha de Ingreso: nov 2009
Mensajes: 124
Esa lista que nos das, ¿es un solo campo? ¿son varios campos? Si son varios campos, qué carácter ("|" o "-") de los que nos pasas son los que los delimitan?

Voy a suponer que son un solo campo, por lo que veo en tu código. La condición que tienes que usar en el WHERE es "LIKE" y no "=". Luego viene el tema de si hay que usar "*" o "%", y que nunca soy capaz de recordar qué se usa dónde.

Así que toca hacer pruebas con el LIKE y los % *
__________________
"Porque algunos sabemos que somos parte del problema"
Responder Con Cita
  #3  
Viejo 04/12/09, 12:02:37
Avatar de mysmb2
mysmb2 mysmb2 is offline
Senior Member
 
Fecha de Ingreso: ene 2007
Localización: Cordoba
Mensajes: 406
entiendo que el campo POSKI tiene los siguientes valores
A-AA-00031-D
A-AA-00031-E
A-AA-00031-P
A-AA-00031-PM

si D,E ó P están siempre en la misma posición podes compararlo de la siguiente manera al recorrer la tabla
__________________
Sebastián Chiavia
Responder Con Cita
  #4  
Viejo 04/12/09, 13:52:05
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Holas, puedes hacerlo de la siguiente manera


Hay otra forma que creo que puede ser mas optima dependiendo de la cantidad de datos que estas recuperando de la BD dentro de la tabla interna tab_poski, es creando un rango y colocando el valor I dentro del campo SIGN, CP dentro del campo OPTION y *D, *E, *P dentro del campo LOW del rango

En total tendrias 3 lineas dentro del rango de esta forma
I CP *D
I CP *E
I CP *P

Y cuando consultes simplemente le das en la condicion del SELECT el valor del rango al campo determinado (IN), espero te pueda ayudar ^^
__________________
David Carballido Córdova
Responder Con Cita
  #5  
Viejo 04/12/09, 17:52:55
romario2 romario2 is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 233
thanks

Hola Lozano, Mys y David,

que lujo vuestros consejos! *_*

Como habeis dicho, toca hacer pruebas, thanks!
Responder Con Cita
  #6  
Viejo 04/12/09, 17:57:37
romario2 romario2 is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 233
1 campo

Vlozano, supones bien, es un solo campo a tratar
Responder Con Cita
  #7  
Viejo 07/12/09, 09:41:51
romario2 romario2 is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 233
Exclamation se solapan

Hola,

vuestros consejos han sido de mucha ayuda,

solo tengo una incidencia:

Los casos :

cst_prart_o LIKE prps-prart VALUE 'O',

cst_prart_do LIKE prps-prart VALUE 'DO',

SE SOLAPAN y no se como tratarlos para que funcione bien.



Os paso el código:


CLEAR: p_pskip, p_pskio,p_pskido, p_pskiat, p_pskiss, p_pskie,p_pskiom.
CLEAR tab_poski.

LOOP AT tab_poski.
int_stlen = STRLEN( tab_poski-poski ).
int_stlen = int_stlen - 1.
int_stlen2 = int_stlen - 1.


IF tab_poski-poski+int_stlen(1) EQ cst_prart_p.
IF sy-subrc = 0.
p_pskip = tab_poski-poski.
est_nivel2p-poski = p_pskip.

ELSE.

ENDIF.

ELSEIF tab_poski-poski+int_stlen(1) EQ cst_prart_o.

IF sy-subrc = 0.
p_pskio = tab_poski-poski.
est_nivel2o-poski = p_pskio.

ELSE.

ENDIF.


ELSEIF tab_poski-poski+int_stlen2(2) EQ cst_prart_do.

IF sy-subrc = 0.

p_pskido = tab_poski-poski.
est_nivel2do-poski = p_pskido.

ELSE.

ENDIF.
Responder Con Cita
  #8  
Viejo 07/12/09, 15:31:11
romario2 romario2 is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 233
alguna solución?

Hola Foro,

esta incidencia está casi resuelta,

alguien tiene alguna solución?
Responder Con Cita
  #9  
Viejo 07/12/09, 16:48:06
nano_godoy nano_godoy is offline
Junior Member
 
Fecha de Ingreso: abr 2009
Mensajes: 8
Para mi que estas fallando al restarle solo 1 aca:

"int_stlen2 = int_stlen - 1."

Fijate de restarle 2 en vez de 1 o de poner asi:

"ELSEIF tab_poski-poski+11(2) EQ cst_prart_do.
IF sy-subrc = 0.
p_pskido = tab_poski-poski.
est_nivel2do-poski = p_pskido.
ENDIF."

Saludos!
Responder Con Cita
  #10  
Viejo 07/12/09, 17:17:22
Avatar de DCErick
DCErick DCErick is offline
Moderator
 
Fecha de Ingreso: mar 2006
Localización: Monterrey
Mensajes: 1,090
Y si mejor te basas en los ultimos 2 caracteres del campo...

__________________
-------------------
¿Dudas para descargar manuales? Ver este tema ->
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 16:46:02.


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