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 10/06/09, 17:55:16
Jpedrazah Jpedrazah is offline
Member
 
Fecha de Ingreso: oct 2008
Mensajes: 40
Extraer caracteres de campo

Buen Día.

tengo una duda en un reporte que estoy generando.

lo que quiero es validar en el where el valor del awkey pero solo los primeros 10 caracteres le e intentado de varias formas pero no me funciona.

espero me puedan ayudar.
no tengo mucho en esto de ABAP

VALOR AWKEY 49000224982009

SELECT belnr
awkey
INTO TABLE i_bkpf
FROM bkpf
FOR ALL ENTRIES IN i_mkpf
WHERE *substring* EQ i_mkpf-mblnr.
Responder Con Cita
  #2  
Viejo 11/06/09, 05:57:09
jtristan jtristan is offline
Senior Member
 
Fecha de Ingreso: oct 2007
Mensajes: 240
Pues por lo que he estado leyendo me parece que no se puede hacer directamente en la sql. Mira el punto 4.


1. in open sql you can only reference tables that are managed by/in the “ABAP dictionary”
1. open sql does not support dml statements like create table.
2. open sql does not support “advanced” sql statements like truncate, merge, rollup.
3. in open sql you can’t use aggregate functions like sum,avg.
4. open sql does not support most column functions like substr, concat (||) and “case expression” in both the select and where clauses.
5. open sql does not allow you to write predicates ( where conditions) between more than one colum … so you can’t write the following condition:
where t1.col1 <> t1.col2
6. open sql does not allow you to write predicates ( where conditions) on columns of a table joined with left (or right ) join. So you can’t write the following sql:
select … from t1 left join t2
where t2.col = ‘x’

Así que me temo, que no te quedará más remedio que recorrer todos los registros que te traidas y comprobar ahí si cumplen con la condición o no.

Un saludo.
Responder Con Cita
  #3  
Viejo 11/06/09, 15:58:25
ecm ecm is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 20
Sí que se puede, usando el LIKE, aunque ya no se podría hacer un FOR ALL ENTRIES.

loop at i_mkpf.

*vl_awkey será un concatenación de lo que hay en i_mkpf-mblnr y del *caracter %, ejemplo: i_mkpf-mblnr = 4900022498, vl_awkey = 4900022498%

SELECT belnr
awkey
appending TABLE i_bkpf
FROM bkpf
WHERE AWKEY LIKE vl_awkey.
endloop.
Responder Con Cita
  #4  
Viejo 11/06/09, 16:10:06
martin89 martin89 is offline
Member
 
Fecha de Ingreso: may 2009
Mensajes: 53
Si, me parece que la mejor opción es reemplazar el for all entries por un loop y te vas fijando cada uno de los registros.
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 08:21:02.


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