決算・レポーティングの期間決算と照合向けデータテンプレート
決算・レポーティングの期間決算と照合向けデータテンプレート
- 収集を推奨する属性
- プロセス分析で追跡する主要なアクティビティ
- データ抽出の手順
決算・レポーティングの期間決算と照合の属性
| 名前 | 説明 | ||
|---|---|---|---|
| 財務期間 FinancialPeriod | 期間末決算プロセスのケースとして使われる、財務報告サイクルの一意の識別子です。たとえば、2023年12月を「2023-12」と表します。 | ||
| 説明 財務期間は、特定の期間の帳簿締めに関連するすべてのアクティビティをまとめる、中心的なケース識別子です。通常は暦月または会計期間ごとに、1つの財務期間が期間末プロセスの一連の実行を表します。 プロセスマイニング分析では、この属性を使って、期間決算の開始から最終報告までの全過程を追跡できます。期間ごとのサイクルタイムの比較、共通する処理経路の特定、月次・四半期・年次決算の違いの分析に利用します。各期間をケースとして扱うことで、分析担当者は経時的なパフォーマンスを測定し、組織的なボトルネックを特定できます。 重要な理由 分析の基準となる重要なケース識別子です。期間ごとの決算パフォーマンスを比較し、傾向や繰り返し発生する問題を特定できます。 入手先 通常、BKPFなどのテーブルにある財務伝票ヘッダーの会計年度(GJAHR)と転記期間(MONAT)を組み合わせて算出します。 例 2023-122024-032024年第1四半期 | |||
| アクティビティ ActivityName | 期間決算プロセスで行われる特定の業務ステップまたはタスクの名前です。例:「修正仕訳の転記」「転記期間を締める」。 | ||
| 説明 この属性は、期間決算・照合プロセス全体における個々のイベントまたはタスクを表します。アクティビティはプロセスマップを構成する要素であり、作業の順序を示します。通常、SAP S/4HANA内のトランザクションコード、伝票タイプ、ステータス変更などを組み合わせて特定します。 アクティビティの分析は、プロセスマイニングの基本です。プロセスの流れを可視化し、標準手順からの逸脱を特定し、時間がかかりすぎているアクティビティのボトルネックを見つけ、タスクの頻度や順序を把握できます。期間決算バリアント分析や現在の期間決算ステータスなどのダッシュボードで重要な役割を果たします。 重要な理由 プロセスの各ステップを定義し、プロセスマップの基礎となります。プロセスの流れ、逸脱、ボトルネックの分析に利用できます。 入手先 トランザクションコード(TCODE)、伝票タイプ(BLART)、または財務決算タスクに関連するテーブルのステータス項目(例:SAP Financial Closing Cockpit)など、さまざまな情報源から特定します。 例 転記期間を開始勘定照合の開始財務諸表の作成会社間照合の開始 | |||
| 開始時刻 EventTime | 特定のアクティビティが開始された時刻、またはシステムに記録された時刻を示すタイムスタンプです。 | ||
| 説明 イベント時刻は、アクティビティが発生した正確な日時を記録します。財務転記の場合は、伝票の作成時刻(CPUTM)または転記日(BUDAT)が使われることがあります。ステータス変更やタスクの場合は、変更が記録されたタイムスタンプです。 この属性は、アクティビティを時系列に並べるために欠かせず、時間に基づく分析の基礎となります。アクティビティ間のサイクルタイム、個々のタスクの所要時間、プロセス全体の所要時間の算出に使います。平均期間決算サイクルタイムや平均照合承認時間などの重要業績評価指標(KPI)を支えます。 重要な理由 イベントを時系列に並べるために必須のタイムスタンプです。所要時間やパフォーマンスの計算の基礎となります。 入手先 BKPFなどのテーブルにある作成日(CPUDT)や作成時刻(CPUTM)などのタイムスタンプ項目、またはステータステーブルの変更日項目(例:CDHDR、CDPOS)から取得します。 例 2023-12-28T09:15:30Z2024-01-02T14:00:12Z2024-01-05T11:21:00Z | |||
| 会社コード CompanyCode | SAPの組織内にある法人または会社を一意に識別するコードです。 | ||
| 説明 会社コードは、企業内で独立した会計単位を表します。会社コードごとに、完結した一連の勘定を作成できます。期間末の決算処理はすべて、会社コード単位で行われます。 財務分析における基本的な組織属性です。プロセスマイニングでは、異なる法人間で決算プロセスを比較できます。「期間決算バリアント分析」ダッシュボードでは、会社コードを使って不整合を特定し、決算手順の標準化を促進します。 重要な理由 組織に関する重要なコンテキストを提供し、異なる法人間でプロセスを比較して、ばらつきや優れた取り組みを特定できます。 入手先 SAPのほぼすべての財務テーブルに含まれており、特にヘッダーテーブルBKPFのフィールドBUKRSにあります。 例 10001710US01DE01 | |||
| 伝票番号 DocumentNumber | 仕訳などの財務伝票を一意に識別する番号です。 | ||
| 説明 伝票番号は、SAPで財務転記ごとに割り当てられる一意のキーです。決算プロセスを構成する個々の取引を追跡・監査する際の主な参照情報となります。 ケースIDそのものではありませんが、ソースシステムのデータに戻るための重要な手掛かりです。プロセスマイニングの画面から伝票番号を使ってSAP S/4HANAの個別取引の詳細を確認し、根本原因を分析できます。特定の調整仕訳や照合転記を調査する際に特に役立ちます。 重要な理由 SAP上の元の取引を直接参照できるため、プロセスモデルから簡単にドリルダウンして監査できます。 入手先 財務伝票のヘッダーテーブルBKPF(フィールドBELNR)と、BSEGやACDOCAなどの明細テーブルにあります。 例 100000045190000001300000023 | |||
| 担当ユーザー ResponsibleUser | アクティビティを実行した人、またはタスクの担当者のユーザーIDです。 | ||
| 説明 この属性は、仕訳の転記や照合の承認など、特定のタスクを実行した従業員を識別します。通常、システムログや伝票ヘッダーにユーザーIDとして記録されます。 ユーザー別にプロセスを分析すると、作業負荷の分布、個人のパフォーマンス、トレーニングの必要性を把握できます。リソース配分効率ダッシュボードでは、この属性を使ってユーザー別のアクティビティ処理時間を可視化します。また、多くのユーザーが繰り返し行うタスクを明らかにし、自動化の候補を見つけるのにも役立ちます。 重要な理由 プロセスのアクティビティと実行者を結び付け、作業負荷の分析、リソースの最適化、パフォーマンス管理を可能にします。 入手先 BKPFなどの伝票ヘッダーテーブル(項目USNAM:ユーザー名)や、CDHDRなどの変更文書テーブル(項目USERNAME)に記録されていることが一般的です。 例 ABROWNCSMITHDJOHNSON | |||
| 照合ステータス ReconciliationStatus | 「未処理」「処理中」「承認済み」など、勘定照合のアクティビティの状態です。 | ||
| 説明 この属性は、特定の勘定またはタスクに関する照合プロセスの状態を記録します。照合の開始、レビューへの提出、承認、却下などを示します。ステータスの変化は、プロセスにおける重要なイベントです。 「照合手戻り分析」ダッシュボードの基礎となる属性です。ステータスの順序を分析すると、「承認済み」の後にさらに調整が行われたケースを特定し、手戻りを把握できます。また、「初回照合承認率」KPIでは、却下や再開を経ずに承認された照合を確認できます。 重要な理由 照合タスクの進捗と結果を記録し、手戻りの特定、承認率の測定、ボトルネックの分析に役立ちます。 入手先 通常、この情報は使用中の照合ツールに関連するテーブルに保存されます。たとえば、SAP Financial Closing cockpitや、BlackLineのSAP Account Substantiation and Automationなどです。 例 未開始準備中承認済み却下 | |||
| 目標完了日 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 | |||
| 総勘定元帳勘定番号 GlAccountNumber | 総勘定元帳の特定の勘定を識別する番号です。 | ||
| 説明 総勘定元帳(GL)勘定番号は、現金、買掛金、収益など、財務取引の記録に使う個々の勘定を識別します。照合や調整仕訳など、期間末の多くの処理は、特定の総勘定元帳勘定に直接関連しています。 詳細な財務プロセス分析に欠かせない属性です。「調整仕訳分析」ダッシュボードでは、勘定別の調整件数を表示し、問題のある領域の特定に役立てます。また、「総勘定元帳勘定の平均照合時間」KPIでは、特定の勘定に関連する遅延を特定するために使用します。 重要な理由 プロセスのアクティビティを特定の財務勘定に結び付け、照合や仕訳を詳しく分析して問題の根本原因を特定できます。 入手先 財務伝票の明細テーブルにあり、主にBSEG(フィールドHKONT)またはS/4HANAのユニバーサルジャーナルテーブルACDOCAに含まれています。 例 113100004000000073000000 | |||
| ソースシステム SourceSystemId | データの抽出元となったSAP S/4HANAのインスタンスまたはクライアントを識別します。 | ||
| 説明 この属性は、データの取得元システムを示します。複数のSAPインスタンスを使用する環境(例:地域や事業部門ごとに異なるインスタンス)では、データソースを区別するために欠かせません。 主にデータガバナンス、監査、データの整合性確保に使います。複数のソースシステムのデータを1つのプロセスマイニングモデルにまとめた場合、分析時にこの属性で絞り込み、システム間のプロセスを比較できます。 重要な理由 データの来歴とコンテキストを示し、特に複数システムの環境でデータの取得元を明確にします。 入手先 通常、データ抽出時に追加されるメタデータです。SAPのシステムID(SY-SYSID)またはクライアント(SY-MANDT)から取得することがよくあります。 例 S4H_PROD_100S4H_QAS_200ECC_LEGACY_001 | |||
| トランザクションコード TransactionCode | アクティビティの実行に使用するSAPのトランザクションコード(T-code)です。 | ||
| 説明 トランザクションコードは、SAPで特定の機能やプログラムを起動するためのショートカットです。たとえば、FB01は伝票の転記に、FAGLB03は総勘定元帳勘定残高の表示に使います。T-codeから、実行されたアクティビティを技術的に特定できる場合があります。 この属性は、プロセスモデルのアクティビティ定義に役立ちます。自動処理と手動処理を区別し、システム上でタスクがどのように実行されたかを把握するための信頼できる手掛かりです。T-codeを分析すると、従業員が標準外の方法や非効率な方法を使っていることが分かる場合があります。 重要な理由 アクティビティの実行方法をシステムレベルで確認できます。手動と自動の処理や、標準外の手順の特定に役立ちます。 入手先 財務伝票のヘッダーテーブルBKPF(フィールドTCODE)または変更伝票ログにあります。 例 FB01FAGL_FCVF.13 | |||
| 仕訳タイプ JournalEntryType | 転記する財務伝票の種類です。通常の仕訳、未払計上、調整などを区別します。 | ||
| 説明 仕訳タイプは、SAPの用語では伝票タイプとも呼ばれ、会計伝票を分類するキーです。転記先として指定できる勘定タイプを制御し、仕入先請求書(KR)、総勘定元帳への転記(SA)、得意先からの入金(DZ)など、異なる業務取引を区別します。 期間決算では、特定の種類のアクティビティを切り分けるために重要な属性です。たとえば、調整仕訳に絞って分析し、「調整仕訳分析」ダッシュボードや「調整仕訳件数」KPIに役立てられます。また、「手動転記率」の算出にも使用できます。 重要な理由 財務取引を分類し、期間決算を円滑に進めるうえで重要な手動調整など、特定の種類の転記に絞った分析を可能にします。 入手先 財務伝票のヘッダーテーブルBKPFにある標準フィールドです(フィールドBLART)。 例 SAKRAB | |||
| 伝票通貨 DocumentCurrency | 財務伝票の金額に使われる通貨コードです。 | ||
| 説明 この属性は、取引が記録された通貨(USD、EUR、JPYなど)を示し、 複数の国で事業を行う組織では、通貨別の分析が重要になる場合があります。金額を正しく解釈できるほか、集計分析のために単一の報告通貨へ換算する際にも必要です。この情報がなければ、 重要な理由 金額を正しく解釈するために必要な情報を提供します。特に複数の通貨を扱う環境で役立ちます。 入手先 財務伝票のヘッダーテーブルBKPFにあります(フィールドWAERS)。 例 USDEURJPY | |||
| 伝票金額 DocumentAmount | 伝票通貨での財務転記の合計金額です。 | ||
| 説明 この属性は、財務伝票に関連付けられた金額を表します。期間末の調整では、未払計上や修正の転記額などが該当します。 金額の分析は、重要性の評価に役立ちます。金額の大きい調整仕訳を優先して調査することで、財務リスクが高い可能性のある項目を確認できます。また、一定のしきい値を超える取引だけにプロセスマップを絞り込み、影響の大きいアクティビティを見やすくできます。 重要な理由 金額の影響や重要性に基づいて問題の調査に優先順位を付けられるよう、分析に財務面の視点を加えます。 入手先 通常、BSEGやACDOCAなどの明細テーブルから集計します(フィールドWRBTR:伝票通貨での金額)。 例 15000.00250.75-500.00 | |||
| 最終データ更新 LastDataUpdate | ソースシステムからデータが最後に更新または抽出された時刻を示すタイムスタンプです。 | ||
| 説明 この属性は、直近のデータ抽出日時を記録します。プロセスマイニングツールで分析するデータがどの程度新しいかを把握できます。 主な目的は、データガバナンスとユーザーへの情報提供です。ダッシュボード閲覧者は分析データの更新状況を確認できます。特に「現在の期間決算ステータス」のような、ほぼリアルタイムでモニタリングするダッシュボードでは重要です。今日、昨日、先週のどのデータを見ているかを把握できます。 重要な理由 データの更新時期を知らせ、プロセスのインサイトがどの時点の情報に基づいているかを確認できます。 入手先 データ抽出またはETLツールの実行時に、データセットに付与されるメタデータです。 例 2024-06-10T08:00:00Z2024-06-09T08:00:00Z | |||
| 実際の完了日 ActualCompletionDate | 重要なアクティビティ、または期間決算全体が実際に完了した日付です。 | ||
| 説明 この属性は、重要なマイルストーンの実際の完了日を記録します。財務諸表の最終承認や転記期間の締め処理が行われた日時です。
重要な理由 マイルストーンの実際の完了時期を示し、予定期限に対する実績の測定や遅延の分析に必要な情報を提供します。 入手先 「財務諸表承認済み」や「転記期間締め」など、一連の処理における最後のアクティビティのEventTimeから取得します。 例 2024-01-06T10:00:00Z2024-04-05T17:00:00Z2024-07-04T11:00:00Z | |||
| 期間決算のサイクルタイム PeriodCloseCycleTime | 財務期間の最初のアクティビティから最後のアクティビティまでにかかった合計時間です。 | ||
| 説明 1つのケース(会計期間)における、期間決算プロセス全体の所要時間を表す指標です。その期間内で最初のアクティビティと最後のアクティビティのタイムスタンプの差から算出します。 主要な業績指標の1つで、「期間決算サイクルタイム概要」ダッシュボードと「平均期間決算サイクルタイム」KPIを支えます。決算プロセス全体の効率と速度を把握でき、期間ごとの比較や会社コード間のベンチマークに役立ちます。 重要な理由 プロセス全体の所要時間を示す主要なKPIであり、効率の改善状況を長期的に把握できます。 入手先 ケース単位で算出します。各 例 P5D10H30MP7D2HP6D | |||
| 期限内かどうか IsOnTime | マイルストーンが目標日までに完了した場合にtrueとなる真偽値です。 | ||
| 説明 この属性は、スケジュールの遵守状況を二択で示します。財務諸表の承認など、特定のマイルストーンについて 「財務諸表期限内完了率」KPIの基礎となる計算です。日付の比較結果を「期限内」または「遅延」という分かりやすいステータスに変換するため、ダッシュボードやレポートで実績を簡単に確認できます。決算の迅速化を目指す取り組みの効果測定にも役立ちます。 重要な理由 期限の遵守状況を明確な達成・未達の結果に置き換え、期限内の実績を簡単に追跡・報告できます。 入手先 計算フィールド: 例 truefalse | |||
| 照合の手戻りかどうか IsReconciliationRework | 照合アクティビティの後に却下または追加調整が行われた場合にtrueとなる真偽値です。 | ||
| 説明 この計算属性は、照合サブプロセス内の手戻りを特定します。照合が却下された場合、提出後に再開された場合、または総勘定元帳勘定の照合が完了したとされる後に調整仕訳が転記された場合に、アクティビティまたはケースにフラグを設定します。 「照合手戻り分析」ダッシュボードと「照合手戻り率」KPIのために設計された属性です。複雑なプロセスの流れを測定可能な単純な属性に置き換え、手戻りの程度を数値で把握できます。これにより、チームは初回の品質向上に取り組みやすくなります。 重要な理由 プロセスの非効率につながる手戻りを直接数値化し、照合品質の分析と改善を重点的に進められます。 入手先 アクティビティの順序に基づいて算出します。たとえば、同じ期間内に同じ総勘定元帳勘定で「照合承認済み」の後に「調整仕訳転記」が行われた場合、フラグをtrueに設定します。 例 truefalse | |||
| 自動処理かどうか IsAutomated | アクティビティがシステムユーザーまたは自動処理によって実行されたかを示す真偽値です。 | ||
| 説明 このフラグは、人が手動で行ったタスクと、通貨評価の定期バッチ処理や自動消込など、システムが自動実行したタスクを区別します。通常、 決算プロセスの自動化の度合いを把握するための重要な属性です。件数の多い手動タスクを明らかにし、さらなる自動化の機会を特定できます。また、根本原因の分析では、ボトルネックが手動処理と自動処理のどちらで発生しているかを確認できます。 重要な理由 人による処理とシステムによる処理を区別できます。自動化の機会を特定し、それぞれの効率を分析するうえで重要です。 入手先 派生属性です。通常、「ResponsibleUser」フィールド(「BATCHUSER」などのシステムユーザーやバッチユーザーのIDを確認)またはトランザクションコードに適用するルールに基づいて判定します。 例 truefalse | |||
決算・レポーティングの期間決算と照合のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| 会社間照合の開始 | 同じ企業グループ内の異なる会社コード間で、取引を照合するプロセスの開始を示します。多くの場合、照合ジョブの実行、またはSAPのICMRツールでの新しい照合ケースの作成によって開始されます。 | ||
| 重要な理由 会社間照合は複雑で時間がかかることがよくあります。所要時間と処理の流れを分析することは、グループ決算の効率化と連結財務情報の正確性確保に欠かせません。 入手先 SAPの会社間照合(ICMR)モジュール内のステータス変更、または対象期間の最初の照合文書の作成から推定します。 記録 対象期間のICMRツールで、照合単位の作成日またはステータス変更のタイムスタンプを追跡します。 イベントタイプ inferred | |||
| 修正仕訳の転記 | 最初の照合後、レビューで見つかった不一致を修正するために行う仕訳です。総勘定元帳に転記される明示的な取引です。 | ||
| 重要な理由 修正仕訳の頻度が高い場合、上流プロセスや照合の初回品質に問題がある可能性があります。修正仕訳を分析すると、エラーの根本原因を特定し、やり直しを減らすうえで役立ちます。 入手先 テーブルACDOCAおよびBKPFに明示的な伝票として記録されます。特定の伝票タイプ、決算サイクル後半の転記日、または特定のテキスト説明から識別できます。 記録 伝票タイプと照合アクティビティに対する転記日の組み合わせに基づいて、BKPFの仕訳を抽出します。 イベントタイプ explicit | |||
| 勘定照合の承認 | 総勘定元帳勘定の照合に対する最終承認を示します。残高の裏付けが取れ、問題が解決済みであることを確認します。照合ツールのステータスが「承認済み」に変わったことから推定します。 | ||
| 重要な理由 重要な統制アクティビティの完了を示す節目です。承認にかかる時間を追跡すると、レビューのボトルネックを特定できます。また、やり直しや初回合格率の測定にも欠かせません。 入手先 SAP Account Substantiation and Automationなどの照合管理システムから、最終承認ステータスのタイムスタンプを追跡して取得します。 記録 照合のステータス項目が最終状態の「承認済み」に更新されたタイムスタンプを特定します。 イベントタイプ inferred | |||
| 勘定照合の開始 | 総勘定元帳の勘定残高を裏付ける、手動または半自動のプロセスの開始を示します。照合のステータスが「新規」から「進行中」に変わったとき、または最初の担当者の操作が記録されたときに推定します。 | ||
| 重要な理由 貸借対照表の残高確認にかかる期間と作業量を把握するための重要な節目です。照合の開始が遅れている勘定や部門を特定できます。 入手先 通常、SAP Account Substantiation and Automation by BlackLineなどの専用照合ツール、または他社システムから取得します。ステータス変更のタイムスタンプから推定します。 記録 対象の総勘定元帳勘定の照合について、「未開始」から最初にステータスが変わったタイムスタンプを追跡します。 イベントタイプ inferred | |||
| 財務諸表の作成 | 貸借対照表や損益計算書など、正式な財務諸表の作成を示します。期間末の会計処理と連結プロセスの最終段階にあたります。 | ||
| 重要な理由 決算・レポーティングのサイクルにおける重要な節目です。報告期限を守り、関係者に適時に情報を提供するうえで、作成時期が重要です。 入手先 SAP Financial Closing Cockpitなどの財務決算管理ツールで取得するのが最適です。この場合、明示的なタスクとして記録されます。ツールを使わない場合は、レポート生成ログやファイル作成のタイムスタンプから推定する必要があります。 記録 決算ツールで「財務諸表の作成」タスクの完了ステータスを追跡するか、レポート実行ログを分析します。 イベントタイプ inferred | |||
| 転記期間を締める | サイクルの最終アクティビティです。以降の取引を防ぐため、転記期間を正式に締めます。これにより、確定した財務報告のデータの整合性を保ちます。 | ||
| 重要な理由 プロセスの明確な終了イベントです。期間決算のサイクルタイム全体の算出や、プロセス完了の傾向分析に欠かせません。 入手先 期間の開始と同様に、トランザクションOB52を通じて行われる転記期間管理テーブルT001Bの更新を記録する変更文書(テーブルCDHDRおよびCDPOS)から取得します。 記録 対象の会計年度と期間の締めを特定するため、テーブルT001Bの変更ログを抽出します。 イベントタイプ explicit | |||
| 転記期間を開始 | 財務期間の開始を示すアクティビティです。取引を記録できるよう転記期間を開きます。SAPで財務管理者が行う明示的な設定変更として記録され、新しい期間の仕訳が可能になります。 | ||
| 重要な理由 期間末決算プロセスの主な開始イベントです。サイクルタイム全体を正確に測定でき、プロセス分析の明確な起点になります。 入手先 このイベントは、通常、トランザクションOB52を通じて行われる転記期間管理テーブルT001Bの変更を記録する変更文書(テーブルCDHDRおよびCDPOS)から取得します。 記録 対象の会計年度と期間に関連するテーブルT001Bの変更ログを抽出します。 イベントタイプ explicit | |||
| 外貨評価の実行 | 期末レートに基づいて外貨建ての未消込項目や残高を再評価する、標準的な月末手順です。プログラムを実行すると、評価差額が転記されます。 | ||
| 重要な理由 会計基準への準拠と、正確な財務状況の把握に役立ちます。このアクティビティを追跡すると、すべての通貨評価が適時に行われているか確認できます。 入手先 外貨評価プログラム(例:FAGL_FCV)の実行ログから取得します。ジョブの詳細はテーブルTBTCOおよびTBTCPに保存されます。 記録 トランザクションFAGL_FCVまたはその基盤プログラムに関連するジョブの実行ログをモニタリングします。 イベントタイプ explicit | |||
| 未払費用・引当金の転記 | 発生主義会計に基づく正確な財務報告に必要な、未払費用、繰延項目、その他の引当金に関する手動仕訳の作成を記録します。これらは総勘定元帳に転記される明示的な取引です。 | ||
| 重要な理由 これらの転記を追跡すると、手動修正の件数やタイミングを分析できます。件数が多い場合は、自動化や上流プロセスの改善が必要な可能性があります。 入手先 ユニバーサルジャーナルテーブルACDOCAおよびヘッダーテーブルBKPFに、明示的な仕訳として記録されます。未払費用・引当金用に設定された特定の伝票タイプで識別できます。 記録 テーブルBKPFの伝票を、伝票タイプ(例:「SA」またはカスタムタイプ)と対象期間内の転記日で抽出します。 イベントタイプ explicit | |||
| 自動消込の実行 | SAPで自動消込プログラムを実行したことを示します。例として、GR/IR(入庫/請求書受領)消込があります。これらのジョブは、特定の総勘定元帳勘定の未消込項目を照合・消込し、手作業による照合の負担を減らします。 | ||
| 重要な理由 このアクティビティから、照合プロセスの自動化の程度を把握できます。実行に失敗したり例外が発生したりすると、手作業の増加や遅延につながる可能性があります。 入手先 自動消込用のF.13やF.13Eなど、特定のバッチジョブの実行ログから取得します。ジョブログテーブルTBTCOおよびTBTCPに実行の詳細が記録されています。 記録 SAPのジョブログで、F.13などのトランザクションに関連するジョブの開始・終了タイムスタンプをモニタリングします。 イベントタイプ explicit | |||
| 補助元帳データの転送完了 | 売掛金、買掛金、固定資産会計などの補助元帳から総勘定元帳へ、集計データを転送するバッチジョブの完了を示します。決算手順の開始前に、基となる業務取引がすべて総勘定元帳に反映されていることを確認できます。 | ||
| 重要な理由 補助元帳の決算の遅れは、プロセス全体の大きなボトルネックになることがあります。このアクティビティを追跡すると、ソースシステムからのデータ収集や連携における非効率を特定できます。 入手先 元帳の決済とデータ転送を担う特定のバッチジョブが正常に完了したことを示すステータスから推定します。ジョブログはテーブルTBTCOおよびTBTCPで確認できます。 記録 SAPのジョブ概要(トランザクションSM37)で、関連するバッチジョブの完了タイムスタンプを特定してモニタリングします。 イベントタイプ explicit | |||
| 試算表の作成 | レビュー用の試算表が作成・保存されたことを示します。最終財務諸表の作成前に行う重要な確認工程です。このイベントの取得には、レポート出力を保存する手順が必要になることがあります。 | ||
| 重要な理由 試算表の作成は、重要な品質確認の工程です。作成時期を分析すると、最終報告に向けた準備状況を把握し、前段階のアクティビティの遅れを特定できます。 入手先 明示的なイベントとして記録されないこともよくあります。ユーザーと日付のタイムスタンプ付きでバリアントが保存されている場合は、特定のレポート用トランザクションの実行から推定できます。また、SAP Financial Closing Cockpitなどのツールでプロセスを管理している場合もあります。 記録 レポート実行ログや決算コックピットのタスクリストなど、信頼できる記録方法があるかどうかをシステム分析で確認する必要があります。 イベントタイプ inferred | |||
| 財務諸表の承認 | 財務諸表の公開前に、権限を持つ経営陣が最終承認することを示します。オフラインで行われることもよくありますが、正式なデジタル承認ステップがあれば記録できます。 | ||
| 重要な理由 最終段階の品質・統制確認です。報告期限の遵守状況と、経営陣によるレビューサイクル全体の効率を把握するうえで、承認時期の追跡が欠かせません。 入手先 SAP Financial Closing Cockpitや文書管理システムなどに、財務諸表の承認ワークフローまたはステータス項目がある場合、このイベントを取得できます。 記録 財務諸表一式の最終承認を示すデータ項目とタイムスタンプを特定します。 イベントタイプ inferred | |||
| 連結タスクの実行 | SAP Group Reportingで行う連結アクティビティの実行を示します。通貨換算、組替、会社間利益の消去などが含まれます。通常、これらのタスクは連結モニターで管理・記録されます。 | ||
| 重要な理由 複数の法人を持つ組織にとって、連結プロセスは決算の重要な工程です。これらのタスクをモニタリングすると、グループ決算の効率化と連結報告の適時な作成に役立ちます。 入手先 SAP S/4HANA for Group Reportingのデータモニターまたは連結モニター内のステータスログから取得します。通常、各タスクにはユーザー、タイムスタンプ、ステータスが記録されています。 記録 Group Reportingの連結モニターを構成するテーブルから、タスクの実行ログを抽出します。 イベントタイプ explicit | |||
データ抽出ガイド
ステップ
- CDSビューの特定と確認:SAP HANA StudioまたはADTを使用するEclipseから、SAP S/4HANAシステムにログインします。ABAP Development Toolsで、I_JournalEntryItem、I_BatchJob、I_ConsolidationTaskLogなど、クエリに記載された標準CDSビューを検索し、存在を確認します。勘定照合などのプロセスでは、ステータスの変更を記録するために、Z_I_ACCOUNTRECONCILIATIONなどのカスタムCDSビューが必要になる場合があります。
- OData経由でCDSビューを公開:SAPバックエンドでトランザクション
SEGW(Gateway Service Builder)を使い、新しいプロジェクトを作成します。「Data Model」フォルダーを右クリックし、「Reference -> Data Source」を選択して、必要なCDSビューを追加します。ランタイムオブジェクトを生成し、外部から利用できるODataサービスを作成します。 - ODataサービスの有効化:SAP Gatewayハブでトランザクション
/IWFND/MAINT_SERVICEを開きます。「Add Service」をクリックし、前の手順で生成したサービスを検索して追加します。これにより、サービスが有効になり、クエリで利用できるようになります。 - データ接続の確立:Python、Power BI、専用のETLプラットフォームなど、選択したデータ抽出ツールから、新しく作成したODataサービスに接続します。CDSビューへのアクセス権限を持つ認証情報と、サービスURLが必要です。
- クエリの調整と実行:提示されたSQLクエリをコピーします。日付範囲、会社コード、カスタムCDSビュー名、バッチジョブ名などのプレースホルダーを、実際のSAP環境に合わせて変更します。ODataサービスのエンドポイントに対してクエリを実行します。ODataでは
$filterや$selectなど異なる構文を使うため、UNION ALLクエリのロジックをアクティビティごとの複数のAPI呼び出しに置き換える必要がある場合があります。 - アクティビティデータの統合:通常、ODataでは1回の呼び出しで複雑な
UNION ALLクエリを直接実行できません。そのため、クエリ内のアクティビティブロックごとにリクエストを実行します。クライアントツールで、すべてのリクエスト結果を1つのデータセットまたはテーブルにまとめます。 - データの変換と整理:統合したデータを確認します。
EventTime列とEndTime列のタイムスタンプ形式を統一し、FinancialPeriodが「YYYY-MM」形式になっていることを確認します。必要に応じて、ResponsibleUserやDocumentNumberなどの列に含まれるNULL値を処理します。 - イベントログとしてエクスポート:統合した最終データセットをCSVファイルにエクスポートします。列見出しが必要な属性(
FinancialPeriod、ActivityName、EventTime、EndTime、ResponsibleUserなど)と一致していることを確認します。このファイルをProcessMindにアップロードできます。
設定
- CDSビュー:このクエリでは、標準CDSビューとカスタムCDSビューを組み合わせて使用します。
I_JournalEntryItem(仕訳用)やI_BatchJob(自動実行用)などの標準ビューが必要です。標準ビューでカバーされない内部プロセスのステータスを記録するには、Z_I_ACCOUNTRECONCILIATIONなどのカスタムビューが必要になることがあります。 - 日付範囲:データ量を調整するため、抽出する日付範囲を指定します。クエリ内のプレースホルダー
[Start Date]と[End Date]には、通常、分析に適した3~6会計期間分の範囲を指定します。 - 主要なフィルター:処理性能と分析の関連性を保つには、フィルターの設定が欠かせません。必ず
CompanyCodeで絞り込みます。その他、Ledger(先行元帳の場合は「0L」など)、FiscalYear、通常の転記、未払計上、調整を区別するためのDocumentTypeも重要なフィルターです。 - 前提条件:抽出を実行するユーザーには、指定したCDSビューへのアクセスとODataサービスの実行に必要なSAP権限(権限オブジェクト
S_SERVICE、S_RFCなど)が必要です。SAP Gatewayサービスも設定し、有効化しておく必要があります。 - パフォーマンス:
I_JournalEntryItemへのクエリは、処理負荷が高くなる場合があります。特に日付、会社コード、元帳で、必ず対象を絞り込んでください。利用が少ない時間帯に抽出するか、継続的なモニタリングには増分読み込み方式を検討してください。
クエリの例 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]'; ステップ
- 必要なアプリケーションテーブルを含むSAP HANAスキーマへの直接読み取りアクセスが可能であることを確認し、ACDOCA、TBTCO、CDHDR、CDPOSのスキーマ所有者を特定します。クエリ内のスキーマのプレースホルダーを、承認済みのスキーマ名に置き換えます。
- 会計年度、会計期間、対象会社コード、抽出日付範囲を確認します。通常は3~6か月分を対象に、決算サイクル全体を含む日付範囲を指定し、日付パラメーターをシステムに適した値に置き換えます。
- 転記期間の設定変更、バッチジョブの完了、照合ステータスの変更、連結処理、レポート作成、承認記録について、ローカル環境のフィールドマッピングを検証します。このクエリには、すべてのSAP S/4HANA環境に存在するとは限らないソースオブジェクトのプレースホルダーが含まれています。実行前に、システムで承認されたビューまたはテーブルに置き換えてください。
- 読み取り専用のデータベース認証情報を使ってクエリを実行します。このクエリは、必要なアクティビティごとにイベント行を1つ作成します。イベントの順序から追加のイベントを推測することはありません。
- 取得した列を確認します。
FinancialPeriodはケースID、ActivityNameはイベントのアクティビティ、EventTimeは必須のイベントタイムスタンプです。ソースレコードに値がある場合は、EndTime、ResponsibleUser、CompanyCode、GlAccountNumber、DocumentNumber、ReconciliationStatus、TargetCompletionDateも含まれます。 - 特定の期間にソースレコードがない場合も含め、必要なアクティビティがすべて結果に含まれていることを確認します。クエリは、欠落しているアクティビティ種別について、
ActivityNameが「Activity Coverage Validation」の検証行を返します。ProcessMindへのインポートで業務イベントのみが必要な場合は、アップロード前にこの行を削除するか、別途処理してください。 - 代表的なイベントをSAPアプリケーションのレコードやジョブログと照合します。仕訳イベントがACDOCAのレコードに、ジョブイベントがTBTCOのレコードに、変更イベントがCDHDRおよびCDPOSのレコード、または設定済みの照合・承認ソースに対応していることを確認します。
- 結果をUTF-8のCSV、またはProcessMindが対応する別の表形式でエクスポートします。列名
FinancialPeriod、ActivityName、EventTimeは変更しないでください。FinancialPeriodとEventTimeで並べ替え、明示的に抽出したイベントごとに1行を保持します。 - イベントログをProcessMindにアップロードし、
FinancialPeriodをケースID、ActivityNameをアクティビティ、EventTimeを開始タイムスタンプとして設定します。利用可能な場合はEndTimeを終了タイムスタンプに割り当て、残りの列をイベント属性またはケース属性として割り当てます。
重要なソースマッピング上の注意:SAP S/4HANAには、すべての照合ツール、連結モニター、レポートアーカイブ、承認ワークフロー、転記期間設定に共通するテーブル構造はありません。クエリ内の各[Your table name]および[Your column name]プレースホルダーを、システム内で確認済みのオブジェクト名と列名に置き換えてください。プレースホルダーを実行可能なSQLとして扱わないでください。
設定
- データベースアクセス:ACDOCA、TBTCO、CDHDR、CDPOS、および転記期間管理、照合、連結、レポーティング、承認に使用する設定済みのソースオブジェクトに対して、SELECT権限を持つ読み取り専用のSAP HANAデータベースユーザーを使用します。
- スキーマ設定:
[Your SAP schema]を、アプリケーションオブジェクトが含まれる実際のスキーマ名に置き換えます。対象オブジェクトがテーブル、計算ビュー、承認済みのレポートビューのいずれかを確認します。 - 日付範囲:通常は3~6か月分を対象に、決算サイクル全体を抽出します。開始と終了のアクティビティ、遅延転記、取消、承認、決算後の調整を含めます。
- 会計期間:会社コードで使用している会計年度と会計期間で絞り込みます。会計年度バリアントが異なる場合は、暦年の期間と同じだと想定しないでください。
- 会社コード:特定の法人を対象とする場合は、会社コードで絞り込みます。対象範囲が別の組織マッピングで管理されている場合は、
[Configure based on your system]を使用します。 - 伝票タイプ:未払計上、引当金、調整、評価、消込、その他の決算転記に使用する伝票タイプに絞り込みます。これらのフィルターを有効にする前に、ローカル環境の伝票タイプ設定を確認します。
- ジョブステータス:完了アクティビティには、完了または正常終了したジョブのみを含めます。ステータス条件を適用する前に、ローカル環境のTBTCOステータス値を確認します。
- 変更文書:ローカル環境の設定を確認したうえで、関連するオブジェクトクラスと変更インジケーターによりCDHDRおよびCDPOSを絞り込みます。変更文書だけでは、すべての業務アクティビティを特定できない場合があります。
- 照合および承認ソース:照合ステータスの遷移、作成者の操作、承認、目標日、電子承認を記録する、検証済みのソースオブジェクトを設定します。これらのソースは、導入済みのSAPコンポーネントや拡張機能によって異なります。
- パフォーマンス:会計年度、会計期間、会社コード、転記日、イベントタイムスタンプの条件で対象を絞ります。各
UNION ALLの分岐にフィルターを適用し、ACDOCAの全件スキャンを避け、承認済みのレポート時間帯に実行します。 - データ型:タイムスタンプのタイムゾーンとデータ型を統一します。空文字列はNULLに変換し、会社コード、勘定番号、伝票番号の先頭のゼロを保持します。
- 前提条件:必要なSAPコンポーネント、照合ツール、連結機能、ジョブログ、変更文書の有効化、レポートやワークフローの監査ログが利用可能で、データが記録されていることを確認します。
- セキュリティとコンプライアンス:最小権限のアクセスを適用し、財務データとユーザーデータを保護します。抽出目的を文書化し、組織のSAPおよびデータベース監査要件に従ってください。
クエリの例 sql
WITH
params AS (
SELECT
TO_DATE('[Start date YYYY-MM-DD]') AS start_date,
TO_DATE('[End date YYYY-MM-DD]') AS end_date,
'[Fiscal year]' AS fiscal_year_filter,
'[Fiscal period]' AS fiscal_period_filter,
'[Company code filter]' AS company_code_filter
FROM DUMMY
),
base_events AS (
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0') AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(a.BUDAT AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(a.USNAM AS NVARCHAR(80)) AS ResponsibleUser,
CAST(a.RBUKRS AS NVARCHAR(20)) AS CompanyCode,
CAST(a.RACCT AS NVARCHAR(40)) AS GlAccountNumber,
CAST(a.BELNR AS NVARCHAR(40)) AS DocumentNumber,
CAST(NULL AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Accrual document type]', '[Provision document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Adjusting Journal Entry Posted',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Adjusting journal entry document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Foreign Currency Valuation Run',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Foreign currency valuation document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Automated Clearing Run Executed',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Automated clearing document type]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Subledger Data Transfer Completed',
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job end timestamp column] >= p.start_date
AND j.[Job end timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job status column] = '[Successful job status]'
AND j.[Job name column] IN ('[AR transfer job]', '[AP transfer job]', '[Asset Accounting transfer job]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(j.[Job start timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job start timestamp column] >= p.start_date
AND j.[Job start timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job name column] IN ('[Intercompany reconciliation job]')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for intercompany reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('Started', 'In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Approved',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Approver user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(c.[Financial period column] AS NVARCHAR(20)),
'Consolidation Tasks Executed',
CAST(c.[Execution start timestamp column] AS TIMESTAMP),
CAST(c.[Execution end timestamp column] AS TIMESTAMP),
CAST(c.[Responsible user column] AS NVARCHAR(80)),
CAST(c.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(c.[Task identifier column] AS NVARCHAR(40)),
CAST(c.[Status column] AS NVARCHAR(40)),
CAST(c.[Target completion date column] AS DATE)
FROM [Your table name for consolidation execution] c
CROSS JOIN params p
WHERE c.[Execution start timestamp column] >= p.start_date
AND c.[Execution start timestamp column] < ADD_DAYS(p.end_date, 1)
AND c.[Status column] IN ('Completed', 'Successful')
UNION ALL
SELECT
CAST(t.[Financial period column] AS NVARCHAR(20)),
'Trial Balance Prepared',
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Responsible user column] AS NVARCHAR(80)),
CAST(t.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(t.[Report identifier column] AS NVARCHAR(40)),
CAST(t.[Status column] AS NVARCHAR(40)),
CAST(t.[Target completion date column] AS DATE)
FROM [Your table name for trial balance output] t
CROSS JOIN params p
WHERE t.[Report saved timestamp column] >= p.start_date
AND t.[Report saved timestamp column] < ADD_DAYS(p.end_date, 1)
AND t.[Status column] IN ('Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Generated',
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Responsible user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement output] f
CROSS JOIN params p
WHERE f.[Generation timestamp column] >= p.start_date
AND f.[Generation timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] IN ('Generated', 'Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Approved',
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approver user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement approval] f
CROSS JOIN params p
WHERE f.[Approval timestamp column] >= p.start_date
AND f.[Approval timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Opened For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Open'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Closed For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Closed'
),
activity_list AS (
SELECT 'Period Opened For Posting' AS ActivityName FROM DUMMY
UNION ALL SELECT 'Subledger Data Transfer Completed' FROM DUMMY
UNION ALL SELECT 'Intercompany Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Accruals And Provisions Posted' FROM DUMMY
UNION ALL SELECT 'Automated Clearing Run Executed' FROM DUMMY
UNION ALL SELECT 'Foreign Currency Valuation Run' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Adjusting Journal Entry Posted' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Approved' FROM DUMMY
UNION ALL SELECT 'Consolidation Tasks Executed' FROM DUMMY
UNION ALL SELECT 'Trial Balance Prepared' FROM DUMMY
UNION ALL SELECT 'Financial Statements Generated' FROM DUMMY
UNION ALL SELECT 'Financial Statements Approved' FROM DUMMY
UNION ALL SELECT 'Period Closed For Posting' FROM DUMMY
),
missing_activities AS (
SELECT
CAST(NULL AS NVARCHAR(20)) AS FinancialPeriod,
'Activity Coverage Validation' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(NULL AS NVARCHAR(80)) AS ResponsibleUser,
CAST(NULL AS NVARCHAR(20)) AS CompanyCode,
CAST(NULL AS NVARCHAR(40)) AS GlAccountNumber,
CAST(NULL AS NVARCHAR(40)) AS DocumentNumber,
CAST('Missing activity: ' || al.ActivityName AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM activity_list al
LEFT JOIN base_events b ON b.ActivityName = al.ActivityName
WHERE b.ActivityName IS NULL
)
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM base_events
UNION ALL
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM missing_activities
ORDER BY FinancialPeriod, EventTime, ActivityName まずはここから
このデータテンプレートを使って、組織の業務効率とコンプライアンスを高めましょう。決算・レポーティングプロセスの改善に、今すぐ取り組めます。
決算・レポーティングの決算と照合を今すぐ改善
非効率な箇所を見つけ、決算サイクルタイムを最大30%短縮できます。
クレジットカードは不要です。数分で利用を開始できます。