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 18/04/08, 16:59:58
Avatar de Edd_401
Edd_401 Edd_401 is offline
Senior Member
 
Fecha de Ingreso: may 2007
Mensajes: 119
Problema Con Rango....

Que Tal, Primero Que Nada Saludos

Tengo Un Problemon !!!!!!!!


Tengon Un Programa Que Muestra Un Reporte, Al Cual Le He Asigando Que La Fecha Se Aobligatoria...

El Caso Es Que Si Se Corre El Reporte Para Una Fecha, Ya No Puede Volverse A Correr Para La Misma Fecha O Periodo...

Ejemplo.

Si Corro El Reporte Para El 1-01-2008 Al 31-01- 2008

1. Ya No Puedo Volverlo A Correr Para Esa Fecha.
2. Ya No Puedo Correrlo Para Otra Fecha Que Tenga Ese Rango

Por Ejemplo Ya No Correria Para El Cualquier Fecha O Rango De Ese Periodo.................




Para Esto He Hecho Una Tabla, En La Cual Guardo Los Periodos O Rangos Para Los Cuales Ya Se Ha Corrido El Reporte.............................

Tengo Lo Siguiente:


Select *
Into Table Ti_zret004
From Zret004
Where Bukrs_low In S_bukrs And
Vkorg_low In S_gsber And
Werks_low In S_werks And
( ( ( Fecha_low <= S_fkdat-low And Fecha_high <= S_fkdat-high ) )
Or
( ( Fecha_low In S_fkdat ) Or
( Fecha_high In S_fkdat ) ) ).

If Sy-subrc = 0.
Message Id '00' Type 'e' Number 208 With Text-100.
Endif.





El Problemas Es:

1. Con Lo Que He Hecho Me No Me Deja Correr Lo Demas Periodos, A Menos De Que Ponga El Rango, Es Decir De Una Fecha X A Una Y..........

Si Solo Pongo La Fecha X........ A Otra Ya No Me Deja Correrlo......




Ojala Y Alguien Haya Hecho Algo Pareceido Antes Y Pueda Ayudarme, Saludos.............
Responder Con Cita
  #2  
Viejo 21/04/08, 06:40:55
pmarinab pmarinab is offline
Member
 
Fecha de Ingreso: abr 2008
Mensajes: 64
Hola Edd_401,

a mi se me ocurre otra idea que quizas te pueda ayudar. Create una tabla Z en la que almacenes los días para los que se ha lanzado el informe. De esta forma, si has ejecutado para el rango 01.01.2008-05.01.2008 en la tabla te debería guardar:
DATUM
01.01.2008
02.01.2008
03.01.2008
04.01.2008
05.01.2008

Luego, cada vez que vuelvas a lanzar tu informe simplemente tienes que hacer la siguiente validación:

SELECT SINGLE *
FROM zXXXX
WHERE datum IN s_fkdat
... quí el resto de condiciones que tengas en tu tabla (sociedad,...)

De esta forma, si la select te devuelve algún valor será que el programa se está ejecutando para una fecha del rango que ya se está tratando.

No se si este metodo te parecerá mejor o peor. A mi me parece más sencillo, aunque quizás no te sirva en tu caso.

Un saludo.
Responder Con Cita
  #3  
Viejo 21/04/08, 16:15:16
davidffh davidffh is offline
Junior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 10
Otra forma

Mira;

Para los rangos yo hago así; no necesito especificar rango mayor o menor en el SELECT "Fecha in S_fkdat".


Aquí tomo los valores ingresados de fecha:

SELECT-OPTIONS pfecha FOR mkpf-budat OBLIGATORY.

Select *
Into Table Ti_zret004
From Zret004
Where Bukrs_low In S_bukrs And
Vkorg_low In S_gsber And
Werks_low In S_werks And
Pfecha in S_fkdat.

Espero te ayude
Responder Con Cita
  #4  
Viejo 21/04/08, 16:48:20
Avatar de Edd_401
Edd_401 Edd_401 is offline
Senior Member
 
Fecha de Ingreso: may 2007
Mensajes: 119
gracias marina y david por su ayuda....


