Ir al contenido
Programación ABAP

DATE_CONVERT_TO_FACTORYDATE

Convierte una fecha en «día de fábrica» y busca el día laborable siguiente o anterior.

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

Para qué sirve

DATE_CONVERT_TO_FACTORYDATE usa un calendario de fábrica (transacción SCAL) para saber si una fecha es laborable. Si no lo es, devuelve el siguiente día laborable (CORRECT_OPTION = '+') o el anterior ('-').

También devuelve el número de día de fábrica, un contador de días laborables que permite sumar días hábiles con FACTORYDATE_CONVERT_TO_DATE.

Parámetros

Importing

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

ParámetroTipoDescripción
CORRECT_OPTION—'+' busca el siguiente día laborable; '-' el anterior.Por defecto: '+'
DATEObligatorioDFecha que se convierte.
FACTORY_CALENDAR_IDObligatorioTFACD-IDENTCalendario de fábrica, por ejemplo 'ES'.

Exporting

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

ParámetroTipoDescripción
DATEDFecha laborable resultante.
FACTORYDATESCAL-FACDATENúmero de día de fábrica.
WORKINGDAY_INDICATOR—Vacío si la fecha original era laborable.

Excepciones

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

ExcepciónCuándo se produce
CALENDAR_BUFFER_NOT_LOADABLENo se puede cargar el calendario.
CORRECT_OPTION_INVALIDCORRECT_OPTION no es '+' ni '-'.
DATE_AFTER_RANGEFecha posterior al rango del calendario.
DATE_BEFORE_RANGEFecha anterior al rango del calendario.
DATE_INVALIDFecha no válida.
FACTORY_CALENDAR_NOT_FOUNDEl calendario no existe.

Ejemplo

ABAP
DATA: lv_laborable TYPE d,
      lv_dia_fab   TYPE scal-facdate.

" Primer día laborable a partir de hoy según el calendario 'ES'
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
  EXPORTING
    correct_option               = '+'
    date                         = sy-datum
    factory_calendar_id          = 'ES'
  IMPORTING
    date                         = lv_laborable
    factorydate                  = lv_dia_fab
  EXCEPTIONS
    factory_calendar_not_found   = 1
    date_after_range             = 2
    date_before_range            = 3
    OTHERS                       = 4.

Errores y excepciones habituales

  • DATE_AFTER_RANGE: el calendario de fábrica no cubre ese año; amplíalo en la SCAL.
  • FACTORY_CALENDAR_NOT_FOUND: el identificador de calendario no existe; consúltalo en la SCAL.

Relacionadas

Funciones relacionadas

FACTORYDATE_CONVERT_TO_DATEWDKAL_DATE_ADD_FKDAYS

Más en Fechas

CONVERSION_EXIT_LDATE_OUTPUTADD_TIME_TO_DATERP_CALC_DATE_IN_INTERVALEND_TIME_DETERMINEC14B_ADD_TIMECALCULATE_DATECOMPUTE_YEARS_BETWEEN_DATESCONVERSION_EXIT_PDATE_INPUTCONVERSION_EXIT_PDATE_OUTPUTCONVERSION_EXIT_SDATE_OUTPUTCONVERT_DATE_TO_EXTERNALCONVERT_DATE_TO_INTERNAL

Transacciones y tablas

SCALSE37TFACD

¿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