Record to Report - 期間締めおよび照合データ``テンプレート
Record to Report - 期間締めおよび照合データ``テンプレート
- 収集を推奨する項目
- 追跡すべき主要アクティビティ
- 抽出の手引き
Record to Report - 期間締め処理および調整属性
| 名前 | 説明 | ||
|---|---|---|---|
| 会計期間 FinancialPeriod | 通常、会計年度と会計期間を組み合わせた財務報告サイクルの一意の識別子です。 | ||
| 説明 会計期間は主要なケース識別子として機能し、特定の報告サイクル(例:2023年12月の『2023-12』)の勘定科目の締め処理と調整に関連するすべての活動をグループ化します。これにより、各期間の期間締め処理プロセス全体を最初から最後まで包括的に分析できます。 分析では、各締め処理のend-to-endサイクルタイムを追跡し、異なる期間間のパフォーマンスを比較し、傾向や異常を特定できます。各会計期間を一意のケースとして定義することで、締め処理プロセスの効率性、ボトルネック、および時間経過による変動を可視化し、測定することが可能になります。 その重要性 これは分析の枠組みとなる重要なケース識別子であり、締め処理サイクル時間、ワークロード、プロセスのコンプライアンスを期間ごとに比較することを可能にします。 取得元 この属性は通常、財務伝票ヘッダー、例えばBKPFテーブルから、会計年度(GJAHR)と転記期間(MONAT)を連結して導出されます。 例 2023-122024-032023-Q4 | |||
| アクティビティ ActivityName | 期間締め処理中に実行される特定のビジネスイベントまたはタスクの名前です。 | ||
| 説明 この属性は、Record to Reportサイクル内で実行される明確なステップ、例えば「調整仕訳の転記」や「財務諸表の作成」などを記録します。これはプロセスマップのバックボーンを形成し、期間締め処理を構成するイベントの順序を示します。 活動の分析はプロセスマイニングの基本です。プロセスフローの可視化、タスクの順序の特定、プロセスバリエーションの発見、各ステップの頻度と期間の測定に役立ちます。これは、ボトルネック、非標準プロセスパス、標準化または自動化の機会を特定するために不可欠です。 その重要性 この属性は、期間締め処理におけるタスクの順序の可視化と分析を可能にするプロセスマップの構築に必須です。 取得元 これは、SAPトランザクションコード(TCODE)、伝票タイプ(BLART)、または特定のプログラム実行(例:外貨評価のためのFAGL_FCV)の組み合わせから導出されます。 例 調整仕訳エントリ記帳勘定照合開始転記期間締め完了 | |||
| イベント日時 EventTime | アクティビティ/event の発生時刻を示すタイムスタンプ。 | ||
| 説明 イベントタイムは、プロセス内の各活動の正確な日付と時刻を提供し、分析の時系列的な基盤となります。通常、伝票作成日と時刻の組み合わせです。 このタイムスタンプは、プロセスフローを再構築するためにイベントを正確に順序付けるために不可欠です。活動間のサイクルタイム、待機時間、期間締め処理の全体期間を含む、期間ベースのすべてのメトリクスを計算するために使用されます。タイムスタンプを分析することで、遅延を特定し、作業の時間的分布を理解するのに役立ちます。 その重要性 必須属性として、イベントの時系列順序を提供します。これは、サイクルタイムの計算やプロセスボトルネックの発見に不可欠です。 取得元 これは通常、財務伝票のBKPFテーブルにある伝票入力日付(CPUDT)と入力時刻(CPUTM)から取得されます。 例 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| ソースシステム SourceSystem | データが抽出されたソースシステムの識別子。 | ||
| 説明 この属性は、特定のSAP ECCインスタンス名やIDなど、イベントデータの起源を特定します。複数のERPや財務システムを持つ組織では、このフィールドは異なるソースからのデータを区別するために不可欠です。 単一システム環境であっても、データガバナンス、監査、トラブルシューティングのための重要なメタデータとして機能します。これはデータの出所を確認し、分析への信頼を構築し、データリネージを明確にするために不可欠です。 その重要性 データガバナンスのためのデータの出所を裏付ける重要なデータリネージを提供し、複数システム環境でプロセスを区別するために不可欠です。 取得元 これは通常、データ抽出プロセス中に静的値として追加され、特定のSAPクライアントおよびシステムID(例:テーブルT000から)を識別します。 例 ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| 最終データ更新 LastDataUpdate | データが最後に更新されたか、ソースシステムから抽出された時点のタイムスタンプ。 | ||
| 説明 この属性は、分析されるデータの鮮度を示します。データパイプラインが最後に実行された日時を示し、プロセス洞察の最新性に関するコンテキストを提供します。 ダッシュボード、特にリアルタイムの進捗状況を追跡するダッシュボードの場合、このタイムスタンプは、ユーザーが最新情報を見ているのか、それとも前日のデータを見ているのかを理解するために不可欠です。それはユーザーの期待を管理し、分析を正しく解釈するために重要です。 その重要性 データの鮮度をユーザーに知らせ、分析やダッシュボードが常に適時性と関連性を持つために不可欠な情報を提供します。 取得元 この 例 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| GL勘定 HKONT | 明細が転記される一般会計勘定番号です。 | ||
| 説明 一般会計(GL)勘定科目は、財務において取引を分類するコアマスターデータ要素です。すべての財務転記は1つ以上のGL勘定科目に割り当てられます。 期間締め処理のコンテキストでは、GL勘定科目による活動分析は、「勘定調整のボトルネック」および「調整仕訳量分析」ダッシュボードにとって不可欠です。これにより、どの勘定科目が最も調整が困難であるか、最も多くの調整を必要とするか、そして実質的な誤表示のリスクが最も高い可能性のある場所を特定するのに役立ちます。この焦点により、チームは問題のある勘定科目に努力を集中させることができます。 その重要性 照合と調整エントリを対象とした分析を可能にし、遅延の原因となったり頻繁な修正を必要とする問題のある勘定科目を特定するのに役立ちます。 取得元 財務伝票明細テーブルBSEG(HKONT)で利用可能です。 例 113100400500750000 | |||
| ドキュメントタイプ BLART | さまざまな種類の会計伝票を分類するコードです。 | ||
| 説明 伝票タイプはSAPで、仕入先請求書(KR)、顧客支払(DZ)、一般会計転記(SA)など、様々なビジネス取引を区別するために使用されます。また、伝票番号範囲などのプロパティも制御します。 期末締め処理分析においては、伝票タイプは強力なフィルタとなります。未払金、引当金、取消仕訳など、特定の活動タイプを分離するために使用できます。これにより、締め処理関連の様々な取引の量と財務的影響を分析するのに役立ち、プロセスモデル内の特定の活動を定義するために使用できます。 その重要性 取引を分類・フィルタリングし、未収計上、取消、会社間記帳などの特定の活動を分離して分析することを可能にします。 取得元 文書ヘッダーテーブルBKPF(BLART)に存在します。 例 SAABKR | |||
| 仕訳タイプ JournalEntryType | 「標準」、「調整」、「未収」、「取り消し」など、仕訳エントリの分類です。 | ||
| 説明 これは、締め処理プロセス内でのビジネス目的に基づいて財務伝票を分類する派生属性です。多くの場合、伝票タイプ(BLART)、取消理由(STGRD)、または使用されている特定のGL勘定科目の組み合わせによって決定されます。 この分類は、「調整仕訳量分析」ダッシュボードおよび関連KPIにとって基礎となります。調整仕訳や未払金仕訳を明示的に識別することで、アナリストはその量と価値を測定し、経時的な傾向を追跡し、その必要性の根本原因を調査できます。これにより、日常的な運用転記と期末調整を区別するのに役立ちます。 その重要性 記帳を対象別に分類し、プロセス健全性の指標となる調整や未収計上などの主要なエントリタイプの追跡と測定を可能にします。 取得元 これは派生フィールドです。ロジックは、通常BKPFの伝票タイプ(BLART)のようなフィールドを使用して、ビジネスルールに基づいて定義する必要があります。 例 調整発生仕訳取消標準 | |||
| 会社コード BUKRS | 財務諸表が作成される法的エンティティを表す組織単位です。 | ||
| 説明 会社コードは、SAP財務における基本的な組織単位です。それは独自のバランスシートを持つ独立した会社を表します。すべての財務トランザクションは会社コードレベルで転記されます。 プロセスマイニングでは、会社コードでフィルタリングすることは、企業内の異なる法人間で期間締め処理プロセスを比較するために不可欠です。これにより、高性能な法人におけるベストプラクティスを特定し、遅延、高額な調整量、またはプロセスの逸脱に苦しむ法人を特定できます。これは分析をセグメント化するための主要な次元です。 その重要性 異なる法人間の期末決算パフォーマンスとコンプライアンスの比較を可能にし、グループレベルの財務分析にとって重要です。 取得元 このフィールドは、SAPのほぼすべての財務伝票テーブル(主にBKPF(ヘッダー)とBSEG(明細))で利用可能です。 例 10002000US01DE01 | |||
| 伝票番号 BELNR | 会計年度および会社コード内での会計伝票の一意の識別子です。 | ||
| 説明 会計伝票番号は、SAPにおける財務転記の主キーです。各仕訳伝票、請求書、または支払伝票には一意の番号が割り当てられます。 通常、高レベルのプロセス分析には使用されませんが、伝票番号はドリルダウン機能において非常に貴重です。プロセスマイニングのダッシュボードから、アナリストは伝票番号を使用してSAP内の特定のトランザクションに直接移動し、高額な調整仕訳や遅延した調整項目などの異常を詳細に調査できます。これは、洞察から元のトランザクションへの直接リンクを提供します。 その重要性 SAPの元のトランザクションへの直接リンクを提供し、プロセスビューから特定の会計エントリへの詳細なドリルダウン分析を可能にします。 取得元 BKPFテーブル(BELNR)に主キーとして存在します。 例 100000456719000001233000008901 | |||
| 担当ユーザー USNAM | トランザクションを作成または実行した担当者のSAPユーザーIDです。 | ||
| 説明 このフィールドは、伝票を転記したユーザー、レポートを実行したユーザー、または締め処理関連プログラムを実行したユーザーを捕捉します。特定の活動の責任者を特定します。 ユーザー別の分析は、ワークロードの配分を理解し、トレーニングの必要性を特定し、プロセス逸脱を調査するために不可欠です。ユーザーごとの活動を示すダッシュボードは、過負荷のチームメンバーや非標準的な手順に従っている可能性のある個人を浮き彫りにすることができます。また、財務チーム内のパフォーマンス管理とリソース配分にも役立ちます。 その重要性 ワークロードの配分、チームのパフォーマンス、特定の個人に関連するプロセス逸脱の特定を分析することを可能にします。 取得元 伝票作成の場合はBKPFテーブル(USNAM)で利用可能です。バッチジョブの場合はTBTCO(SDLUNAME)で確認できます。 例 JSMITHRDOEFIN_ADMIN | |||
| 現地通貨額 DMBTR | 会社コードの現地通貨で表された、取引明細の財務値です。 | ||
| 説明 この属性は、財務転記に関連する金銭的価値を表します。それは、一般会計における取引の影響を測る中核的な定量的尺度です。 金額の分析は、問題を優先順位付けし、財務リスクを理解するために不可欠です。例えば、「調整仕訳量分析」ダッシュボードは、低価値の調整が大量にある場合と、高価値の調整が少量ある場合を区別できる場合に、はるかに強力になります。これにより、財務的に重要である取引に注意を集中するのに役立ちます。 その重要性 トランザクションの財務的影響を定量化し、重要度に基づいた分析(高額調整仕訳の特定など)を可能にします。 取得元 伝票明細テーブルBSEG(DMBTR)で利用可能です。 例 1500.75-25000.00123456.00 | |||
| 会計年度 GJAHR | 取引が転記された会計年度です。 | ||
| 説明 会計年度は、財務データを整理するための基本的な要素です。会計期間のケースIDの重要なコンポーネントであり、すべての取引に不可欠なコンテキストを提供します。 ケースIDの一部であることが多いですが、会計年度を個別の属性として持つことは、長期的な傾向分析に役立ちます。これにより、締め処理サイクルタイム、調整量、またはその他のKPIの年次比較が可能になり、複数年にわたるパフォーマンスの改善または劣化を特定するのに役立ちます。 その重要性 重要な時間的コンテキストを提供し、締め処理プロセスの年次パフォーマンス比較を可能にします。 取得元 伝票ヘッダーテーブルBKPF(GJAHR)で利用可能です。 例 202320242022 | |||
| 取引先 VBUND | 関連会社間取引に関与する関連グループ会社の識別子です。 | ||
| 説明 取引先IDは、関連会社間取引に参加する他の会社コードを識別するために使用されます。これは、関連する法的エンティティ間の勘定調整に不可欠です。 この属性は、「関連会社間調整フロー」ダッシュボードおよび「関連会社間調整サイクルタイム」KPIを直接サポートします。取引先が存在するトランザクションでフィルタリングすることで、分析は、期間締め処理中の主要な課題となることが多い関連会社間調整プロセスの効率性と適時性に特化できます。 その重要性 関連会社間取引を具体的に識別し、多くの場合複雑で時間のかかる関連会社間調整プロセスに焦点を当てた分析を可能にします。 取得元 伝票明細テーブルBSEG(VBUND)で見つかります。 例 1000US013000 | |||
| 取消理由 ReversalReason | 財務伝票が取り消された理由を示すコードです。 | ||
| 説明 SAPで伝票が取り消される際、「現期間での取り消し」や「誤入力」など、その目的を説明する理由コードを割り当てることができます。 この その重要性 エラーや手戻りの根本原因を直接洞察し、プロセス改善とエラー防止の機会特定を支援します。 取得元 文書ヘッダーテーブルBKPF(STGRD)に存在します。 例 010205 | |||
| 手戻り IsRework | 再作業を示す活動(取り消しや拒否された照合など)を識別する計算済みのフラグです。 | ||
| 説明 このブール属性は、プロセスにおける非効率なループや修正を示すイベントまたはイベントシーケンスにフラグを立てます。例えば、同じ勘定科目で「調整レビュー済み」活動の後に別の「調整仕訳の転記」が続く場合、手戻りとしてフラグが立てられる可能性があります。 この属性は、プロセスの無駄を定量化するために不可欠であり、「調整手戻り発生回数」ダッシュボードおよび「調整手戻り率」KPIをサポートします。手戻りを分離することで、チームは根本原因を調査し、サイクルタイムへの影響を測定し、初回で正しく完了させることを目指すプロセス改善イニシアチブの有効性を追跡できます。 その重要性 修正や繰り返しである活動にフラグを立てることでプロセスの非効率性を定量化し、無駄な労力の測定と削減に役立ちます。 取得元 これは計算属性です。ロジックは、特定の活動シーケンス(例:ループ)または属性(例:ReversalReasonがnullではない)に基づいてプロセスマイニングツールで定義されます。 例 truefalse | |||
| 期間締め処理サイクルタイム PeriodCloseCycleTime | 単一の会計期間における期間締め処理の開始から終了までの経過時間の合計です。 | ||
| 説明 この計算メトリクスは、1つの会計期間における期間締め処理全体のend-to-end期間を測定します。通常、その期間内で最初に記録された活動と最後に記録された活動の時間差として計算されます。 これはRecord to Reportプロセスの主要なKPI(主要業績評価指標)です。締め処理全体の効率性の高レベルな尺度を提供します。このメトリクスを経時的に可視化するダッシュボードは、締め処理の加速といった戦略的目標に向けた進捗を追跡するために不可欠です。 その重要性 これは、財務締め処理全体の効率と速度を測定する重要なKPIであり、締め処理サイクルの短縮という戦略的目標を直接サポートします。 取得元 これは、プロセスマイニングツール内で、各会計期間(CaseId)の最大EventTimeと最小EventTimeの差を取ることによって計算されるメトリクスです。 例 5日 4時間 30分6.2 days120.5 hours | |||
| 期限超過 IsOverdue | 活動が計画された目標日を過ぎて完了したかどうかを示す計算済みのフラグです。 | ||
| 説明 このブール属性は、活動の実際の完了時間(EventTime)を計画された期日(TargetCompletionDate)と比較します。イベントタイムが目標よりも遅い場合、フラグはtrueに設定されます。 この属性は、「締め処理コンプライアンスと未完了タスク」ダッシュボードおよび「オンタイム期間締め処理率」KPIを直接サポートします。これはスケジュール逸脱の明確かつ即時のシグナルを提供し、管理者が遅延タスクを迅速に特定し、全体的なタイムラインへの影響を理解し、チームに期限順守の責任を負わせることを可能にします。 その重要性 スケジュール不遵守の明確な指標を提供し、遅延タスクの迅速な特定とオンタイム実績の測定を可能にします。 取得元 これは、プロセスマイニングツール内でEventTimeとTargetCompletionDateを比較して計算される属性です。 例 truefalse | |||
| 目標完了日 TargetCompletionDate | 活動または期間締め処理全体の計画された締切日または期日です。 | ||
| 説明 目標完了日は、期間締め処理プロセスが測定されるスケジュールを表します。これは、特定のマイルストーンまたは最終的な締め処理が完了するべき期日です。 この属性は、パフォーマンスまたはコンプライアンス関連の分析に不可欠です。「オンタイム期間締め処理率」KPIの計算や、「締め処理コンプライアンスと未完了タスク」ダッシュボードの駆動に使用されます。実際のイベントタイムをこの目標日付と比較することで、システムはタスクが順調か、遅延しているか、遅延のリスクがあるかを判断でき、締め処理プロセスのプロアクティブな管理を可能にします。 その重要性 決算活動が期限内に完了したかどうかを測定するベースラインを提供することで、コンプライアンスとパフォーマンスの監視を可能にし、納期遵守のKPIをサポートします。 取得元 これは通常、個別のカレンダー、クロージングコックピットツール(SAP Financial Closing cockpitなど)、またはスプレッドシートで管理されるマスタ 例 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| 自動化 IsAutomated | 活動が人間のユーザーによって実行されたか、自動システムによって実行されたかを示すフラグです。 | ||
| 説明 このブール属性は、手動タスクと、外貨評価のスケジュール済みバッチジョブや定期的なエントリを転記するボットなど、システムによって自動的に実行されるタスクを区別します。これは通常、トランザクションに関連付けられたユーザー名(例:「BATCHUSER」)を分析することで判断されます。 自動化レベルを理解することは、効率向上機会を特定するための鍵です。この属性を分析することで、プロセスのどの部分が手動で、自動化の可能性が高いかを可視化するのに役立ちます。また、システム生成された活動を除外することで、人間のワークロードを正確に評価するのにも役立ちます。 その重要性 手動活動とシステム主導活動を区別することで、自動化の機会を特定し、手動作業量を正確に測定するために不可欠です。 取得元 これは派生属性です。ロジックは通常、ユーザー名(USNAM)に基づいており、既知のシステムまたはバッチユーザーIDのリストが自動化されたタスクを示します。 例 truefalse | |||
| 調整ステータス ReconciliationStatus | 勘定調整の現在のステータス(「オープン」、「レビュー中」、「承認済み」など)。 | ||
| 説明 この属性は、勘定調整がワークフローを通過する際のその状態を追跡します。調整が開始されたか、レビューのために提出されたか、承認されたか、または却下されたかを示します。 これは、調整活動の進捗状況をリアルタイムで監視するための重要な属性です。どの調整がどのくらいの期間停滞しているかを特定するのに役立ち、「勘定調整サイクルタイム」などのKPIをサポートします。承認プロセスへの可視性を提供し、調整のボトルネックやチームのワークロードを追跡するダッシュボードにとって不可欠です。 その重要性 調整ワークフローの可視性を提供し、進捗状況の追跡、ボトルネックの特定、レビューおよび承認時間の測定を可能にします。 取得元 この情報は、多くの場合、別の調整ツール(例:BlackLineによるSAP勘定照合・自動化)またはカスタムステータスフィールドに存在します。BKPF/BSEGの標準フィールドではありません。 例 未開始進行中承認済み却下 | |||
| 部署 Department | 活動または取引を担当する機能部門またはコストセンターです。 | ||
| 説明 この属性は、取引に関連する「財務」、「営業」、「ロジスティクス」などの業務部門を識別します。これは通常、転記にリンクされたコストセンターマスターデータまたはユーザーのマスターデータから導出されます。 部門別分析は、「締め処理チームのワークロード配分」ダッシュボードをサポートします。これは、異なるビジネス機能が期末ワークロードにどのように貢献しているか、特に後で調整や調整が必要となる可能性のある取引の開始に関して理解するのに役立ちます。コア財務チーム外で締め処理プロセスに影響を与える領域を浮き彫りにすることができます。 その重要性 さまざまな業務機能にわたるワークロードとプロセス遵守状況の分析を支援し、多様な部門が財務決算の効率にどのように影響しているかを明らかにします。 取得元 多くの場合、BSEGのコストセンター(KOSTL)または担当ユーザーの人事マスターデータから導出されます。複数のテーブルの結合が必要になる場合があります。 例 コーポレートファイナンス買掛金FP&A | |||
Record to Report - 期間締め処理および調整活動
| アクティビティ | 説明 | ||
|---|---|---|---|
| 勘定照合開始 | 特定の期間における一連のGL勘定科目の調整プロセスの開始を示します。標準のSAP ECCでは、これは明確なイベントではなく、通常、主要レポートの初回実行などの関連活動から推測されます。 | ||
| その重要性 この活動は、調整フェーズ全体の期間を測定するための重要なマイルストーンとなります。調整がいつ始まるかを理解することは、勘定調整サイクルタイムKPIにとって不可欠です。 取得元 このイベントは明示的にログに記録されません。FAGLB03やFS10Nなどの残高表示レポートの初回実行に関するシステム監査ログ(トランザクションSTAD)など、他のデータソースから推測する必要があります。 取得 システムログ内の関連レポートトランザクション(例:FAGLB03)の初回実行から推測します。 イベントタイプ inferred | |||
| 外貨評価実行 | これは、期末為替レートを使用して外貨建て未決済項目と残高を再評価するプログラムの実行を表します。これは通常、期末締め処理の一部としてバッチジョブとして実行されます。 | ||
| その重要性 これは多国籍企業における正確な財務報告を保証するための重要なステップです。そのタイミングと期間を分析することで、自動化とパフォーマンス最適化の機会を特定するのに役立ちます。 取得元 FAGL_FCVやF.05などの外貨評価プログラムの実行ログから捕捉されます。TBTCOやTBTCPのようなテーブルからのバッチジョブの詳細が実行タイムスタンプを提供します。 取得 プログラムFAGL_FC_VALUATIONまたはSAPF100のバッチジョブログ(テーブルTBTCO)から。 イベントタイプ explicit | |||
| 調整仕訳エントリ記帳 | 期中の初期取引処理が完了した後、勘定残高を修正するために調整仕訳エントリが記帳されます。このイベントは、SAPで標準の財務伝票記帳として捕捉されます。 | ||
| その重要性 これは調整仕訳量分析に不可欠です。大量の調整は、上位プロセス精度に問題があることを示唆しており、プロセス改善イニシアチブの主要なターゲットとなります。 取得元 BKPFおよびBSEGテーブルで見つかります。これらのエントリは通常、調整用に予約された特定の伝票タイプ(BKPF-BLART)によって、または13から16のような特別な決算期間に記帳されることによって識別されます。 取得 特別期間に記帳された伝票、または調整伝票タイプを持つ伝票についてBKPFをフィルターします。 イベントタイプ explicit | |||
| 財務諸表生成済み | これは、損益計算書や貸借対照表などの公式財務諸表が生成される時点を表します。この活動は通常、特定のレポートプログラムの実行を追跡することによって捕捉されます。 | ||
| その重要性 これは、データ処理の終了と最終レビューおよび承認フェーズの開始を示す主要なマイルストーンです。このイベントから承認までの時間は重要なKPIとなります。 取得元 システム監査ログ(STADなど)から推測されます。STADは、最も一般的なトランザクションF.01である財務諸表生成プログラムの実行を記録します。 取得 財務諸表トランザクションF.01の実行を追跡するシステムログ(STAD)から。 イベントタイプ inferred | |||
| 転記期間オープン | これは財務期間の公式な開始を示し、総勘定元帳へのトランザクションの転記を可能にします。これは、権限のあるユーザーが特定の期間を1つ以上の会社コードで転記可能にするために実行する明示的な設定変更です。 | ||
| その重要性 この活動は、期間締め処理ケースの決定的な開始イベントとして機能します。この時点からの時間を分析することで、会計期間の完全なライフサイクルを理解するのに役立ちます。 取得元 トランザクションOB52を介した記帳期間の変更はログに記録されます。これらの変更は、通常CDHDRおよびCDPOSテーブルを使用して、基礎となる設定テーブルT001Bの変更伝票を分析することで抽出できます。 取得 テーブルT001Bの変更伝票(CDHDR/CDPOS)から抽出します。 イベントタイプ explicit | |||
| 転記期間締め完了 | 転記期間の正式な締め処理を示し、それ以上の運用仕訳を防ぎます。これにより、締められた期間の財務データの整合性が確保され、明示的な構成変更となります。 | ||
| その重要性 これは期間締め処理の最終 取得元 トランザクションOB52による期間の締め処理が記録されます。これらの変更は、設定テーブルT001Bの変更伝票(テーブルCDHDRおよびCDPOS)を分析することで見つけることができます。 取得 テーブルT001Bの変更伝票(CDHDR/CDPOS)から抽出します。 イベントタイプ explicit | |||
| GR/IR決済実行済み | GR/IR勘定の自動決済プログラムの実行です。このプログラムは、対応する商品受領と請求書受領を照合し、互いの項目を決済します。 | ||
| その重要性 GR/IR勘定は調整問題の頻繁な発生源です。この活動を監視することで、自動化ステップが正しく実行されていることを確認し、手動でのフォローアップが必要な例外の量を定量化するのに役立ちます。 取得元 実行はバッチジョブログ(トランザクションSM37)に捕捉されます。プログラムは通常SAPF124で、トランザクションF.13を介して実行されます。TBTCOのようなジョブログテーブルが、必要なタイムスタンプを提供します。 取得 クリアリングプログラムSAPF124のバッチジョブログ(テーブルTBTCO)から。 イベントタイプ explicit | |||
| 取消仕訳の転記 | この活動は、以前に転記された仕訳を、多くの場合エラーを修正するために取り消す伝票の転記を捕捉します。SAPは、取消伝票と元の伝票の間に明示的なリンクを作成します。 | ||
| その重要性 多数の取り消しは、データ入力の正確性やプロセス管理における潜在的な問題を示唆します。これらのイベントを追跡することで、初回正確率を測定し、改善が必要な領域を特定するのに役立ちます。 取得元 取消伝票はBKPFテーブルで見つかります。これらは多くの場合、トランザクションFB08で作成され、BKPF-STBLGフィールドに取り消された伝票番号への参照を含んでいます。 取得 BKPF-STBLGが入力されている伝票、または取消トランザクションコードを介して作成された伝票を特定します。 イベントタイプ explicit | |||
| 未収/引当金記帳 | これは、通常期間の終わりに転記される未払金、前払金、または引当金に関する仕訳の記録を表します。これはSAPにおける独立した`イベント`タイプではなく、特定の仕訳の特性に基づいて推測されます。 | ||
| その重要性 これらのエントリを分離することで、見積管理のサブプロセスを分析できます。高頻度または大量の未払金調整は、プロセス改善の余地があることを示唆しています。 取得元 財務伝票テーブルBKPFおよびBSEGから推測されます。エントリは、特定の伝票タイプ(BKPF-BLART)、一意のGL勘定科目(BSEG-HKONT)、またはヘッダーテキストのキーワード(BKPF-BKTXT)で絞り込むことで特定できます。 取得 BKPF/BSEGテーブルを伝票タイプ、特定のGL勘定、またはテキストフィールドでフィルターします。 イベントタイプ inferred | |||
| 試算表レポート生成 | 試算表を作成するレポートの実行を示します。これは、正式な財務諸表を作成する前に、借方合計と貸方合計が一致することを確認するための重要なステップです。 | ||
| その重要性 これは最終報告前の重要な品質ゲートです。このレポートの繰り返し実行は、根本的なデータ問題が発見され修正されている可能性を示唆しており、遅延の原因となることがあります。 取得元 システム監査ログ(トランザクションSTADなど)から推測されます。STADは、S_ALR_87012277やF.01などの試算表レポートトランザクションの実行を記録できます。 取得 レポートトランザクションコードの実行を追跡するシステムログ(STAD)から。 イベントタイプ inferred | |||
| 調整レビュー済み | 特定の勘定科目または勘定科目グループの照合がレビューされ、確認されたことを示します。標準のSAP ECCでは、これは明示的にログに記録されるイベントではなく、多くの場合オフラインのコントロールやカスタムソリューションを通じて管理されます。 | ||
| その重要性 レビューのタイミングを追跡することは、締め処理の管理・監督段階における 取得元 この情報は標準のECCテーブルでは利用できません。カスタムZテーブルのステータスフィールド、シンプルなワークフロー、または専門の第三者調整ツールとの統合など、カスタムソリューションが必要となります。 取得 カスタムワークフローまたはZテーブルが実装されている場合、そこからステータス変更を捕捉します。 イベントタイプ inferred | |||
| 関連会社間伝票の決済完了 | この活動は、2つの異なる会社コード間のオープン項目の決済を示し、関連会社間取引が決済または調整されたことを意味します。これは通常、決済伝票としてSAPに明示的な財務転記として記録されます。 | ||
| その重要性 会社間取引項目のクリアの遅延は、決算プロセスにおける一般的なボトルネックです。この活動を追跡することは、会社間照合のサイクルタイムを測定し改善するために不可欠です。 取得元 BKPFおよびBSEGの財務伝票から識別されます。決済伝票は未消込明細にリンクしてこれをクローズし、その決済日(BSEG-AUGDT)がイベントタイムスタンプとして機能します。会社間取引は取引先項目によって識別されます。 取得 取引先項目を含む明細が関連するBKPF/BSEGの決済伝票を特定します。 イベントタイプ explicit | |||
抽出ガイド
ステップ
- SAPクエリツールへのアクセス: SAP ECCシステムにログインします。トランザクションコード
SQVI(QuickViewer)に移動します。 2. 新しいクエリの作成: クエリ名(例:Z_R2R_PERIOD_CLOSE)を入力し、「作成」をクリックします。ポップアップで「Record to Report Period Close Extraction」のような記述的なタイトルを指定します。「データソース」には「テーブル結合」を選択します。 3. テーブル結合の定義: プライマリテーブルBKPF(会計伝票ヘッダー)を追加します。次に、BSEG(会計伝票セグメント)を追加します。SAPは自動的に結合条件(MANDT、BUKRS、BELNR、GJAHR)を提案しますので、これらを確認して受け入れます。期間の開始と終了活動については、CDHDRとCDPOSを結合する別のクエリが必要になります。 4. 出力フィールド(リストフィールド)の選択: 「リストFld.選択」タブに移動します。利用可能なテーブルからイベントログに必要なフィールドを選択します。これにはBKPF-BUKRS、BKPF-BELNR、BKPF-GJAHR、BKPF-MONAT、BKPF-CPUDT、BKPF-CPUTM、BKPF-USNAM、BKPF-BLART、BSEG-HKONT、BSEG-DMBTRなどが含まれます。 5. 入力パラメータ(選択フィールド)の定義: 「選択フィールド」タブに移動します。実行時にデータをフィルタリングするために使用されるフィールドを選択します。最も重要なフィールドはBKPF-BUKRS(会社コード)とBKPF-GJAHR(会計年度)です。BKPF-MONAT(記帳期間)とBKPF-BLART(伝票タイプ)も追加できます。 6. 各活動のバリアント作成: SQVIは異なるデータ選択(SQL UNIONのようなもの)を結合できないため、クエリを複数回実行する必要があります。各活動(例: 「未収/引当金記帳」)について、クエリを実行し、選択画面で未収金に関連する伝票タイプのリストなど、特定のフィルタ値を入力します。この選択基準のセットをバリアントとして保存します。抽出可能な各活動に対してこのプロセスを繰り返します。 7. データの実行と抽出: 作成した各バリアントに対してクエリを実行します。これにより、特定のフィルタでクエリが実行されます。 8. 結果のエクスポート: 結果画面でデータをローカルファイルにエクスポートします。最も一般的な形式は「スプレッドシート」です。各バリアントについてエクスポートを繰り返します。 9. データの結合と変換: エクスポートされたファイルをスプレッドシートプログラムで開くか、スクリプトツールを使用します。すべてのファイルからのデータを手動で単一のマスターファイルに結合します。 10. 定数および計算列の追加: 結合されたファイルに、SAPテーブルから直接抽出されない列を追加します。これにはActivityName(データがどのバリアントから来たかに基づいて手動で設定)、FinancialPeriod(会計年度と期間を連結)、EventTime(日付と時刻フィールドを結合)、SourceSystem、LastDataUpdateが含まれます。 11. アップロード形式: プロセスマイニングツールに必要な正しい列ヘッダーで最終ファイルをCSVまたはExcel形式で保存されていることを確認します。アップロード前にデータ型と書式設定を確認します。
設定
- データソース: SAP Query (SQVI) のテーブル結合。主要テーブルはBKPF、BSEG、CDHDR、CDPOSです。 * 日付範囲: パターンを特定するために、少なくとも3〜6会計期間分のデータを抽出することをお勧めします。
BKPF-GJAHR(会計年度)とBKPF-MONAT(期間)にフィルターを設定してください。 * 会社コードフィルター: データ量を制限し、特定の法人に分析を集中させるために、常にBKPF-BUKRS(会社コード)でフィルターしてください。すべての会社コードを一度に抽出することはお勧めしません。 * 伝票タイプフィルター:BKPF-BLART(伝票タイプ)でフィルターを使用して、未収計上、調整、取消などの特定の活動を分離します。貴社の組織に関連する伝票タイプを取得する必要があります。 * 前提条件: 抽出を実行するユーザーは、SQVIトランザクションを使用する権限と、関連する財務テーブル(例:権限オブジェクトS_TABU_DIS)への表示アクセス権が必要です。 * パフォーマンスに関する考慮事項: BKPFとBSEGの結合はリソースを大量に消費する可能性があります。抽出はオフピーク時間に実行してください。非常に広い日付範囲を使用したり、会社コードフィルターを開放したりすることは、メモリの問題やタイムアウトにつながる可能性があるため避けてください。
a クエリ例 config
/*
LOGICAL REPRESENTATION FOR SAP QUERY (SQVI)
This is not a single executable script. Due to limitations in SQVI, you must create a base query joining BKPF and BSEG, then run it multiple times using different selection screen variants to extract each activity below. The results must be combined manually.
A separate query joining CDHDR and CDPOS is needed for period open/close activities.
*/
-- Activity 1: Period Opened For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW > CDPOS.VALUE_OLD;
UNION ALL
-- Activity 2: Accrual Or Provision Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Accrual' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('SA', '[Your Accrual Doc Type]'); -- Filter by document types used for accruals
UNION ALL
-- Activity 3: Intercompany Document Cleared
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.AUGBL AS BELNR, -- The clearing document number
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BSEG.AUGBL IS NOT NULL AND BSEG.VBUND IS NOT NULL; -- Identify cleared items with an intercompany trading partner
UNION ALL
-- Activity 4: Foreign Currency Valuation Run
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Valuation' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('FAGL_FCV', 'FBB1'); -- Filter by FCV transaction code
UNION ALL
-- Activity 5: GR/IR Clearing Run Executed
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('F.13', 'F13E'); -- Filter by automated clearing transaction codes
UNION ALL
-- Activity 6: Account Reconciliation Started (Proxy)
-- This is a proxy. It takes the earliest adjusting journal entry timestamp for the period.
SELECT
A.FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
MIN(A.EventTime) AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
A.BUKRS,
NULL AS BELNR,
NULL AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM (
SELECT CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
BKPF.BUKRS
FROM BKPF
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]')
) AS A
GROUP BY A.FinancialPeriod, A.BUKRS;
UNION ALL
-- Activity 7: Adjusting Journal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Adjusting' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]'); -- Filter by document types for adjustments
UNION ALL
-- Activity 8: Reversal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Reversal' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.STBLG IS NOT NULL; -- STBLG (Reversed Document Number) is populated for reversals
UNION ALL
-- Activity 9: Period Closed For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW < CDPOS.VALUE_OLD;
/*
-- Activities Not Extractable via this Method
-- The following activities are not data postings and cannot be reliably extracted by querying finance tables BKPF/BSEG.
-- Extraction would require analyzing application logs (SLG1), system logs (STAT), or custom-built logging solutions.
-- Activity: Trial Balance Report Generated
-- Activity: Financial Statements Generated
-- Activity: Reconciliation Reviewed
*/ ステップ
- プログラムのスコープ設定と設計: 必要な12の活動それぞれを識別するための具体的なロジックを定義します。ビジネスプロセスオーナーおよびSAP機能アナリストと協議し、貴社のSAP ECC環境における期末決算活動に関連する伝票タイプ、G/L勘定、およびプログラム名を確認します。
- ABAPプログラムの作成: トランザクション
SE38(ABAPエディタ)を使用して、新しい実行可能プログラム、例えばZ_PM_R2R_EXTRACTIONを作成します。記述的なタイトルを提供し、プログラムタイプを「実行可能プログラム」に設定します。 - 選択画面の定義: プログラム内で、
PARAMETERSとSELECT-OPTIONSを使用して選択画面を定義します。この画面により、ユーザーは会社コード(BUKRS)、会計年度(GJAHR)、および記帳期間(MONAT)を含む抽出スコープを指定できます。これはデータ量を制御するために非常に重要です。 - データ構造の宣言: 最終的なイベントログデータを保持する内部テーブル構造を定義します。この構造には、
FinancialPeriod、ActivityName、EventTime、SourceSystem、LastDataUpdate、BUKRS、BELNR、USNAM、HKONT、BLART、DMBTR、およびJournalEntryTypeという、必須および推奨されるすべての属性を含める必要があります。 - データ抽出ロジックの実装: 12の活動それぞれに対してデータを検索するコアABAPロジックを記述します。各活動について、関連するSAPテーブル(例:BKPF、BSEG、TBTCO、CDHDR)を照会し、中間内部テーブルにデータを格納します。付属のABAPクエリセクションで提供されているロジックをテンプレートとして使用します。
- 推測される活動の特定: 標準SAPで明示的にログに記録されない活動、例えば「勘定照合開始」や「照合レビュー済み」については、合意された推測ロジックを実装します。これには、特定のレポートの初回実行を確認したり、カスタムの「Z-テーブル」が存在する場合はそれらを照会したりすることが含まれる場合があります。
- イベントデータの統合: 個々の活動すべてのデータを抽出した後、各中間テーブルからのレコードを最終的な統合内部テーブルに追加します。
EventTimeフィールドが、伝票記帳日付/時刻やジョブ開始日付/時刻などの関連するソースフィールドから正しく入力されていることを確認します。 - データの標準化とフォーマット: 出力前に、主要なフィールドを標準化します。会計年度と期間を結合して
FinancialPeriod識別子を作成します。SourceSystemとLastDataUpdateには静的な値を設定します。タイムスタンプが一貫した形式であることを確認します。 - 出力機能の開発: 最終的な内部テーブルをエクスポートする機能をプログラムに追加します。最も一般的な方法は、SAPアプリケーションサーバー上のCSVまたはタブ区切りファイルにデータを書き込む(
OPEN DATASETを使用)か、ユーザーがローカルマシンに直接ダウンロードできるようにする(関数モジュールGUI_DOWNLOADを使用)ことです。 - テストと検証: 複数の会社コードと期間をカバーする代表的なデータセットを使用して、プログラムを徹底的にテストします。検証ステップを使用して、データの正確性と完全性を確認します。機能専門家からのフィードバックに基づいて選択ロジックを洗練させます。
- 実行のスケジュール設定(オプション): 検証後、プログラムはトランザクション
SM36を介してバックグラウンドジョブとしてスケジュール実行できます。これにより、手動介入なしでイベントログを自動的かつ定期的に抽出できます。
設定
- 選択基準: プログラムにはデータをフィルタリングするための選択画面が必要です。主なフィルタは以下の通りです。
会社コード (BUKRS): 関連する法人にスコープを限定するために必須です。会計年度 (GJAHR): データ抽出の主となる年を定義するために必須です。記帳期間 (MONAT): 特定の会計期間を選択するために必須です。
- 活動固有の設定: 多くの選択は、貴社の特定のSAP設定に依存します。これらはプログラム内でパラメータまたは定数として設定可能であるべきです。
未収/引当金伝票タイプ: 未収金および引当金記帳を識別するために使用される伝票タイプ (BLART) のリストです。調整仕訳伝票タイプ: 調整仕訳エントリを識別するために使用される伝票タイプのリストです。バックグラウンドジョブ/プログラム名: 外貨評価 (例:FAGL_FCV)、GR/IR消込 (例:SAPF124)、試算表レポート、および財務諸表生成 (例:RFBILA00) に使用されるプログラムの技術名です。
- 日付範囲: 主な選択は会計年度と期間によるものですが、基盤となるロジックはイベントの完全な日付と時刻を考慮する必要があります。初期分析では、直近の完了した3〜6会計期間のデータを抽出することをお勧めします。
- パフォーマンス: 大規模なSAP環境では、プログラムのパフォーマンスが重要です。データベース選択がインデックスフィールド、特に
BKPFおよびBSEGのようなテーブルでインデックスを使用していることを確認してください。すべてのフィールドを選択すること (SELECT *) を避け、必要に応じてデータを管理可能なパッケージで処理してください。 - 権限: このプログラムを実行するユーザーまたはサービスアカウントは、照会されるすべてのテーブル (
BKPF、BSEG、TBTCO、TBTCP、CDHDR、CDPOS) へのアクセス権限、およびSE38(開発用) およびSM37/SM36(スケジュールおよび監視用) のようなトランザクションを実行する権限が必要です。
a クエリ例 abap
REPORT Z_PM_R2R_EXTRACTION.
" ====================================================================
" DATA DECLARATIONS
" ====================================================================
TYPES: BEGIN OF ty_event_log,
FinancialPeriod TYPE string,
ActivityName TYPE string,
EventTime TYPE timestamp,
SourceSystem TYPE string,
LastDataUpdate TYPE timestamp,
BUKRS TYPE bukrs,
BELNR TYPE belnr_d,
USNAM TYPE usnam,
HKONT TYPE hkont,
BLART TYPE blart,
DMBTR TYPE dmbtr,
JournalEntryType TYPE string,
END OF ty_event_log.
DATA: lt_final_log TYPE STANDARD TABLE OF ty_event_log,
ls_log_entry LIKE LINE OF lt_final_log.
DATA: lv_source_system TYPE string VALUE 'SAP ECC'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_bukrs FOR ls_log_entry-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_monat FOR bkpf-monat OBLIGATORY.
PARAMETERS: p_accrl TYPE blart DEFAULT 'SA', " Example Doc Type for Accruals
p_adjst TYPE blart DEFAULT 'AJ', " Example Doc Type for Adjustments
p_fcv TYPE btcjob DEFAULT 'FAGL_FCV*', " Program for FC Valuation
p_grir TYPE btcjob DEFAULT 'SAPF124*', " Program for GR/IR Clearing
p_fs TYPE btcjob DEFAULT 'RFBILA00'. " Program for Fin. Statements
" ====================================================================
" MAIN LOGIC
" ====================================================================
START-OF-SELECTION.
" --- 1. Period Opened For Posting ---
" Note: This is complex. This example queries change documents for posting period config (T001B).
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_open)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_open INTO DATA(ls_period_open).
" Further logic needed to parse OBJECTID and check CDPOS for opening a period.
" This is a simplified placeholder for a complex logic.
ls_log_entry-ActivityName = 'Period Opened For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" --- 2. Accrual Or Provision Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_accrual)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_accrl.
LOOP AT lt_accrual INTO DATA(ls_accrual).
CLEAR ls_log_entry.
CONVERT DATE ls_accrual-cpudt TIME ls_accrual-cputm INTO TIME STAMP ls_log_entry-EventTime TIME ZONE sy-zonlo.
CONCATENATE ls_accrual-gjahr ls_accrual-monat INTO ls_log_entry-FinancialPeriod.
ls_log_entry-ActivityName = 'Accrual Or Provision Posted'.
ls_log_entry-BUKRS = ls_accrual-bukrs.
ls_log_entry-BELNR = ls_accrual-belnr.
ls_log_entry-USNAM = ls_accrual-usnam.
ls_log_entry-HKONT = ls_accrual-hkont.
ls_log_entry-BLART = ls_accrual-blart.
ls_log_entry-DMBTR = ls_accrual-dmbtr.
ls_log_entry-JournalEntryType = 'Accrual'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
ls_log_entry-SourceSystem = lv_source_system.
APPEND ls_log_entry TO lt_final_log.
ENDLOOP.
" --- 3. Intercompany Document Cleared ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_ic_clear)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat
AND h~blart = 'AB' AND i~vbund <> space.
LOOP AT lt_ic_clear INTO DATA(ls_ic_clear).
" Populate ls_log_entry and append to lt_final_log, setting ActivityName = 'Intercompany Document Cleared'
ENDLOOP.
" --- 4. Foreign Currency Valuation Run ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fcv_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fcv AND j~status = 'F'. " F = Finished
LOOP AT lt_fcv_jobs INTO DATA(ls_fcv_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Foreign Currency Valuation Run'
ENDLOOP.
" --- 5. GR/IR Clearing Run Executed ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_grir_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_grir AND j~status = 'F'.
LOOP AT lt_grir_jobs INTO DATA(ls_grir_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'GR/IR Clearing Run Executed'
ENDLOOP.
" --- 6. Account Reconciliation Started (Inferred) ---
" Note: Inferring this by first run of a report, e.g., FAGLB03. Requires custom logging or complex logic.
" Placeholder: Query a custom log table if available.
" SELECT ... FROM zreco_log ...
" --- 7. Adjusting Journal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_adjust)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_adjst.
LOOP AT lt_adjust INTO DATA(ls_adjust).
" Populate ls_log_entry and append, setting ActivityName = 'Adjusting Journal Entry Posted', JournalEntryType = 'Adjusting'
ENDLOOP.
" --- 8. Reversal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_reversal)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~stblg <> space.
LOOP AT lt_reversal INTO DATA(ls_reversal).
" Populate ls_log_entry and append, setting ActivityName = 'Reversal Entry Posted', JournalEntryType = 'Reversal'
ENDLOOP.
" --- 9. Trial Balance Report Generated (Inferred from Job) ---
" Similar to other jobs, query TBTCO for Trial Balance report programs.
" SELECT ... FROM tbtco ... WHERE jobname LIKE '[Your Trial Balance Program]'.
" --- 10. Financial Statements Generated ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fs_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fs AND j~status = 'F'.
LOOP AT lt_fs_jobs INTO DATA(ls_fs_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Financial Statements Generated'
ENDLOOP.
" --- 11. Reconciliation Reviewed (Inferred) ---
" Note: This activity is almost always managed outside of SAP or in a custom solution.
" Placeholder: Query a custom approval/log table if available.
" SELECT ... FROM zreco_approval ...
" --- 12. Period Closed For Posting ---
" Note: Similar to 'Period Opened', this is very complex. Query change documents for T001B.
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_close)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_close INTO DATA(ls_period_close).
" Further logic needed to parse OBJECTID and check CDPOS for closing a period.
ls_log_entry-ActivityName = 'Period Closed For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" ... Code to display or download the lt_final_log internal table ...
ENDFORMS. ステップ
- 前提条件の収集: 基盤となるSAP ECCデータベースへの読み取り専用アクセス認証情報を取得します。正しいデータベーススキーマを特定します。これは通常
SAPSR3またはデータベース管理者から提供される同様の名前です。 - システム設定の特定: SAP財務チームと連携し、分析に必要な特定の
会社コード(BUKRS) および会計期間を決定します。特に、システムで「未収/引当金記帳」、「調整仕訳エントリ記帳」、および「会社間取引」に使用される特定の伝票タイプ(BLART) を特定することが重要です。 - プログラム名とジョブ名の確認: 外貨評価 (例:
FAGL_FCV)、GR/IR決済 (例:SAPF124)、試算表レポート (例:RFBILA00)、財務諸表生成 (例:RFBILA00) などの主要なバッチジョブのプログラム名を確認します。これらはトランザクションSM37でスケジュールされたジョブを確認することで見つけることができます。 - SQLクエリのカスタマイズ: 提供されたSQLクエリをテキストエディタまたはSQLクライアントにコピーします。プレースホルダー変数
{{start_date}}、{{end_date}}、および{{company_codes}}を分析の実際の値に置き換えます。前のステップで収集した情報に基づいて、伝票タイプとプログラム名のリストを更新します。 - データベースへの接続: DBeaver、SQL Server Management Studio、Oracle SQL Developerなどの標準SQLクライアントツールを使用して、取得した認証情報でSAPデータベースに接続します。
- クエリの実行: カスタマイズしたSQLクエリをデータベースに対して実行します。日付範囲と財務テーブルのサイズによっては、このクエリの完了にかなりの時間がかかる場合があります。
- 初期結果の確認: クエリが完了したら、出力の簡単なレビューを行います。妥当な行数があるか、すべての列が存在するか、異なる
ActivityName値が結果に含まれているかを確認します。 - データのエクスポート: SQLクライアントから完全な結果セットをCSVファイルにエクスポートします。文字化けを防ぐために、ファイルがUTF-8エンコーディングで保存されていることを確認します。
- アップロードの準備: プロセスマイニングツールにアップロードする前に、CSVファイル内の列ヘッダーが必須属性名(
FinancialPeriod、ActivityName、EventTimeなど)と完全に一致していることを確認します。また、EventTime列がYYYY-MM-DD HH:MI:SSのような一貫したタイムスタンプ形式であることを確認します。
設定
- データベース認証情報: コアとなるSAP財務テーブルおよびシステムテーブルへのアクセス権を持つ読み取り専用データベースユーザーが必要です。これには
BKPF、BSEG、TBTCO、CDHDR、CDPOSなどのテーブルが含まれます。 - 日付範囲: 意味のあるプロセスバリエーションを捕捉するために、少なくとも3〜6会計期間分のデータを抽出することをお勧めします。日付範囲が広いほど、クエリの実行時間が大幅に増加することに留意してください。
- 会社コード (
BUKRS): 常に特定の会社コードリストでフィルタリングしてください。大規模なシステムですべての会社コードに対してクエリを実行することは実行不可能であり、パフォーマンスの問題を引き起こす可能性が高いです。 - 伝票タイプ (
BLART): 未収金や調整などの仕訳エントリタイプの識別は、貴社の特定のSAP設定に完全に依存します。正確な活動分類のためには、クエリのWHERE句に正しい伝票タイプコードを提供する必要があります。 - プログラムおよびジョブ名: クエリは、自動化された決算ステップで一般的なプログラム名を使用します。貴社のシステムでは、カスタムラッパープログラムや異なるジョブ名が使用されている場合があります。トランザクション
SM37でこれらを確認し、必要に応じてクエリを更新してください。 - パフォーマンスに関する考慮事項: このクエリは、特に
BSEGとCDPOSのような非常に大規模なテーブルにアクセスします。システムパフォーマンスへの影響を避けるため、この抽出は業務時間外に実行することを強くお勧めします。日付と会社コードのフィルタを絞り込むことが、実行時間を管理する最も効果的な方法です。
a クエリ例 sql
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'FRPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'TOPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Accrual' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('SA', '[Your Accrual Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
h.AUGDT AS EventTime, -- Clearing Date
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Clearing' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.AUGDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Intercompany Doc Type]')
AND h.AUGBL IS NOT NULL
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'FAGL_FCV' OR p.PROGNAME = 'SAPF100'
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F' -- Finished
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'SAPF124' -- Program for F.13
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName, -- Proxy event
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('FAGLL03', 'FBL3N') -- Common reconciliation reports
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Adjusting' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Adjusting Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Reversal' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.STBLG IS NOT NULL -- STBLG links to the reversed document
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Trial Balance Report Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('RFSSLD00', 'S_ALR_87012310')
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'RFBILA00' -- Program for F.01
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
-- UNION ALL
-- Note: 'Reconciliation Reviewed' is typically not a standard, logged event in SAP ECC.
-- This activity often happens offline or in a custom tool.
-- The following is a placeholder to be adapted if a custom (Z-table) log exists.
-- SELECT
-- CONCAT(CAST(YEAR(z.REVIEW_DATE) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(z.REVIEW_DATE)), 2)) AS FinancialPeriod,
-- 'Reconciliation Reviewed' AS ActivityName,
-- z.REVIEW_DATE AS EventTime,
-- 'SAP_ECC' AS SourceSystem,
-- CURRENT_TIMESTAMP AS LastDataUpdate,
-- z.BUKRS AS CompanyCode,
-- z.HKONT AS DocumentNumber, -- Using GL Account as a proxy identifier
-- z.REVIEWER_USER AS ResponsibleUser,
-- z.HKONT AS GLAccount,
-- NULL AS DocumentType,
-- NULL AS AmountInLocalCurrency,
-- NULL AS JournalEntryType
-- FROM ZRECON_LOG z -- Replace with your custom table for reconciliation status
-- WHERE z.REVIEW_DATE BETWEEN '{{start_date}}' AND '{{end_date}}'
-- AND z.STATUS = 'Reviewed'
;