MARINA, DE HECHO ESO ES LO QUE HICE.... A AHI ES DONDE ALMACENO LAS FECHAS............ ES SOLO QUE MI VALIDACION ESTABA MAL...........


YA LO RESOLVI, SOLO ERA CUESTION DE MATEMATICAS..........



IF NOT S_FKDAT-LOW IS INITIAL.
IF NOT S_FKDAT-HIGH IS INITIAL.

SELECT *
INTO TABLE TI_ZRET004
FROM ZRET004
WHERE BUKRS_LOW IN S_BUKRS AND
VKORG_LOW IN S_GSBER AND
WERKS_LOW IN S_WERKS AND
( ( ( FECHA_LOW <= S_FKDAT-LOW AND FECHA_HIGH >= S_FKDAT-LOW ) AND
( FECHA_LOW <= S_FKDAT-HIGH AND FECHA_HIGH >= S_FKDAT-HIGH ) )
OR
( ( FECHA_LOW IN S_FKDAT ) OR
( FECHA_HIGH IN S_FKDAT ) ) ).

IF SY-SUBRC = 0.
MESSAGE ID '00' TYPE 'E' NUMBER 208 WITH TEXT-100.
ENDIF.

ENDIF.
ENDIF.

IF NOT S_FKDAT-LOW IS INITIAL.
IF S_FKDAT-HIGH IS INITIAL.

SELECT *
INTO TABLE TI_ZRET004
FROM ZRET004
WHERE BUKRS_LOW IN S_BUKRS AND
VKORG_LOW IN S_GSBER AND
WERKS_LOW IN S_WERKS AND

( ( ( FECHA_LOW <= S_FKDAT-LOW AND FECHA_HIGH >= S_FKDAT-LOW )
)
OR
( ( FECHA_LOW IN S_FKDAT ) ) ).

IF SY-SUBRC = 0.
MESSAGE ID '00' TYPE 'E' NUMBER 208 WITH TEXT-100.
ENDIF.

ENDIF.
ENDIF.



CREE DOS SUBRUTINAS, UNA CUANDO TRAIGO UN RANGO DE FCEHAS----------
DE XXXX----A------XXXXX


Y OTRA CUANDO SOLO TRAIGO UNA SOLA FECHA........





QUE LES PARECE:.......



SALUDOS


Y NUEVAMENTE MUCHAS GRACIAS..
Responder Con Cita
  #5  
Viejo 21/04/08, 20:40:39
pmarinab pmarinab is offline
Member
 
Fecha de Ingreso: abr 2008
Mensajes: 64
Hola Edd_401,

mi nick es pmarinab, pero no llamo marina jeje.

Creo que no hemos coincidido en la solución. Tú almacenas en la tabla las fechas en forma de rango, y eso hace que tus busquedas sean más complejas. Yo te aconsejo que en vez de guardar el rango tal cual se ha introducido en tu informe, guardes un registro con cada una de los días que están dentro de ese rango. De esa forma evitarás una condición WHERE tan compleja.

Con mi manera podrías hacer lo siguiente, pero deberías redefinir la funcionalidad de tu tabla:

SELECT *
INTO TABLE TI_ZRET004
FROM ZRET004
WHERE BUKRS_LOW IN S_BUKRS AND
VKORG_LOW IN S_GSBER AND
WERKS_LOW IN S_WERKS AND
FECHA IN S_FKDAT .

IF SY-SUBRC = 0.
MESSAGE ID '00' TYPE 'E' NUMBER 208 WITH TEXT-100.
ENDIF.

ENDIF.
ENDIF.
Responder Con Cita
  #6  
Viejo 22/04/08, 15:35:49
Avatar de Edd_401
Edd_401 Edd_401 is offline
Senior Member
 
Fecha de Ingreso: may 2007
Mensajes: 119
Jjje......lo Siento Por Lo De Marina. !!!!!!!


Me Parece Bien Tu Propuesta, Probare Las 2.... Todo Dependera Le Performance, Bueno.... Si Me Da Tiempo...jjeje.... Pues Ya Urge.....



Saludos
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 15:04:17.


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