#1
|
|||
|
|||
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..¡¡¡ |
#2
|
||||
|
||||
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: |
#3
|
|||
|
|||
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"
|
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
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. |
#6
|
|||
|
|||
gracias..
gracias amigo(a)s.. abrasos y kariños para todo(a)s
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|