Su plantilla de datos de Cierre de Periodo y Conciliación de Del Registro al Informe
Su plantilla de datos de Cierre de Periodo y Conciliación de Del Registro al Informe
- Atributos recomendados para recopilar
- `Actividades` clave a seguir para el análisis de procesos
- Guía paso a paso para la extracción de datos
Atributos de Cierre del Periodo y Conciliación (Del Registro al Informe)
| Nombre | Descripción | ||
|---|---|---|---|
| Período Financiero FinancialPeriod | Un identificador único para el ciclo de informes financieros, como '2023-12' para diciembre de 2023, que sirve como `case` para el proceso de cierre de fin de período. | ||
| Descripción El periodo financiero es el identificador de case que agrupa las actividades de cierre contable para un tiempo determinado, como un mes o un año fiscal. Cada periodo representa un ciclo completo del proceso de cierre. En Process Mining, este atributo permite rastrear todo el flujo del cierre, desde la apertura hasta el reporte final. Facilita la comparación de cycle times entre periodos, ayuda a identificar rutas comunes y permite analizar diferencias entre cierres mensuales o anuales. Al tratar cada periodo como un case, los analistas pueden evaluar el desempeño histórico y detectar bottlenecks sistémicos. Por qué es importante Este es el Dónde obtener Derivado combinando los campos Año Fiscal (GJAHR) y Período de Contabilización (MONAT) de las cabeceras de los documentos financieros, típicamente de tablas como BKPF. Ejemplos 2023-122024-032024-Q1 | |||
| Actividad ActivityName | El nombre de un paso o tarea de negocio específico realizado dentro del proceso de cierre de periodo, como 'Asiento Contable de Ajuste Contabilizado' o 'Periodo Cerrado para Contabilización'. | ||
| Descripción Este Analizar las Por qué es importante Define los pasos del proceso, formando la base del mapa de procesos y permitiendo el análisis del flujo del proceso, las desviaciones y los Dónde obtener Derivado de varias fuentes, como códigos de transacción (TCODE), tipos de documento (BLART) o campos de estado en tablas relacionadas con tareas de cierre financiero (por ejemplo, del Ejemplos Período Abierto para ContabilizaciónConciliación de Cuentas IniciadaEstados Financieros GeneradosConciliación Intercompany Iniciada | |||
| Hora de Inicio EventTime | La `timestamp` que indica cuándo una actividad específica comenzó o fue registrada en el sistema. | ||
| Descripción El Este Por qué es importante Este Dónde obtener Obtenido de campos de timestamp como Fecha de Creación (CPUDT) y Hora de Creación (CPUTM) en tablas como BKPF, o de campos de fecha de cambio en varias tablas de estado (ej., CDHDR, CDPOS). Ejemplos 2023-12-28T09:15:30Z2024-01-02T14:00:12Z2024-01-05T11:21:00Z | |||
| Estado de la Conciliación ReconciliationStatus | El estado de una actividad de conciliación de cuentas, como 'Abierta', 'En Curso' o 'Aprobada'. | ||
| Descripción Este Esto es Por qué es importante Rastrea el Dónde obtener Esta Ejemplos No IniciadoEn PreparaciónAprobadoRechazada | |||
| Fecha Objetivo de Finalización TargetCompletionDate | La fecha prevista o límite para completar una actividad clave, como la generación de estados financieros. | ||
| Descripción La Este Por qué es importante Permite el análisis del rendimiento frente a los plazos, ayudando a medir y mejorar las tasas de finalización a tiempo para las Dónde obtener Estos Ejemplos 2024-01-05T23:59:59Z2024-04-04T23:59:59Z2024-07-05T23:59:59Z | |||
| Hora de Finalización EndTime | El timestamp que indica cuándo se completó una actividad. | ||
| Descripción La hora de fin marca el momento en que se completa una tarea. En ciertos casos, puede coincidir con la hora de inicio si se trata de eventos instantáneos registrados en el sistema. Para actividades con una duración medible, representa el timestamp de finalización. Junto con la hora de inicio, este atributo es indispensable para calcular el Por qué es importante Permite el cálculo de las duraciones de las Dónde obtener Al igual que el Ejemplos 2023-12-28T09:16:10Z2024-01-02T17:30:00Z2024-01-05T11:21:00Z | |||
| Número de Cuenta de Mayor (GL) GlAccountNumber | El identificador de una cuenta específica en el Libro Mayor. | ||
| Descripción El Número de Cuenta de Mayor (GL) identifica cuentas individuales utilizadas para registrar transacciones financieras, como efectivo, cuentas por pagar o ingresos. Muchas actividades de fin de periodo, como conciliaciones y Este atributo es esencial para un análisis detallado del proceso financiero. El Por qué es importante Vincula las Dónde obtener Encontrado en las tablas de partidas individuales de documentos financieros, principalmente BSEG (campo HKONT) o la tabla de asiento contable universal ACDOCA de S/4HANA. Ejemplos 113100004000000073000000 | |||
| Número de Documento DocumentNumber | El `identificador` único para un documento financiero, como un `asiento contable`. | ||
| Descripción El Número de Documento es una clave única asignada por SAP a cada contabilización financiera. Sirve como referencia principal para el seguimiento y la auditoría de las transacciones individuales que componen las actividades del proceso de cierre. Aunque no es un Por qué es importante Proporciona una referencia directa a la transacción subyacente en SAP, lo que permite una fácil exploración y auditabilidad desde el modelo de proceso. Dónde obtener Ubicado en la tabla de cabecera del documento financiero BKPF (campo BELNR) y en las tablas de partidas individuales como BSEG o ACDOCA. Ejemplos 100000045190000001300000023 | |||
| Sociedad CompanyCode | Un identificador único para una entidad legal o empresa dentro de la organización SAP. | ||
| Descripción La Sociedad GL representa una unidad contable independiente dentro de una empresa, para la cual se puede crear un conjunto completo y autónomo de cuentas. Todas las actividades de cierre de periodo se realizan a nivel de Sociedad GL. Esta es una dimensión organizacional fundamental para el análisis financiero. En Process Mining, permite comparar el proceso de cierre de periodo entre diferentes entidades legales. El Por qué es importante Proporciona un contexto organizacional crítico, permitiendo la comparación de procesos entre diferentes entidades legales para identificar variaciones y mejores prácticas. Dónde obtener Encontrado en prácticamente todas las tablas financieras de SAP, especialmente en la tabla de cabecera BKPF (campo BUKRS). Ejemplos 10001710US01DE01 | |||
| Tiempo de Procesamiento ProcessingTime | La duración de una actividad individual, calculada como la diferencia entre su Hora de Fin y Hora de Inicio. | ||
| Descripción El Esta métrica calculada es fundamental para el análisis de rendimiento. Ayuda a identificar Por qué es importante Mide la duración de las tareas individuales, destacando directamente los Dónde obtener Campo calculado: Ejemplos PT1M30SPT8HP2D | |||
| Usuario Responsable ResponsibleUser | El `ID` de usuario de la persona que ejecutó la actividad o es responsable de la `tarea`. | ||
| Descripción Este Analizar el proceso por Por qué es importante Conecta las Dónde obtener Comúnmente encontrado en tablas de cabecera de documento como BKPF (campo USNAM - Nombre de usuario) o en tablas de documentos de cambio como CDHDR (campo USERNAME). Ejemplos ABROWNCSMITHDJOHNSON | |||
| A Tiempo IsOnTime | Un indicador booleano que es verdadero si un hito se completó en o antes de su fecha objetivo. | ||
| Descripción Este Este es el Por qué es importante Simplifica el análisis del cumplimiento de plazos en un resultado claro de éxito o fracaso, facilitando el seguimiento y la presentación de informes sobre el rendimiento a tiempo. Dónde obtener Campo calculado: Ejemplos truefalse | |||
| Automatizado IsAutomated | Un indicador booleano que señala si la `actividad` fue realizada por un usuario del sistema o por un proceso automatizado. | ||
| Descripción Este Este Por qué es importante Distingue entre Dónde obtener Este es un Ejemplos truefalse | |||
| Código de Transacción TransactionCode | El `código de transacción` (T-code) de SAP utilizado para ejecutar la actividad. | ||
| Descripción Un código de transacción es un atajo para iniciar una función o programa específico en SAP. Por ejemplo, FB01 se utiliza para contabilizar un documento y FAGLB03 para mostrar los saldos de las cuentas de mayor (GL). El código T a menudo proporciona un indicador técnico claro de la Este Por qué es importante Proporciona una vista técnica, a nivel de sistema, de cómo se realizó una Dónde obtener Encontrado en la tabla de cabecera de documento financiero BKPF (campo TCODE) o en los Ejemplos FB01FAGL_FCVF.13 | |||
| Es Reelaboración de Conciliación IsReconciliationRework | Un indicador booleano que es verdadero si una `actividad` de conciliación es seguida por un rechazo o ajustes adicionales. | ||
| Descripción Este Este Por qué es importante Cuantifica directamente la reelaboración, una forma clave de ineficiencia del proceso, lo que permite un análisis dirigido y esfuerzos de mejora para la calidad de la conciliación. Dónde obtener Calculado en base a la secuencia de Ejemplos truefalse | |||
| Fecha de Finalización Real ActualCompletionDate | La fecha real en que se completó una actividad clave o el cierre de todo el periodo. | ||
| Descripción Este Es la Por qué es importante Proporciona la temporización real de los hitos, lo cual es necesario para medir el rendimiento frente a los plazos planificados y analizar los retrasos. Dónde obtener Obtenido del EventTime de la actividad final en una secuencia, como 'Estados Financieros Aprobados' o 'Periodo Cerrado para Contabilización'. Ejemplos 2024-01-06T10:00:00Z2024-04-05T17:00:00Z2024-07-04T11:00:00Z | |||
| Importe del Documento DocumentAmount | El valor total de la contabilización financiera en la moneda del documento. | ||
| Descripción Este Analizar el Por qué es importante Añade una dimensión financiera al análisis, permitiendo la priorización de los problemas en función del impacto monetario y la materialidad. Dónde obtener Este Ejemplos 15000.00250.75-500.00 | |||
| Moneda del Documento DocumentCurrency | El código de moneda para los importes en el documento financiero. | ||
| Descripción Este En Por qué es importante Proporciona el contexto necesario para cualquier valor monetario, asegurando que los montos se interpreten correctamente, especialmente en un entorno multidivisa. Dónde obtener Ubicado en la tabla de cabecera del documento financiero BKPF (campo WAERS). Ejemplos USDEURJPY | |||
| Source System SourceSystemId | Identificador de la instancia o cliente específico de SAP S/4HANA de donde se extrajeron los `datos`. | ||
| Descripción Este Se utiliza Por qué es importante Proporciona la trazabilidad de los Dónde obtener Estos son típicamente Ejemplos S4H_PROD_100S4H_QAS_200ECC_LEGACY_001 | |||
| Tiempo de Ciclo de Cierre Periódico PeriodCloseCycleTime | El tiempo total que se tarda en un periodo financiero, desde la primera hasta la última actividad. | ||
| Descripción Esta Este es un Por qué es importante Representa el KPI principal para la duración total del proceso, permitiendo un seguimiento de alto nivel de las mejoras de eficiencia a lo largo del tiempo. Dónde obtener Calculado a nivel de Ejemplos P5D10H30MP7D2HP6D | |||
| Tipo de Asiento Contable JournalEntryType | El tipo de documento financiero que se contabiliza, diferenciando entre asientos estándar, devengos y `ajustes`. | ||
| Descripción El Tipo de Asiento Contable, o Tipo de Documento en la terminología SAP, es una clave que clasifica los documentos contables. Controla a qué tipos de cuenta se puede contabilizar un documento y se utiliza para distinguir diferentes transacciones comerciales, como una En el contexto del cierre de periodo, este atributo es crucial para aislar tipos específicos de actividades. Por ejemplo, permite a los analistas centrarse en los Por qué es importante Categoriza las transacciones financieras, permitiendo que el análisis se centre en tipos específicos de contabilizaciones, como los ajustes manuales, que son críticos para un cierre de período sin problemas. Dónde obtener Este es un Ejemplos SAKRAB | |||
| Última actualización de datos LastDataUpdate | El timestamp que indica la última vez que se actualizaron o extrajeron los datos del sistema de origen. | ||
| Descripción Este Su Por qué es importante Informa a los usuarios sobre la actualidad de los Dónde obtener Estos son Ejemplos 2024-06-10T08:00:00Z2024-06-09T08:00:00Z | |||
Actividades de Cierre del Periodo y Conciliación (Del Registro al Informe)
| Actividad | Descripción | ||
|---|---|---|---|
| Asiento Contable de Ajuste Contabilizado | Representa un asiento contable correctivo realizado después de que se hayan efectuado las conciliaciones iniciales, generalmente para subsanar discrepancias detectadas durante el proceso de revisión. Se trata de una transacción explícita registrada en el Libro Mayor. | ||
| Por qué es importante Una alta frecuencia de asientos de ajuste indica una baja calidad inicial en los procesos o conciliaciones previos. Analizar estos asientos es clave para identificar las causas raíz de los errores y reducir la reelaboración. Dónde obtener Registrados como documentos explícitos en las tablas ACDOCA y BKPF. Se pueden identificar por tipos de documento específicos, fechas de contabilización tardías en el ciclo de cierre o descripciones de texto concretas. Capturar Filtre los asientos contables en BKPF basándose en una combinación de tipo de documento y fecha de contabilización en relación con las Tipo de evento explicit | |||
| Conciliación de Cuentas Aprobada | Esta actividad significa la aprobación final de una `conciliación de cuenta` GL, confirmando que el saldo está justificado y que cualquier problema ha sido resuelto. Esto se infiere de un `cambio de estado` a 'Aprobado' en una `herramienta de conciliación`. | ||
| Por qué es importante Este Dónde obtener Capturado de un sistema de gestión de conciliaciones, como SAP Account Substantiation and Automation, mediante el seguimiento del Capturar Identifique el Tipo de evento inferred | |||
| Conciliación de Cuentas Iniciada | Marca el inicio del proceso manual o semiautomatizado de justificación de saldos de cuentas de mayor (GL). Esto se infiere cuando el estado de una conciliación cambia de 'Nuevo' a 'En Curso' o cuando se registra la primera `actividad` del preparador. | ||
| Por qué es importante Este es un Dónde obtener Este Capturar Rastree la Tipo de evento inferred | |||
| Conciliación Intercompany Iniciada | Esta actividad significa el inicio del proceso para conciliar y casar transacciones entre diferentes `sociedades` dentro del mismo `grupo corporativo`. Esto a menudo se inicia ejecutando una `tarea de conciliación` o creando un nuevo `caso de conciliación` en la herramienta ICMR de SAP. | ||
| Por qué es importante La conciliación intercompany es a menudo compleja y consume mucho tiempo. Analizar su duración y flujo es crucial para agilizar el cierre del grupo y garantizar que los estados financieros consolidados sean precisos. Dónde obtener Inferido de cambios de estado dentro del módulo SAP Intercompany Matching and Reconciliation (ICMR) o de la creación de los primeros documentos de conciliación para el período. Capturar Rastree la Tipo de evento inferred | |||
| Estados Financieros Generados | Esta actividad marca la creación de los estados financieros oficiales, como el `Balance General` y el `Estado de Resultados`. Representa la culminación de los `procesos de contabilidad` y `consolidación` de fin de periodo. | ||
| Por qué es importante Este es un Dónde obtener Mejor capturado a través de una herramienta de gestión de cierre financiero como SAP Financial Closing Cockpit, donde es una tarea explícita. De lo contrario, debe inferirse de los Capturar Rastree el Tipo de evento inferred | |||
| Período Abierto para Contabilización | Esto marca el `inicio` del `periodo financiero`, donde los `periodos contables` se `abren` para el `registro de transacciones`. Este es un `cambio de configuración explícito y registrado` realizado por un `administrador financiero` en SAP, que permite `asientos contables` para el `nuevo periodo`. | ||
| Por qué es importante Esta actividad sirve como el Dónde obtener Este Capturar Filtre los Tipo de evento explicit | |||
| Período Cerrado para Contabilización | Esta es la `actividad final` en el `ciclo`, donde el `periodo contable` se `cierra formalmente` para `prevenir cualquier transacción adicional`. Esta `acción` asegura la `integridad` de los `datos` para los `informes financieros finalizados`. | ||
| Por qué es importante Esta actividad sirve como el Dónde obtener Similar a la apertura de un periodo, este evento se captura de los documentos de cambio (tablas CDHDR y CDPOS) que registran las actualizaciones de la tabla de control de periodos contables T001B a través de la transacción OB52. Capturar Filtre los Tipo de evento explicit | |||
| Balance de Comprobación Preparado | Indica que se ha generado y guardado un balance de comprobación para su revisión, sirviendo como un punto de control clave antes de la creación de los estados financieros finales. La captura de este `event` a menudo se basa en procedimientos donde se guarda la salida del informe. | ||
| Por qué es importante La preparación del balance de comprobación es un Dónde obtener Este a menudo no es un Capturar Requiere un análisis del sistema para determinar si existe un mecanismo de registro fiable, como logs de ejecución de informes o listas de tareas del cockpit de cierre. Tipo de evento inferred | |||
| Devengos y Provisiones Contabilizados | Este `evento` captura la `creación` de `asientos contables manuales` para `devengos`, `aplazamientos` y otras `provisiones` que son `necesarias` para una `presentación de informes financieros precisa` bajo la `base contable de devengo`. Se trata de `transacciones explícitas` `contabilizadas` en el `Libro Mayor`. | ||
| Por qué es importante El Dónde obtener Registrados como asientos contables explícitos en la tabla de diario universal ACDOCA y en la tabla de cabecera BKPF. Estas entradas pueden identificarse por tipos de documento específicos configurados para devengos. Capturar Filtre documentos en la tabla BKPF por tipo de documento (por ejemplo, 'SA' o tipos personalizados) y fecha de contabilización dentro del período. Tipo de evento explicit | |||
| Ejecución de Valoración de Moneda Extranjera | Este es un `procedimiento estándar de fin de mes` para `revalorizar partidas abiertas` y `saldos` en `monedas extranjeras` basado en los `tipos de cambio de fin de periodo`. La `ejecución` de este `programa contabiliza` las `diferencias de valoración resultantes`. | ||
| Por qué es importante Garantiza el Dónde obtener Capturado de los Capturar Supervise los Tipo de evento explicit | |||
| Ejecutada Ejecución de Compensación Automática | Representa la ejecución de programas de compensación automatizados en SAP, como el proceso de compensación GR/IR (Entrada de Mercancías/Verificación de Facturas). Estos trabajos concilian y compensan partidas abiertas en cuentas de mayor específicas, lo que reduce el esfuerzo manual de conciliación. | ||
| Por qué es importante Esta actividad destaca el nivel de Dónde obtener Capturado de los Capturar Supervise los Tipo de evento explicit | |||
| Estados Financieros Aprobados | Representa la aprobación final de los estados financieros por parte de la dirección autorizada antes de su publicación. A menudo es un proceso offline, pero puede registrarse si existe un paso de aprobación digital formal. | ||
| Por qué es importante Esta es la Dónde obtener Este Capturar Identifique un campo de Tipo de evento inferred | |||
| Tareas de Consolidación Ejecutadas | Representa la ejecución de actividades de consolidación dentro de SAP Group Reporting, como la conversión de moneda, la reclasificación y la eliminación de beneficios intercompañía. Estas tareas suelen gestionarse y registrarse en el monitor de consolidación. | ||
| Por qué es importante Para organizaciones con múltiples entidades legales, el proceso de consolidación es un elemento crítico. Monitorear estas tareas ayuda a agilizar el cierre del grupo y garantizar informes consolidados oportunos. Dónde obtener Capturado de los Capturar Extraiga los Tipo de evento explicit | |||
| Transferencia de Datos de Sublibros Completada | Representa la finalización de los trabajos por lotes que transfieren datos resumidos de los libros auxiliares, como Cuentas por Cobrar, Cuentas por Pagar y Contabilidad de Activos, al Libro Mayor. Esto asegura que todas las transacciones operativas subyacentes se reflejen en el Libro Mayor antes de que comiencen los procedimientos de cierre. | ||
| Por qué es importante Los retrasos en el cierre de los submódulos pueden ser un Dónde obtener Inferido del estado de finalización exitosa de trabajos por lotes específicos responsables de la liquidación de libros mayores y la transferencia de Capturar Identifique y supervise los Tipo de evento explicit | |||
Guías de Extracción
Pasos
- Identificar y verificar vistas CDS: Inicie sesión en su sistema SAP S/4HANA utilizando SAP HANA Studio o Eclipse con ADT. Utilice las herramientas de desarrollo ABAP para buscar y verificar la existencia de las vistas CDS estándar mencionadas en la consulta, como I_JournalEntryItem, I_BatchJob e I_ConsolidationTaskLog. Para procesos como la conciliación de cuentas, es posible que necesite crear vistas CDS personalizadas, por ejemplo, Z_I_ACCOUNTRECONCILIATION, para capturar cambios de estado.
- Exponer vistas CDS a través de OData: En el
backendde SAP, utilice la transacciónSEGW(Gateway Service Builder) para crear un nuevo proyecto. Haga clic derecho en la carpeta Data Model y seleccione 'Reference -> Data Source'. Agregue las vistas CDS requeridas. Genere los objetos de tiempo de ejecución para crear un servicio OData que exponga estas vistas para el consumo externo. - Activar servicio OData: Vaya a la transacción
/IWFND/MAINT_SERVICEen elhubde SAP Gateway. Haga clic en 'Add Service', busque el servicio que generó en el paso anterior y agréguelo. Esto hace que el servicio esté activo y disponible para consultas. - Establecer conexión de
datos: Desde su herramienta de extracción dedatoselegida (como Python, Power BI o una plataforma ETL dedicada), establezca una conexión con el servicio OData recién creado. Necesitará la URL del servicio y las credenciales adecuadas con autorización para acceder a las vistas CDS. - Adaptar y ejecutar la consulta: Copie la consulta SQL proporcionada. Modifique los valores de los marcadores de posición para los rangos de fechas, los códigos de empresa y cualquier vista CDS personalizada o nombres de trabajos por lotes para que coincidan con su entorno SAP específico. Ejecute la consulta contra el
endpointdel servicio OData. Tenga en cuenta que OData utiliza una sintaxis diferente ($filter, $select), por lo que es posible que deba traducir la lógica de la consulta UNION ALL en una serie de llamadas API separadas, una para cadaactividad. - Consolidar
datosdeactividad: Dado que OData no suele admitir consultas complejas UNION ALL directamente en una sola llamada, ejecutará una solicitud separada para cada bloque deactividaden la consulta. Consolide los resultados de todas las solicitudes en un únicodataseto tabla dentro de su herramienta cliente. - Transformar y limpiar
datos: Revise losdatosconsolidados. Asegúrese de que las columnasEventTimeyEndTimeestén en un formato detimestampconsistente. Verifique queFinancialPeriodtenga el formato correcto 'YYYY-MM'. Maneje los valores NULL en columnas comoResponsibleUseroDocumentNumbersegún sea necesario. - Exportar como
Registro de eventos: Exporte eldatasetfinal consolidado a un archivo CSV. Asegúrese de que los encabezados de las columnas coincidan con losatributosrequeridos:FinancialPeriod,ActivityName,EventTime,EndTime,ResponsibleUser, etc. Este archivo ya está listo para ser cargado en ProcessMind.
Configuración
- Vistas CDS: La consulta se basa en una combinación de vistas CDS estándar y personalizadas. Vistas estándar como
I_JournalEntryItem(para asientos contables) eI_BatchJob(para ejecuciones automatizadas) son esenciales. Las vistas personalizadas, comoZ_I_ACCOUNTRECONCILIATION, suelen ser necesarias para capturar el estado de procesos internos no cubiertos por las vistas estándar. - Rango de Fechas: Defina un rango de fechas específico para la extracción y así gestionar el volumen de datos. La consulta utiliza marcadores de posición
[Start Date]y[End Date]que, por lo general, deben cubrir un período de 3 a 6 períodos fiscales completos para un análisis significativo. - Filtros Clave: La filtración es crucial para el rendimiento y la relevancia. Siempre filtre por
CompanyCode. Otros filtros importantes incluyenLedger(por ejemplo, '0L' para el libro mayor principal),FiscalYear, y valores específicos deDocumentTypepara diferenciar entre contabilizaciones regulares, acumulaciones y ajustes. - Requisitos Previos: El usuario que realiza la extracción requiere autorizaciones en SAP para acceder a las vistas CDS especificadas y ejecutar servicios OData (por ejemplo, objetos de autorización
S_SERVICE,S_RFC). Los servicios de SAP Gateway deben estar configurados y activados. - Rendimiento: La consulta a
I_JournalEntryItempuede consumir muchos recursos. Aplique siempre filtros selectivos, especialmente en fechas, códigos de empresa y libros mayores. Considere ejecutar la extracción durante las horas de menor actividad o utilizar una estrategia de carga incremental para un monitoreo continuo.
a Consulta de ejemplo sql
SELECT
CONCAT(CAST(PostingDate AS DATE FORMAT 'YYYY'), '-', CAST(PostingDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- This is a proxy; this activity is a configuration change often found in change logs (CDHDR/CDPOS for table T001B)
WHERE PostingPeriodVariant = '[Your Variant]' AND FiscalYear = '[Your Fiscal Year]' AND FromPostingPeriod = 1 AND AuthorizationGroup IS NOT NULL -- Logic to detect the opening event
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod, -- Infer period from Job Name if patterned, otherwise use job start date
'Subledger Data Transfer Completed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Subledger Job Prefix]%' AND JobStatus = 'F' -- 'F' for Finished
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(CreationDate AS DATE FORMAT 'YYYY'), '-', CAST(CreationDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Intercompany Reconciliation Started' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
CreatedByUser AS ResponsibleUser,
LeadingCompanyCode AS CompanyCode,
NULL AS GlAccountNumber,
ReconciliationCase AS DocumentNumber,
ReconciliationCaseStatus AS ReconciliationStatus,
NULL AS TargetCompletionDate,
NULL AS ProcessingTime
FROM I_ICRcnCase -- Part of SAP S/4HANA for group reporting
WHERE CreationDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Accrual Doc Type 1]', '[Accrual Doc Type 2]') -- e.g., 'SA', 'AC'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Automated Clearing Run Executed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'SAPF124%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'FAGL_FCV%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on like SAP Account Substantiation and Automation.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
ChangedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'In Progress' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'IN_PROGRESS' AND OldStatus = 'NEW'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Adjustment Doc Type 1]', '[Adjustment Doc Type 2]') -- e.g., 'AJ'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on product.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Approved' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
CAST(ChangedAt AS TIMESTAMP) AS EndTime,
ApprovedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'Approved' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'APPROVED'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Consolidation Tasks Executed' AS ActivityName,
CAST(TaskExecutionUTCTimestamp AS TIMESTAMP) AS EventTime,
CAST(TaskCompletionUTCTimestamp AS TIMESTAMP) AS EndTime,
ExecutedByUser AS ResponsibleUser,
ConsolidationUnitCompanyCode AS CompanyCode, -- Assuming mapping exists
NULL AS GlAccountNumber,
DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(TaskExecutionUTCTimestamp AS TIMESTAMP), CAST(TaskCompletionUTCTimestamp AS TIMESTAMP)) AS ProcessingTime
FROM I_ConsolidationTaskLog
WHERE ConsolidationTaskStatus = 'S' -- Successful
AND TaskExecutionUTCDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Trial Balance Prepared' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Trial Balance Job Prefix]%' AND JobStatus = 'F' -- Example: FAGL_TRIAL_BALANCE_RUN
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Fin Statement Job Prefix]%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- Approval is often a manual step. This requires a custom solution to capture.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(ApprovalYear, '-', LPAD(ApprovalPeriod, 2, '0')) AS FinancialPeriod,
'Financial Statements Approved' AS ActivityName,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EventTime,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EndTime,
ApproverUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
FinancialStatementVersion AS DocumentNumber,
'Approved' AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM Z_I_FINSTATEMENTAPPROVAL -- Placeholder for custom approval tracking view
WHERE ApprovalDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(LastChangeDate AS DATE FORMAT 'YYYY'), '-', CAST(LastChangeDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
CAST(LastChangeDateTime AS TIMESTAMP) AS EventTime,
CAST(LastChangeDateTime AS TIMESTAMP) AS EndTime,
LastChangedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- Proxy, see note on 'Period Opened'
WHERE PostingPeriodStatus = 'C' -- 'C' for Closed
AND LastChangeDate BETWEEN '[Start Date]' AND '[End Date]'; Pasos
- Identificar y verificar vistas CDS: Inicie sesión en su sistema SAP S/4HANA utilizando SAP HANA Studio o Eclipse con ADT. Utilice las herramientas de desarrollo ABAP para buscar y verificar la existencia de las vistas CDS estándar mencionadas en la consulta, como I_JournalEntryItem, I_BatchJob e I_ConsolidationTaskLog. Para procesos como la conciliación de cuentas, es posible que necesite crear vistas CDS personalizadas, por ejemplo, Z_I_ACCOUNTRECONCILIATION, para capturar cambios de estado.
- Exponer vistas CDS a través de OData: En el
backendde SAP, utilice la transacciónSEGW(Gateway Service Builder) para crear un nuevo proyecto. Haga clic derecho en la carpeta Data Model y seleccione 'Reference -> Data Source'. Agregue las vistas CDS requeridas. Genere los objetos de tiempo de ejecución para crear un servicio OData que exponga estas vistas para el consumo externo. - Activar servicio OData: Vaya a la transacción
/IWFND/MAINT_SERVICEen elhubde SAP Gateway. Haga clic en 'Add Service', busque el servicio que generó en el paso anterior y agréguelo. Esto hace que el servicio esté activo y disponible para consultas. - Establecer conexión de
datos: Desde su herramienta de extracción dedatoselegida (como Python, Power BI o una plataforma ETL dedicada), establezca una conexión con el servicio OData recién creado. Necesitará la URL del servicio y las credenciales adecuadas con autorización para acceder a las vistas CDS. - Adaptar y ejecutar la consulta: Copie la consulta SQL proporcionada. Modifique los valores de los marcadores de posición para los rangos de fechas, los códigos de empresa y cualquier vista CDS personalizada o nombres de trabajos por lotes para que coincidan con su entorno SAP específico. Ejecute la consulta contra el
endpointdel servicio OData. Tenga en cuenta que OData utiliza una sintaxis diferente ($filter, $select), por lo que es posible que deba traducir la lógica de la consulta UNION ALL en una serie de llamadas API separadas, una para cadaactividad. - Consolidar
datosdeactividad: Dado que OData no suele admitir consultas complejas UNION ALL directamente en una sola llamada, ejecutará una solicitud separada para cada bloque deactividaden la consulta. Consolide los resultados de todas las solicitudes en un únicodataseto tabla dentro de su herramienta cliente. - Transformar y limpiar
datos: Revise losdatosconsolidados. Asegúrese de que las columnasEventTimeyEndTimeestén en un formato detimestampconsistente. Verifique queFinancialPeriodtenga el formato correcto 'YYYY-MM'. Maneje los valores NULL en columnas comoResponsibleUseroDocumentNumbersegún sea necesario. - Exportar como
Registro de eventos: Exporte eldatasetfinal consolidado a un archivo CSV. Asegúrese de que los encabezados de las columnas coincidan con losatributosrequeridos:FinancialPeriod,ActivityName,EventTime,EndTime,ResponsibleUser, etc. Este archivo ya está listo para ser cargado en ProcessMind.
Configuración
- Vistas CDS: La consulta se basa en una combinación de vistas CDS estándar y personalizadas. Vistas estándar como
I_JournalEntryItem(para asientos contables) eI_BatchJob(para ejecuciones automatizadas) son esenciales. Las vistas personalizadas, comoZ_I_ACCOUNTRECONCILIATION, suelen ser necesarias para capturar el estado de procesos internos no cubiertos por las vistas estándar. - Rango de Fechas: Defina un rango de fechas específico para la extracción y así gestionar el volumen de datos. La consulta utiliza marcadores de posición
[Start Date]y[End Date]que, por lo general, deben cubrir un período de 3 a 6 períodos fiscales completos para un análisis significativo. - Filtros Clave: La filtración es crucial para el rendimiento y la relevancia. Siempre filtre por
CompanyCode. Otros filtros importantes incluyenLedger(por ejemplo, '0L' para el libro mayor principal),FiscalYear, y valores específicos deDocumentTypepara diferenciar entre contabilizaciones regulares, acumulaciones y ajustes. - Requisitos Previos: El usuario que realiza la extracción requiere autorizaciones en SAP para acceder a las vistas CDS especificadas y ejecutar servicios OData (por ejemplo, objetos de autorización
S_SERVICE,S_RFC). Los servicios de SAP Gateway deben estar configurados y activados. - Rendimiento: La consulta a
I_JournalEntryItempuede consumir muchos recursos. Aplique siempre filtros selectivos, especialmente en fechas, códigos de empresa y libros mayores. Considere ejecutar la extracción durante las horas de menor actividad o utilizar una estrategia de carga incremental para un monitoreo continuo.
a Consulta de ejemplo sql
SELECT
CONCAT(CAST(PostingDate AS DATE FORMAT 'YYYY'), '-', CAST(PostingDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- This is a proxy; this activity is a configuration change often found in change logs (CDHDR/CDPOS for table T001B)
WHERE PostingPeriodVariant = '[Your Variant]' AND FiscalYear = '[Your Fiscal Year]' AND FromPostingPeriod = 1 AND AuthorizationGroup IS NOT NULL -- Logic to detect the opening event
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod, -- Infer period from Job Name if patterned, otherwise use job start date
'Subledger Data Transfer Completed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Subledger Job Prefix]%' AND JobStatus = 'F' -- 'F' for Finished
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(CreationDate AS DATE FORMAT 'YYYY'), '-', CAST(CreationDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Intercompany Reconciliation Started' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
CreatedByUser AS ResponsibleUser,
LeadingCompanyCode AS CompanyCode,
NULL AS GlAccountNumber,
ReconciliationCase AS DocumentNumber,
ReconciliationCaseStatus AS ReconciliationStatus,
NULL AS TargetCompletionDate,
NULL AS ProcessingTime
FROM I_ICRcnCase -- Part of SAP S/4HANA for group reporting
WHERE CreationDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Accrual Doc Type 1]', '[Accrual Doc Type 2]') -- e.g., 'SA', 'AC'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Automated Clearing Run Executed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'SAPF124%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'FAGL_FCV%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on like SAP Account Substantiation and Automation.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
ChangedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'In Progress' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'IN_PROGRESS' AND OldStatus = 'NEW'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Adjustment Doc Type 1]', '[Adjustment Doc Type 2]') -- e.g., 'AJ'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on product.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Approved' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
CAST(ChangedAt AS TIMESTAMP) AS EndTime,
ApprovedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'Approved' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'APPROVED'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Consolidation Tasks Executed' AS ActivityName,
CAST(TaskExecutionUTCTimestamp AS TIMESTAMP) AS EventTime,
CAST(TaskCompletionUTCTimestamp AS TIMESTAMP) AS EndTime,
ExecutedByUser AS ResponsibleUser,
ConsolidationUnitCompanyCode AS CompanyCode, -- Assuming mapping exists
NULL AS GlAccountNumber,
DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(TaskExecutionUTCTimestamp AS TIMESTAMP), CAST(TaskCompletionUTCTimestamp AS TIMESTAMP)) AS ProcessingTime
FROM I_ConsolidationTaskLog
WHERE ConsolidationTaskStatus = 'S' -- Successful
AND TaskExecutionUTCDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Trial Balance Prepared' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Trial Balance Job Prefix]%' AND JobStatus = 'F' -- Example: FAGL_TRIAL_BALANCE_RUN
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Fin Statement Job Prefix]%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- Approval is often a manual step. This requires a custom solution to capture.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(ApprovalYear, '-', LPAD(ApprovalPeriod, 2, '0')) AS FinancialPeriod,
'Financial Statements Approved' AS ActivityName,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EventTime,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EndTime,
ApproverUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
FinancialStatementVersion AS DocumentNumber,
'Approved' AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM Z_I_FINSTATEMENTAPPROVAL -- Placeholder for custom approval tracking view
WHERE ApprovalDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(LastChangeDate AS DATE FORMAT 'YYYY'), '-', CAST(LastChangeDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
CAST(LastChangeDateTime AS TIMESTAMP) AS EventTime,
CAST(LastChangeDateTime AS TIMESTAMP) AS EndTime,
LastChangedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- Proxy, see note on 'Period Opened'
WHERE PostingPeriodStatus = 'C' -- 'C' for Closed
AND LastChangeDate BETWEEN '[Start Date]' AND '[End Date]';