您的财务报告 (R2R) - 期末关账与对账数据模板
您的财务报告 (R2R) - 期末关账与对账数据模板
- 建议收集的属性
- 流程分析的关键跟踪活动
- 分步数据提取指南
财务报告 (R2R) - 期末关账与对账属性
| 名称 | 描述 | ||
|---|---|---|---|
| 会计期间 FinancialPeriod | 财务报告周期的唯一标识符,例如 '2023-12' 代表 2023 年 12 月,作为期末结账流程的 case (个案)。 | ||
| 描述 会计期间是核心 case 标识符,它将与特定时间框架(通常为公历月或会计期间)结账相关的所有活动分组。每个会计期间代表一次完整的期末流程运行。 在流程挖掘分析中,此属性允许跟踪从启动到最终报告的整个期末关账生命周期。它用于比较不同期间的周期时间,识别常见的流程路径,并分析月度、季度和年度关账程序之间的差异。通过将每个期间视为一个 case,分析师可以衡量一段时间内的性能并精准定位系统性瓶颈。 为何重要 这是构成分析框架的基本 case 标识符,能够比较一段时间内的期末关账表现,并识别趋势或经常发生的问题。 获取方式 通过结合财务凭证抬头中的会计年度 (GJAHR) 和过账期间 (MONAT) 字段派生,通常来自 BKPF 等表。 示例 2023-122024-032024-Q1 | |||
| 开始时间 EventTime | 指示特定活动何时开始或在系统中记录的时间戳。 | ||
| 描述 事件时间 (Event Time) 捕获活动发生的准确日期和时间。对于财务过账,这通常是凭证的创建时间 (CPUTM) 或过账日期 (BUDAT)。对于状态更改或任务,它是记录更改时的时间戳。 此属性对于活动的按时间顺序排序至关重要,是所有基于时间的分析的基础。它用于计算活动之间的周期时间、特定任务的持续时间以及整体端到端流程的持续时间。它直接支持诸如“平均期末结账周期时间”和“平均对账审批时间”等 KPI。 为何重要 这一强制性时间戳实现了事件的时间排序,是所有持续时间和性能计算的基础。 获取方式 来源于时间戳字段,如表 BKPF 中的创建日期 (CPUDT) 和创建时间 (CPUTM),或各种状态表(如 CDHDR、CDPOS)中的变更日期字段。 示例 2023-12-28T09:15:30Z2024-01-02T14:00:12Z2024-01-05T11:21:00Z | |||
| 活动 ActivityName | 在期末关账流程中执行的特定业务步骤或任务的名称,例如“调整日记账分录已过账”或“过账期间已关闭”。 | ||
| 描述 此属性代表端到端期末关账与对账流程中的单个事件或任务。活动是流程图的基石,显示了执行工作的顺序。它们通常源自 SAP S/4HANA 中的事务代码、单据类型或状态变更的组合。 分析活动是流程挖掘的基础。它有助于可视化流程流,识别与标准程序的偏差,发现活动耗时过长的瓶颈,并了解任务的频率和顺序。这对于“期末关账变体分析”和“当前期间关账状态”等仪表板至关重要。 为何重要 定义流程中的步骤,构成流程图的基础,并实现对流程流、偏离和瓶颈的分析。 获取方式 派生自各种来源,如事务代码 (TCODE)、凭证类型 (BLART),或与财务结账任务相关的表中的状态字段(例如,来自 SAP Financial Closing cockpit)。 示例 期间已开启过账账户对账已启动财务报表已生成公司间对账已启动 | |||
| 公司代码 CompanyCode | SAP 组织内法律实体或公司的唯一标识符。 | ||
| 描述 公司代码代表企业内部的一个独立会计单位,可以为其创建一套完整的、自成体系的账户。所有期末关账活动均在公司代码级别执行。 这是财务分析的一个基本组织维度。在流程挖掘中,它允许比较不同法律实体的期末关账流程。“期末关账变体分析”仪表板利用公司代码来识别不一致之处,并推动关账程序的标准化。 为何重要 提供关键的组织背景,允许对不同法律实体的流程进行比较,以识别差异和最佳实践。 获取方式 几乎存在于 SAP 的所有财务表中,最显著的是抬头表 BKPF(字段 BUKRS)。 示例 10001710US01DE01 | |||
| 凭证号码 DocumentNumber | 财务凭证的唯一标识符,例如日记账分录。 | ||
| 描述 凭证编号是 SAP 为每笔财务过账分配的唯一键。它作为跟踪和审计构成关账流程活动的单笔交易的主要参考。 虽然它本身不是 case ID,但它提供了返回源系统的关键链接。分析师可以使用凭证编号从流程挖掘视图深入到 SAP S/4HANA 中的具体交易细节,进行根本原因分析。在调查特定的调整日记账分录或对账过账时,它特别有用。 为何重要 提供对 SAP 中底层交易的直接引用,实现从流程模型轻松向下钻取和审计。 获取方式 位于财务凭证抬头表 BKPF(字段 BELNR)和行项目表(如 BSEG 或 ACDOCA)中。 示例 100000045190000001300000023 | |||
| 处理时间 ProcessingTime | 单个活动的持续时间,计算为结束时间与开始时间之差。 | ||
| 描述 处理时间(也称为活动持续时间)用于衡量执行单个任务所花费的时间。它是通过从活动的 这一计算指标是性能分析的基础。它有助于精准定位活动层面的瓶颈,是“资源分配效率”和“对账审批吞吐量”仪表板中使用的主要衡量标准。汇总处理时间还可以深入了解流程中的总接触时间 (touch time)。 为何重要 测量单个任务的持续时间,直接突出瓶颈,并为效率分析奠定基础。 获取方式 计算字段: 示例 PT1M30SPT8HP2D | |||
| 对账状态 ReconciliationStatus | 账户对账活动的状态,例如“未结清”、“进行中”或“已批准”。 | ||
| 描述 此属性跟踪给定账户或任务的对账流程状态。它指示对账是已开始、已提交审核、已批准还是已拒绝。状态变更记录了流程中的关键事件。 这是“对账返工分析”仪表板的基础。通过分析状态序列,可以识别“已批准”状态后是否紧跟进一步的调整,从而指示返工。它还通过显示哪些对账在没有任何先前的拒绝或重新开启的情况下获得批准,来支持“一次通过对账率”KPI。 为何重要 跟踪对账任务的进度和结果,从而识别返工、衡量审批率并分析瓶颈。 获取方式 此类信息通常存储在与所使用的特定对账工具相关的表中,例如 SAP Financial Closing Cockpit 或 SAP Account Substantiation and Automation by BlackLine。 示例 未开始准备中已批准已驳回 | |||
| 总账科目编号 GlAccountNumber | 总账中特定账户的标识符。 | ||
| 描述 总账 (GL) 账号用于标识记录财务交易(如现金、应付账款或收入)的各个账户。许多期末活动,如对账和调整分录,都与特定的总账账户直接相关。 此属性对于详细的财务流程分析至关重要。“调整日记账分录分析”仪表板利用它显示各账户的调整量,有助于识别问题领域。“总账账户平均对账时间”KPI 也依赖此属性来定位与特定账户相关的延迟。 为何重要 将流程活动链接到特定的财务账户,从而能够对对账和日记账分录进行详细分析,以找到问题的根本原因。 获取方式 存在于财务凭证行项目表中,主要是 BSEG(字段 HKONT)或 S/4HANA 通用日记账表 ACDOCA。 示例 113100004000000073000000 | |||
| 目标完成日期 TargetCompletionDate | 完成关键活动的计划日期或截止日期,例如生成财务报表。 | ||
| 描述 目标完成日期代表期末关账流程中特定里程碑的内部或外部截止日期。即预期完成任务的日期。 此属性对于衡量进度合规性和对截止日期的执行性能至关重要。它是“报告截止日期合规性”仪表板和“财务报表按时率”KPI 的基础,这些指标将此目标日期与 为何重要 实现针对期限的绩效分析,有助于衡量并提高关键结账活动的按时完成率。 获取方式 这些数据通常驻留在任务管理或调度系统中,例如 SAP Financial Closing Cockpit,其中定义了带有计划结束日期的关账任务列表。 示例 2024-01-05T23:59:59Z2024-04-04T23:59:59Z2024-07-05T23:59:59Z | |||
| 结束时间 EndTime | 指示活动完成时的时间戳。 | ||
| 描述 结束时间标志着任务的完成。在某些情况下,对于系统中记录的即时事件,它可能与开始时间相同。对于具有可衡量持续时间的活动,它代表定稿的时间戳。 结合开始时间,该属性对于计算每个活动的 为何重要 实现活动持续时间(处理时间)的计算,这对于识别性能瓶颈和分析效率至关重要。 获取方式 与开始时间类似,这可以源自各种时间戳字段。对于某些活动,它可能与开始时间相同。对于其他活动,它可能是应用表或修改日志(CDHDR, CDPOS)中单独的“完成日期”或“更改日期”。 示例 2023-12-28T09:16:10Z2024-01-02T17:30:00Z2024-01-05T11:21:00Z | |||
| 负责人 ResponsibleUser | 执行活动或负责该任务的人员的用户 ID。 | ||
| 描述 此属性标识执行特定任务(如过账日记账分录或批准对账)的员工。它通常在系统日志和单据头中捕获为用户 ID。 按用户分析流程对于了解工作量分配、个人绩效和培训需求至关重要。“资源分配效率”仪表板直接使用此属性按用户可视化活动处理时间。通过突出显示许多用户执行的高度重复性任务,它还可以帮助识别自动化候选对象。 为何重要 将流程活动与执行人员联系起来,实现工作负载分析、资源优化和绩效管理。 获取方式 常见于凭证抬头表如 BKPF(字段 USNAM - 用户名)或修改凭证表如 CDHDR(字段 USERNAME)。 示例 ABROWNCSMITHDJOHNSON | |||
| 事务代码 TransactionCode | 用于执行该活动的 SAP 事务代码 (T-code)。 | ||
| 描述 事务代码 (T-code) 是在 SAP 中启动特定功能或程序的快捷方式。例如,FB01 用于过账凭证,FAGLB03 用于显示总账科目余额。T-code 通常为所执行的活动提供明确的技术指标。 此属性有助于为流程模型创建活动定义。它是区分自动和手动活动、并准确了解系统中任务执行方式的可靠方法。分析 T-code 可以揭示员工正在使用的非标准或低效方法。 为何重要 提供有关活动如何执行的技术系统级视图,这对于识别手动与自动步骤以及非标准程序非常有用。 获取方式 存在于财务凭证抬头表 BKPF(字段 TCODE)或修改凭证日志中。 示例 FB01FAGL_FCVF.13 | |||
| 最后数据更新 LastDataUpdate | 指示 data 上次刷新或从 source system 提取的时间的 timestamp。 | ||
| 描述 此属性记录最近一次数据提取的日期和时间。它为流程挖掘工具中正在分析的数据新鲜度提供上下文。 其主要目的是用于数据治理和用户意识。仪表板查看者可以看到分析的时效性,这对于像“当前期间关账状态”这样的近实时监控仪表板尤为重要。它帮助用户了解他们查看的是今天、昨天还是上周的数据。 为何重要 告知用户数据的及时性,确保其了解流程洞察的实时程度。 获取方式 这是在执行时由数据提取或 ETL 工具生成并标记在数据集上的元数据。 示例 2024-06-10T08:00:00Z2024-06-09T08:00:00Z | |||
| 凭证货币 DocumentCurrency | 财务单据中金额的货币代码。 | ||
| 描述 此属性指定记录交易的货币,如美元、欧元或日元。它为 在跨国组织中,按货币进行分析非常重要。它确保货币价值得到正确解释,并且是进行汇总分析时折算为单一报告货币所必需的。如果没有这个上下文, 为何重要 为任何货币值提供必要的上下文,确保金额得到正确解读,特别是在多货币环境中。 获取方式 位于财务凭证抬头表 BKPF(字段 WAERS)中。 示例 美元EURJPY | |||
| 凭证金额 DocumentAmount | 以单据货币计的财务过账总价值。 | ||
| 描述 此属性代表与财务单据关联的货币价值。对于期末调整,这可能是正在过账的预提费用或更正金额。 分析金额对于重要性评估非常有用。它允许分析师优先调查高价值的调整分录,因为这些分录可能构成更大的财务风险。它可用于过滤流程图,以仅关注超过特定阈值的交易,从而将视图简化为最重要的活动。 为何重要 为分析增加财务维度,允许根据货币影响和重要性对问题进行优先级排序。 获取方式 此数值通常需要从行项目表(如 BSEG 或 ACDOCA,字段 WRBTR - 本币金额)中汇总。 示例 15000.00250.75-500.00 | |||
| 实际完成日期 ActualCompletionDate | 关键活动或整个期末关账完成的实际日期。 | ||
| 描述 此属性捕获重要里程碑的实际完成日期。它是财务报表最终批准或过账期间关闭的时间戳。 它是 为何重要 提供里程碑的实际时间,这是衡量计划期限绩效和分析延迟所必需的。 获取方式 来源于序列中最后一个活动的 EventTime,例如“财务报表已批准”或“过账期间已关闭”。 示例 2024-01-06T10:00:00Z2024-04-05T17:00:00Z2024-07-04T11:00:00Z | |||
| 总账分录类型 JournalEntryType | 正在过账的财务凭证类型,用于区分标准分录、预提费用和调整项。 | ||
| 描述 日记账分录类型(在 SAP 术语中称为凭证类型)是用于对会计单据进行分类的键。它控制单据可以过账到哪些账户类型,并用于区分不同的业务交易,例如供应商发票 (KR)、总账过账 (SA) 或客户付款 (DZ)。 在期末关账背景下,此属性对于隔离特定类型的活动至关重要。例如,它允许分析师专注于调整日记账分录,以支持“调整日记账分录分析”仪表板和“调整日记账分录计数”KPI。它还有助于计算“手动过账比例”。 为何重要 对财务交易进行分类,使分析能够专注于特定类型的过账(如手动调整),这对于顺畅结账至关重要。 获取方式 这是财务单据抬头表 BKPF 中的标准字段(BLART 字段)。 示例 SAKRAB | |||
| 是否为对账返工 IsReconciliationRework | 一个布尔标志,如果对账活动后紧跟着驳回或进一步调整,则为 true。 | ||
| 描述 此计算属性标识对账子流程中的返工实例。逻辑会标记以下活动或案例:对账被拒绝、提交后被重新开启,或者在总账账户对账据称已完成后过账了调整分录。 该标志专门设计用于驱动“对账返工分析”仪表板和“对账返工率”KPI。它将复杂的流程序列转换为一个简单的、可衡量的属性,量化返工程度,帮助团队专注于提高一次通过质量。 为何重要 直接量化返工(流程低效的一种主要形式),从而能够针对对账质量进行有针对性的分析和改进工作。 获取方式 根据活动顺序计算。例如,如果在同一期间内,同一总账科目的“对账已审批”后紧跟着“调整日记账分录已过账”,则将标志设置为 true。 示例 truefalse | |||
| 是否已自动化 IsAutomated | 一个布尔标志,用于指示该活动是由系统用户还是自动流程执行的。 | ||
| 描述 此标志区分由人工执行的任务和由系统自动执行的任务,例如外币估值的计划批处理作业或自动清账运行。它通常根据 此属性是了解关账流程自动化程度的关键。它通过突出显示大量手动任务,帮助识别进一步自动化的机会。它还用于根本原因分析,以查看瓶颈是发生在手动步骤还是自动步骤中。 为何重要 区分人工活动和系统活动,这对于识别自动化机会以及分析两者的效率至关重要。 获取方式 这是一个派生属性,通常基于应用于“ResponsibleUser”字段的规则(例如,检查系统或批处理用户 ID,如 'BATCHUSER')或事务代码。 示例 truefalse | |||
| 是否按时 IsOnTime | 一个布尔标志,如果里程碑在目标日期或之前完成,则为 true。 | ||
| 描述 此属性为进度合规性提供简单的二进制结果。通过将特定里程碑(如财务报表批准)的 这是“财务报表按时率”KPI 背后的核心计算。它通过将日期比较转换为明确的“按时”或“延迟”状态,简化了性能跟踪,这种状态在仪表板和报告中易于可视化。它有助于衡量旨在加速关账的计划的有效性。 为何重要 将截止日期合规性分析简化为明确的成功或失败结果,从而轻松跟踪和报告按时完成率。 获取方式 计算字段: 示例 truefalse | |||
| 源系统 SourceSystemId | 从中提取数据的特定 SAP S/4HANA 实例或集团的标识符。 | ||
| 描述 此属性指定数据的源系统。在具有多个 SAP 实例(例如针对不同地区或业务部门)的环境中,此字段对于区分数据源至关重要。 它主要用于数据治理、审计和确保数据完整性。在分析中,如果将来自不同源系统的数据合并到单个流程挖掘模型中,它可以作为过滤器来比较各系统的流程。 为何重要 提供重要的数据谱系和上下文,确保数据来源清晰,特别是在多系统环境中。 获取方式 这通常是数据提取过程中添加的元数据,通常来源于 SAP 中的系统 ID (SY-SYSID) 或客户端 (SY-MANDT)。 示例 S4H_PROD_100S4H_QAS_200ECC_LEGACY_001 | |||
| 结账周期时间 PeriodCloseCycleTime | 一个会计期间所花费的总时间,从第一个活动到最后一个活动。 | ||
| 描述 此指标代表单个 case(会计期间)端到端期末关账流程的持续时间。其计算方法为该期间内最后一项活动与第一项活动的时间戳之差。 这是一个核心关键绩效指标,直接支持“期末关账周期时间概览”仪表板和“平均期末关账周期时间”KPI。它提供了对关账流程整体效率和速度的高水平衡量,允许进行跨时间比较和不同公司代码之间的对标。 为何重要 代表整体流程持续时间的主要 KPI,可用于长期跟踪效率提升情况。 获取方式 在 case 级别计算:针对每个 示例 P5D10H30MP7D2HP6D | |||
财务报告 (R2R) - 期末关账与对账活动
| 活动 | 描述 | ||
|---|---|---|---|
| 公司间对账已启动 | 此活动标志着同一企业集团内不同公司代码之间交易匹配与对账流程的开始。这通常是通过运行对账作业或在 SAP 的 ICMR 工具中创建新的对账案例来启动的。 | ||
| 为何重要 公司间对账通常复杂且耗时。分析其持续时间和流向对于简化集团结账并确保合并财务数据准确至关重要。 获取方式 从 SAP 公司间匹配与对账 (ICMR) 模块内的状态更改,或从该期间第一份对账凭证的创建中推断得出。 捕获 跟踪给定期间 ICMR 工具内对账单位的创建日期或状态变更时间戳。 事件类型 inferred | |||
| 期间已关闭过账 | 这是周期中的最后一项活动,正式关闭过账期间以防止任何进一步的交易。此操作可确保定稿财务报告的数据完整性。 | ||
| 为何重要 此活动作为流程的确定性结束事件。它对于计算整个期末关账周期时间和分析流程完成趋势至关重要。 获取方式 与开启会计期间类似,此事件是从变更单据(表 CDHDR 和 CDPOS)中捕获的。这些单据记录了通过事务代码 OB52 对过账期间控制表 T001B 所做的更新。 捕获 筛选表 T001B 的修改日志,以识别相关会计年度和期间的结账。 事件类型 explicit | |||
| 期间已开启过账 | 这标志着会计期间的开始,即开启过账期间以记录交易。这是由财务管理员在 SAP 中执行的显式的、有日志记录的配置更改,允许新期间的日记账分录。 | ||
| 为何重要 此活动作为期末关账流程的主要启动事件。它能够准确测量总周期时间,并为流程分析提供明确的起点。 获取方式 此事件是从变更单据(表 CDHDR 和 CDPOS)中捕获的,这些单据记录了对过账期间控制表 T001B 的修改,通常通过事务代码 OB52 执行。 捕获 针对特定的会计年度和期间筛选表 T001B 的修改日志。 事件类型 explicit | |||
| 调整日记账分录已过账 | 代表在执行初步对账后进行的更正日记账分录,通常用于修复审查过程中发现的差异。这是在总账中过账的显式交易。 | ||
| 为何重要 调整分录频率较高表明上游流程或对账的首次执行质量较差。分析这些分录是识别错误根本原因并减少返工的关键。 获取方式 记录为 ACDOCA 和 BKPF 表中的显式单据。可以通过特定的凭证类型、关账周期后期的过账日期或特定文本说明进行识别。 捕获 根据凭证类型和相对于对账活动的过账日期的组合,筛选 BKPF 中的日记账分录。 事件类型 explicit | |||
| 财务报表已生成 | 此活动标志着正式财务报表的创建,如资产负债表和损益表。它是期末会计和合并流程的最终成果。 | ||
| 为何重要 这是财务报告 (R2R) 周期中的一个重要里程碑。其时间点对于满足报告截止日期和向利益相关者提供及时信息至关重要。 获取方式 最好通过 SAP Financial Closing Cockpit 等财务结账管理工具捕获,在那里它是一项明确的任务。否则,必须从报表生成日志或文件创建时间戳中推断。 捕获 在关账工具中跟踪“生成财务报表”任务的完成状态,或分析报告执行日志。 事件类型 inferred | |||
| 账户对账已启动 | 标志着证实总账科目余额的手动或半自动流程的开始。当对账状态从“新建”更改为“处理中”或记录第一个编制者操作时推断得出。 | ||
| 为何重要 这是了解资产负债表验证所涉及的时间和精力的关键里程碑。它有助于识别哪些账户或部门开始对账较晚。 获取方式 此事件通常从专用对账工具中捕获,例如 SAP Account Substantiation and Automation by BlackLine 或其他第三方系统。它是从状态变更时间戳推导出来的。 捕获 跟踪给定总账账户对账从“未开始”状态发生第一次状态变更的时间戳。 事件类型 inferred | |||
| 账户对账已审批 | 此活动标志着总账账户对账的最终批准,确认余额已通过验证且任何问题均已解决。这可以从对账工具中状态变更为“已批准”推导出来。 | ||
| 为何重要 该里程碑标志着一项关键控制活动的完成。跟踪审批时间有助于识别审查流程中的瓶颈,对于衡量返工和一次通过率至关重要。 获取方式 通过跟踪最终审批状态的时间戳,从对账管理系统(如 SAP Account Substantiation and Automation)中捕获。 捕获 识别对账状态字段更新为其最终“已审批”状态时的时间戳。 事件类型 inferred | |||
| 合并任务已执行 | 代表在 SAP Group Reporting 中执行合并活动,例如外币折算、重分类以及抵消内部往来利润。这些任务通常在合并监控器中进行管理和记录。 | ||
| 为何重要 对于拥有多个法律实体的组织,合并流程是一个关键路径项。监控这些任务有助于简化集团结账并确保及时的合并报告。 获取方式 从 SAP S/4HANA for Group Reporting 的数据监控器 (Data Monitor) 或合并监控器 (Consolidation Monitor) 中的状态日志中捕获。每个任务通常都有用户、时间戳和状态。 捕获 从 Group Reporting 合并监控器的底层表中提取任务执行日志。 事件类型 explicit | |||
| 外币评估运行 | 这是一项标准的月末程序,用于根据期末汇率对由于外币计价的未结清项和余额进行重估。该程序的执行会过账由此产生的估值差异。 | ||
| 为何重要 确保符合会计准则并提供准确的财务状况。跟踪此活动有助于确保所有货币评估都能及时执行。 获取方式 从外币评估程序(例如 FAGL_FCV)的执行日志中捕获。作业详情存储在表 TBTCO 和 TBTCP 中。 捕获 监控与事务代码 FAGL_FCV 或其底层程序相关的作业执行日志。 事件类型 explicit | |||
| 自动清账运行已执行 | 代表在 SAP 中执行自动清账程序,例如 GR/IR(收货/发票接收)清账运行。这些作业匹配并清理特定总账账户上的未结清项,从而减少手动对账工作量。 | ||
| 为何重要 此活动突出了对账流程的自动化水平。这些运行中的失败或异常会导致大量的后续手动工作和延迟。 获取方式 从特定后台作业(如用于自动清账的 F.13 或 F.13E)的执行日志中捕获。作业日志表 TBTCO 和 TBTCP 包含执行详细信息。 捕获 在 SAP 作业日志中监控与 F.13 等事务代码相关的作业开始和结束时间戳。 事件类型 explicit | |||
| 试算平衡表已编制 | 表示已生成试算平衡表并保存供评审,这是在创建最终财务报表之前的关键检查点。此事件的捕获通常依赖于保存报表输出的程序。 | ||
| 为何重要 试算平衡表的编制是一个关键的质量关卡。分析其时间点有助于了解最终报告的准备情况,并能突出显示前面活动的延迟。 获取方式 这通常不是一个显式事件。它可能通过特定报告事务的执行推导出来(如果变体保存了用户和日期标记),或者该流程是在 SAP Financial Closing Cockpit 等工具中管理的。 捕获 需要系统分析以确定是否存在可靠的日志记录机制,例如报表执行日志或关账控制台任务列表。 事件类型 inferred | |||
| 财务报表已审批 | 代表授权管理层在财务报表发布前进行的最终签字。这通常是一个线下流程,但如果存在正式的数字审批步骤,则可以被捕获。 | ||
| 为何重要 这是最后的质量和控制关卡。跟踪其时间点对于了解报告截止日期的执行情况以及管理层审查周期的整体效率至关重要。 获取方式 如果存在报表审批的工作流或状态字段(例如在 SAP Financial Closing Cockpit 或单据管理系统中),则会捕获此事件。 捕获 识别指示财务报表包最终审批的数据字段和时间戳。 事件类型 inferred | |||
| 辅助账数据传输完成 | 代表完成将汇总数据从应收账款、应付账款和资产会计等辅助账转移到总账的批处理作业。这确保了在关账程序开始之前,所有基础业务交易都已反映在总账中。 | ||
| 为何重要 子分类账结账的延迟可能是整个流程的主要瓶颈。跟踪此活动有助于识别源系统数据收集和集成中的效率低下问题。 获取方式 从负责分类账结算和数据传输的特定后台作业的成功完成状态中推断。作业日志可在表 TBTCO 和 TBTCP 中找到。 捕获 在 SAP 的作业概览(事务代码 SM37)中识别并监控相关后台作业的完成时间戳。 事件类型 explicit | |||
| 预提与准备金已过账 | 此事件捕获为预提、待摊和其他准备金创建的手动日记账分录,这些分录对于权责发生制下的准确财务报告是必要的。这些是过账到总账的显式交易。 | ||
| 为何重要 跟踪这些过账有助于分析手动调整的数量和时间点。高调账量可能意味着上游流程存在自动化或改进的机会。 获取方式 作为显式日记账分录记录在通用日记账表 ACDOCA 和抬头表 BKPF 中。可以通过为预提配置的特定凭证类型来识别这些分录。 捕获 按凭证类型(例如 'SA' 或自定义类型)和期间内的过账日期筛选表 BKPF 中的凭证。 事件类型 explicit | |||
提取指南
步骤
- 识别并验证 CDS 视图: 使用 SAP HANA Studio 或带有 ADT 的 Eclipse 登录您的 SAP S/4HANA 系统。使用 ABAP 开发工具搜索并验证查询中提到的标准 CDS 视图是否存在,例如 I_JournalEntryItem、I_BatchJob 和 I_ConsolidationTaskLog。对于账户对账等流程,您可能需要创建自定义 CDS 视图(例如 Z_I_ACCOUNTRECONCILIATION)来捕获状态更改。
- 通过 OData 暴露 CDS 视图: 在 SAP 后端,使用事务代码
SEGW(Gateway Service Builder) 创建一个新项目。右键单击 Data Model 文件夹并选择 'Reference -> Data Source'。添加所需的 CDS 视图。生成运行对象以创建一个 OData 服务,将这些视图暴露给外部调用。 - 激活 OData 服务: 转到 SAP Gateway hub 上的事务代码
/IWFND/MAINT_SERVICE。点击 'Add Service',找到您在上一步中生成的服务并添加它。这会使服务处于活动状态并可供查询。 - 建立数据连接: 从您选择的数据提取工具(如 Python、Power BI 或专用 ETL 平台)建立到新创建的 OData 服务的连接。您将需要服务 URL 和具有访问 CDS 视图授权的适当凭据。
- 调整并执行查询: 复制提供的 SQL 查询。修改日期范围、公司代码以及任何自定义 CDS 视图或后台作业名称的占位符值,以匹配您的特定 SAP 环境。针对 OData 服务端点执行查询。请注意,OData 使用不同的语法($filter, $select),因此您可能需要将 UNION ALL 查询的逻辑转换为一系列单独的 API 调用,每个活动对应一个调用。
- 整合活动数据: 由于 OData 通常不支持在单个调用中直接执行复杂的 UNION ALL 查询,您将为查询中的每个活动块执行单独的请求。将所有请求的结果合并到客户端工具中的单个数据集或表格中。
- 转换和清理数据: 检查整合后的数据。确保
EventTime和EndTime列采用一致的时间戳格式。验证FinancialPeriod是否正确格式化为 'YYYY-MM'。根据需要处理ResponsibleUser或DocumentNumber等列中的空值 (NULL)。 - 导出为事件日志: 将最终整合的数据集导出为 CSV 文件。确保列标题与要求的属性匹配:
FinancialPeriod、ActivityName、EventTime、EndTime、ResponsibleUser等。此文件现在已准备好上传到 ProcessMind。
配置
- CDS Views: 该查询依赖于标准和自定义 CDS 视图的组合。像
I_JournalEntryItem(用于日记账分录)和I_BatchJob(用于自动运行)这类标准视图至关重要。通常需要自定义视图(如Z_I_ACCOUNTRECONCILIATION)来捕获标准视图未涵盖的内部流程状态。 - 日期范围: 定义提取的具体日期范围以管理数据量。查询使用占位符
[Start Date]和[End Date],通常应涵盖 3 到 6 个完整的会计期间,以便进行有意义的分析。 - 关键筛选器: 筛选对于性能和相关性至关重要。务必通过
CompanyCode进行筛选。其他重要筛选器包括Ledger(例如,主分类账为 '0L')、FiscalYear以及特定的DocumentType值,以区分常规过账、预提和调整。 - 前提条件: 执行提取的用户需要在 SAP 中获得访问指定 CDS 视图和执行 OData 服务的授权(例如,授权对象
S_SERVICE、S_RFC)。必须配置并激活 SAP Gateway 服务。 - 性能: 查询
I_JournalEntryItem可能会消耗大量性能。请务必应用选择性筛选器,特别是针对日期、公司代码和分类账。考虑在非高峰时段运行提取,或使用增量加载策略进行持续监控。
a 查询示例 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]'; 步骤
- 识别并验证 CDS 视图: 使用 SAP HANA Studio 或带有 ADT 的 Eclipse 登录您的 SAP S/4HANA 系统。使用 ABAP 开发工具搜索并验证查询中提到的标准 CDS 视图是否存在,例如 I_JournalEntryItem、I_BatchJob 和 I_ConsolidationTaskLog。对于账户对账等流程,您可能需要创建自定义 CDS 视图(例如 Z_I_ACCOUNTRECONCILIATION)来捕获状态更改。
- 通过 OData 暴露 CDS 视图: 在 SAP 后端,使用事务代码
SEGW(Gateway Service Builder) 创建一个新项目。右键单击 Data Model 文件夹并选择 'Reference -> Data Source'。添加所需的 CDS 视图。生成运行对象以创建一个 OData 服务,将这些视图暴露给外部调用。 - 激活 OData 服务: 转到 SAP Gateway hub 上的事务代码
/IWFND/MAINT_SERVICE。点击 'Add Service',找到您在上一步中生成的服务并添加它。这会使服务处于活动状态并可供查询。 - 建立数据连接: 从您选择的数据提取工具(如 Python、Power BI 或专用 ETL 平台)建立到新创建的 OData 服务的连接。您将需要服务 URL 和具有访问 CDS 视图授权的适当凭据。
- 调整并执行查询: 复制提供的 SQL 查询。修改日期范围、公司代码以及任何自定义 CDS 视图或后台作业名称的占位符值,以匹配您的特定 SAP 环境。针对 OData 服务端点执行查询。请注意,OData 使用不同的语法($filter, $select),因此您可能需要将 UNION ALL 查询的逻辑转换为一系列单独的 API 调用,每个活动对应一个调用。
- 整合活动数据: 由于 OData 通常不支持在单个调用中直接执行复杂的 UNION ALL 查询,您将为查询中的每个活动块执行单独的请求。将所有请求的结果合并到客户端工具中的单个数据集或表格中。
- 转换和清理数据: 检查整合后的数据。确保
EventTime和EndTime列采用一致的时间戳格式。验证FinancialPeriod是否正确格式化为 'YYYY-MM'。根据需要处理ResponsibleUser或DocumentNumber等列中的空值 (NULL)。 - 导出为事件日志: 将最终整合的数据集导出为 CSV 文件。确保列标题与要求的属性匹配:
FinancialPeriod、ActivityName、EventTime、EndTime、ResponsibleUser等。此文件现在已准备好上传到 ProcessMind。
配置
- CDS Views: 该查询依赖于标准和自定义 CDS 视图的组合。像
I_JournalEntryItem(用于日记账分录)和I_BatchJob(用于自动运行)这类标准视图至关重要。通常需要自定义视图(如Z_I_ACCOUNTRECONCILIATION)来捕获标准视图未涵盖的内部流程状态。 - 日期范围: 定义提取的具体日期范围以管理数据量。查询使用占位符
[Start Date]和[End Date],通常应涵盖 3 到 6 个完整的会计期间,以便进行有意义的分析。 - 关键筛选器: 筛选对于性能和相关性至关重要。务必通过
CompanyCode进行筛选。其他重要筛选器包括Ledger(例如,主分类账为 '0L')、FiscalYear以及特定的DocumentType值,以区分常规过账、预提和调整。 - 前提条件: 执行提取的用户需要在 SAP 中获得访问指定 CDS 视图和执行 OData 服务的授权(例如,授权对象
S_SERVICE、S_RFC)。必须配置并激活 SAP Gateway 服务。 - 性能: 查询
I_JournalEntryItem可能会消耗大量性能。请务必应用选择性筛选器,特别是针对日期、公司代码和分类账。考虑在非高峰时段运行提取,或使用增量加载策略进行持续监控。
a 查询示例 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]';