Muchas veces, en los proyectos, nos van a pedir restar una cantidad de días, meses o años a una determinada fecha...Pero alguna vez les han pedido que resten horas a una fecha???
Bueno, si alguna vez se ven en ese problema, esta pequeña función puede ayudarles -;)
FUNCTION Z_CALCULATE_DATE_FROM_TIME.
*"-------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(DATE) TYPE D
*" REFERENCE(TIME) TYPE T
*" REFERENCE(HOURS) TYPE T
*" REFERENCE(OPERATION) TYPE CHAR1
*" EXPORTING
*" REFERENCE(NEW_DATE) TYPE D
*" REFERENCE(NEW_TIME) TYPE T
*" EXCEPTIONS
*" FORBIDDEN_OPERATION
*"-------------------------------------------------------
DATA: DAYS TYPE I,
MONTHS LIKE T5A4A-DLYMO,
YEARS LIKE T5A4A-DLYYR.
IF OPERATION EQ 'S'.
NEW_TIME = TIME + HOURS.
IF TIME LE '240000' AND NEW_TIME LT TIME.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = DATE
DAYS = '01'
MONTHS = MONTHS
SIGNUM = '+'
YEARS = YEARS
IMPORTING
CALC_DATE = NEW_DATE.
ELSE.
NEW_DATE = DATE.
ENDIF.
ELSEIF OPERATION EQ 'R'.
NEW_TIME = TIME - HOURS.
IF TIME GE '000000' AND NEW_TIME GT TIME.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = DATE
DAYS = '01'
MONTHS = MONTHS
SIGNUM = '-'
YEARS = YEARS
IMPORTING
CALC_DATE = NEW_DATE.
ELSE.
NEW_DATE = DATE.
ENDIF.
ELSE.
RAISE FORBIDDEN_OPERATION.
ENDIF.
ENDFUNCTION.
Saludos,
Blag.
No comments:
Post a Comment