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 13/05/08, 14:47:27
trampoboy trampoboy is offline
Member
 
Fecha de Ingreso: nov 2007
Mensajes: 32
Unhappy select.. y suma de fechas..????

Queridos abaperos… una preguntita



Tengo el siguiente Select…





SELECT bsid~blart bsid~vbeln kna1~name1 bsid~bldat bsid~wrbtr

bsid~waers INTO CORRESPONDING FIELDS OF TABLE t_datos

FROM

bsid inner join kna1 ON bsid~kunnr = kna1~kunnr

WHERE

bsid~blart in so_wlkun and

bsid~kunnr in p_client and

bsid~zfbdt + bsid~zbf3t > sy-datum .


si UD miran la parte enrojecida, tengo que sumar días a una fecha, y esta compararla con la fecha actual. si estuviera yo en ORACLE.. haría una función, la cual me daría esta suma y podría hacer la comparación.. ¿ puedo hacer eso en ABAP ? no encuentro bibliografía .. de lo contrario.. que podría hacer , para que sea optimo.? Ya que no me compila si lo hago de la actual forma…
gracias amigos..¡¡¡
Responder Con Cita
  #2  
Viejo 13/05/08, 16:40:12
Avatar de Floren
Floren Floren is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Localización: Málaga/Barcelona/Madrid
Mensajes: 209
Hola,

Oracle ofrece más alternativas para realizar las consultas a BBDD. Yo creo que dentro del mismo select no vas a poder hacerlo en abap.

Quizás otra persona pueda aportar más...

Un saludo
__________________
Florentín Navarrete Moya
SAP HCM Consultant
Mail:
Blog:
Responder Con Cita
  #3  
Viejo 13/05/08, 16:44:20
larmadovr larmadovr is offline
Member
 
Fecha de Ingreso: ene 2008
Localización: Monterrey N.L. México
Mensajes: 77
Thumbs up Que tal:

Segú yo, no es posible en ABAP hacer algo parecido, pero puedes hacer lo siguiente:

SELECT bsid~blart bsid~vbeln kna1~name1 bsid~bldat bsid~wrbtr

bsid~waers INTO CORRESPONDING FIELDS OF TABLE t_datos

FROM

bsid inner join kna1 ON bsid~kunnr = kna1~kunnr

WHERE

bsid~blart in so_wlkun and

bsid~kunnr in p_client.


DATA: L_zfbdt LIKE SY-DATUM.

LOOP AT T_DATOS

L_zfbdt = T_DATOS-zfbdt + "Dias que quieres sumar".

IF L_zfbdt > SY-DATUM.

MOVE-CORRESPONDIGN T_DATOS TO T_DATOS2.
APPEND T_DATOS2.
CLEAR: T_DATOS2.

ENDIF.

CLEAR: T_DATOS, L_zfbdt.

ENDLOOP.

Al terminar este ciclo, tendras T_DATOS2 con tu información ya procesada.

NOTA: Puede ser desventaja el número de registros que va traer si al query no le validas una fecha, pero si tus llaves estan bien hechas, no debe haber mucho problema.

Espero que te sirva.

Salu2.
__________________
I.S.C.T. Luis Armando Valdez Rodríguez
Consultor ABAP
correo:
cel: (045) 5537406023

"La vida premia la acción"
Responder Con Cita
  #4  
Viejo 13/05/08, 16:55:17
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Pues me temo que no vas a poder hacerlo en ABAP, yo lo que haria es añadir los campos ZFBDT y ZBF3T en la tabla t_datos rellenarlos en la clausula select

despues haces

loop at t_datos.

check t_datos-zfbdt + t_datos-zbf3t > sy-datum.

aqui el codigo que quieras

endloop.
Responder Con Cita
  #5  
Viejo 13/05/08, 17:24:17
Avatar de Claudia Valdespino
Claudia Valdespino Claudia Valdespino is offline
Member
 
Fecha de Ingreso: mar 2007
Localización: Lima - Perú
Mensajes: 54
Suma de fechas

Hola trampoboy, lo que puedes hacer es coloca tu select in la condición en rojo, y luego haces un LOOP a tu tabla interna con el siguiente código:

DATA: p_fecha LIKE bsid-zfbdt.

SELECT bsid~blart bsid~vbeln kna1~name1 bsid~bldat
bsid~wrbtr bsid~waers bsid~zfbdt bsid~zbd3t
INTO CORRESPONDING FIELDS OF TABLE t_datos
FROM bsid INNER JOIN kna1 ON bsid~kunnr = kna1~kunnr
WHERE bsid~blart IN so_wlkun AND
bsid~kunnr IN p_client.

LOOP AT t_datos.
CLEAR p_fecha.

* Suma N dias de la condición de pago a la fecha base
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = t_datos-zfbdt "fecha base
days = t_datos-zbd3t "dias a sumar / restar
months = '00' "meses a sumar / restar
signum = '+' "signo de la operación
years = '00' "años a sumar / restar
IMPORTING
calc_date = p_fecha. "fecha final

* Solo tomas aquellos registros cuya sumatoria sea mayor a la fecha de hoy, * por lo tanto si la fecha obtenida es menor o igual al día de hoy lo borra
IF p_fecha LE sy-datum.
DELETE t_datos INDEX sy-tabix.
ENDIF.
ENDLOOP.

Espero te sea de ayuda
__________________
Saludos,

Claudia V.
Responder Con Cita
  #6  
Viejo 13/05/08, 19:10:41
trampoboy trampoboy is offline
Member
 
Fecha de Ingreso: nov 2007
Mensajes: 32
gracias..

gracias amigo(a)s.. abrasos y kariños para todo(a)s
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:31:25.


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