Ir al contenido
Programación ABAP

SD_DATETIME_DIFFERENCE

Calcula la diferencia en días y horas entre dos fechas con hora.

Módulo de funciónFechas
Transacción
SE37
Grupo
Fechas
Actualizado
21 de octubre de 2026

Para qué sirve

SD_DATETIME_DIFFERENCE recibe dos pares de fecha y hora y devuelve la diferencia en días y en horas, además de indicar cuál de los dos es el más temprano.

En ABAP moderno, para diferencias exactas en segundos se usan marcas de tiempo y CL_ABAP_TSTMP=>SUBTRACT.

Parámetros

Importing

Lo que recibe la función. En CALL FUNCTION se pasan tras EXPORTING.

ParámetroTipoDescripción
DATE1ObligatorioDPrimera fecha.
TIME1ObligatorioTPrimera hora.
DATE2ObligatorioDSegunda fecha.
TIME2ObligatorioTSegunda hora.

Exporting

Lo que devuelve. En CALL FUNCTION se recogen tras IMPORTING.

ParámetroTipoDescripción
DATEDIFF—Diferencia en días.
TIMEDIFF—Diferencia en horas.
EARLIEST—Indica qué fecha es la más temprana.

Excepciones

Errores que devuelve en sy-subrc, en el bloque EXCEPTIONS.

ExcepciónCuándo se produce
INVALID_DATETIMEAlguna fecha u hora no es válida.

Ejemplo

ABAP
DATA: lv_dias  TYPE p,
      lv_horas TYPE p DECIMALS 2.

CALL FUNCTION 'SD_DATETIME_DIFFERENCE'
  EXPORTING
    date1            = '20261020'
    time1            = '080000'
    date2            = '20261021'
    time2            = '143000'
  IMPORTING
    datediff         = lv_dias
    timediff         = lv_horas
  EXCEPTIONS
    invalid_datetime = 1
    OTHERS           = 2.

Hoy lo harías así: marcas de tiempo

Ahora
DATA: lv_ts1 TYPE timestamp,
      lv_ts2 TYPE timestamp.
CONVERT DATE '20261020' TIME '080000' INTO TIME STAMP lv_ts1 TIME ZONE 'UTC'.
CONVERT DATE '20261021' TIME '143000' INTO TIME STAMP lv_ts2 TIME ZONE 'UTC'.

DATA(lv_segundos) = cl_abap_tstmp=>subtract( tstmp1 = lv_ts2 tstmp2 = lv_ts1 ).
DATA(lv_horas) = lv_segundos / 3600.

Errores y excepciones habituales

  • INVALID_DATETIME: alguna fecha u hora está vacía o no existe.

Relacionadas

Funciones relacionadas

DAYS_BETWEEN_TWO_DATESC14B_ADD_TIMEEND_TIME_DETERMINE

Más en Fechas

CONVERSION_EXIT_LDATE_OUTPUTADD_TIME_TO_DATERP_CALC_DATE_IN_INTERVALCALCULATE_DATECOMPUTE_YEARS_BETWEEN_DATESCONVERSION_EXIT_PDATE_INPUTCONVERSION_EXIT_PDATE_OUTPUTCONVERSION_EXIT_SDATE_OUTPUTCONVERT_DATE_TO_EXTERNALCONVERT_DATE_TO_INTERNALDATE_COMPUTE_DAYDAY_IN_WEEK

Transacciones y tablas

SE37

¿Dudas con esta función?

Pregunta en el foro de abap.es: la comunidad lleva años resolviendo dudas de ABAP en español.

Preguntar en el foro

Actualizado: 21 de octubre de 2026