給与処理データテンプレート
給与処理データテンプレート
- 給与分析に必要な主要データ項目
- プロセスの把握に必要な主要な節目
- システム別のデータ抽出ガイド
給与処理の属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ Activity | 給与計算プロセスで発生する特定のタスクまたはイベントです。 | ||
| 説明 この属性には、実行されたプロセスステップの名前が記録されます。たとえば、「タイムシート提出」「給与計算シミュレーション実行」「支払い実行」などです。プロセスマップの基礎となり、給与計算サイクルで行われる処理の順序を可視化できます。 この属性のデータは、ワークフローログ(SWWLOGHIST)、インフォタイプ変更ログ(CDHDR/CDPOS)、給与計算ステータス専用テーブルなど、さまざまなログから取得します。抽出時に命名規則を統一し、技術的なイベントコードを業務で理解しやすいアクティビティ名に変換します。 重要な理由 プロセスグラフのノードを定義し、プロセスフロー、ループ、バリアントを可視化します。 入手先 SWWLOGHIST(ワークフロー)、CDHDR(変更文書)、またはPA03(制御レコード)のステータス変更から取得します。 例 タイムシート提出総支給額計算監査例外の検出支払い実行 | |||
| イベントのタイムスタンプ EventTimestamp | アクティビティが発生した正確な日時です。 | ||
| 説明 この属性には、イベントが発生した正確な日時が記録されます。サイクルタイム、リードタイム、プロセスの各段階間の処理率など、時間に関する指標の算出に欠かせません。 SAP ECPでは、変更文書の 重要な理由 イベント間の所要時間を算出できるため、パフォーマンス上のボトルネックやSLA違反の特定に役立ちます。 入手先 CDHDR-UDATE/UTIME、SWWLOGHIST-WI_CD/WI_CT、または監査ログの専用タイムスタンプ。 例 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| 給与計算レコード PayrollRecord | 従業員と給与期間を組み合わせた一意の識別子です。 | ||
| 説明 給与計算レコードは、プロセスマイニング分析における中心的なケース識別子です。特定の給与期間における従業員1人分の給与計算を表し、最初のタイムシート提出から最終的な税務申告まで、すべてのアクティビティを関連付けます。 SAP SuccessFactors Employee Central Payrollでは通常、従業員番号(PERNR)に給与計算年(PABRJ)と給与計算期間(PABRP)を連結し、複数回の実行を区別するために連番(SEQNR)を加えて作成します。この粒度で管理することで、各支払いサイクルを個別のインスタンスとして分析でき、サイクルタイムを正確に測定し、エラーを追跡できます。 重要な理由 ケースIDとして機能し、発行された給与明細ごとに関連イベントをまとめて、プロセスの開始から終了までの経路を再構成します。 入手先 SAPクラスターB2(勤怠評価結果)またはPC_PAYRESULTテーブル(PERNR、PABRJ、PABRP、SEQNR)から作成します。 例 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| ソースシステム SourceSystem | イベントデータの発生元となったシステムです。 | ||
| 説明 この属性は、データの抽出元であるSAP SuccessFactors Employee Central Payrollのインスタンス、または接続されたサブシステムを識別します。複数の給与計算システムやハイブリッド環境を含む複雑な構成では、データの来歴と追跡可能性を確保できます。 異なる地域のシステムから取得したデータを分析する場合や、旧システムと移行後のシステムのパフォーマンスを比較する場合に役立ちます。通常、データ抽出の設定時に指定する固定文字列です。 重要な理由 複数システムの環境でデータを分類でき、発生元を特定してデータ品質の問題を調査する際にも役立ちます。 入手先 SAPインストール環境または抽出設定のシステムID(SID)。 例 SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| 最終データ更新 LastDataUpdate | 直近のデータ抽出時のタイムスタンプです。 | ||
| 説明 この属性は、プロセスマイニングのデータモデルでデータレコードが最後に更新された日時を示します。データの鮮度を把握し、最新の情報に基づいてインサイトを得るために役立ちます。 プロセスフロー分析に直接使う属性ではありませんが、データガバナンスと検証には欠かせません。ダッシュボードに給与計算システムの最新状況が反映されているかを確認できます。 重要な理由 データ反映の遅れを把握し、報告された指標が最新かどうかを確認できます。 入手先 実行時にETL/抽出スクリプトが生成します。 例 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| 原価センタ CostCenter | 従業員に関連付けられた原価センタです。 | ||
| 説明 原価センタは、従業員の人件費を割り当てる財務部門または単位を表します。「タイムシート承認のボトルネック」ダッシュボードでは部門の代わりとなる切り口として使い、どの組織単位が給与計算サイクルを遅らせているかを特定できます。 組織割当インフォタイプ(PA0001)の項目 重要な理由 組織別にドリルダウンし、遅延や手戻りの原因となっている部門を特定できます。 入手先 テーブルPA0001の項目KOSTL。 例 CC-1000 財務CC-2000 ITCC-3000 営業 | |||
| 従業員区分 EmployeeType | 従業員の分類です(正社員、契約社員など)。 | ||
| 説明 この属性では、在職者、退職者、契約社員など、雇用関係に基づいて従業員を分類します。給与計算の複雑さは従業員区分によって異なることがあり、特定のグループでは手作業による対応や個別のコンプライアンスチェックが多く必要になる場合があります。 SAPの従業員グループ( 重要な理由 プロセスのばらつきや遅延が、特定の雇用区分に限られるかどうかを特定できます。 入手先 テーブルPA0001の項目PERSG(グループ)およびPERSK(サブグループ)。 例 在職者研修生年金受給者時給制契約社員 | |||
| 給与計算サイクルの頻度 PayCycleFrequency | 通常の給与計算か、臨時の給与計算かを示します。 | ||
| 説明 この属性では、定期的な給与計算と、修正や即時支払いに使う臨時の給与計算を区別します。臨時の給与計算が多い場合、プロセスの非効率を示している可能性があります。「臨時支払い件数の分析」ダッシュボードで追跡します。 給与計算クラスターのディレクトリにある臨時計算理由( 重要な理由 「臨時支払い比率」KPIの測定や、標準外の処理を減らす取り組みに欠かせません。 入手先 テーブルRGDIR(クラスター・ディレクトリ)の項目OCRSNまたはPAYTY。 例 通常修正A賞与支払い雇用終了 | |||
| 給与計算担当者 PayrollSpecialist | レコードを処理した担当者のユーザーIDまたは名前です。 | ||
| 説明 この属性には、手動ステップや承認を担当する給与計算管理者または専門担当者の識別情報が記録されます。「担当者別の処理量と業務負荷」ダッシュボードの主要な属性であり、業務負荷の分布や個人ごとの生産性を分析できます。 システムログの 重要な理由 業務負荷の調整や、プロセスにおける人的なボトルネックの特定に欠かせません。 入手先 CDHDRに記録されたシステム項目(SY-UNAME)またはワークフローの実行者ID。 例 JSMITHKMILLERSYSTEM | |||
| 給与計算期間 PayPeriod | 会計年度内の特定の期間番号です。 | ||
| 説明 この属性は、給与計算期間の連番を示します(1月または最初の隔週サイクルを示す01など)。期間ごとのパフォーマンスの推移を追跡し、処理量の季節変動を特定できます。
重要な理由 推移分析に役立ち、特定の時期に発生する季節的なボトルネックを特定できます。 入手先 テーブルPA0001または給与計算結果クラスター(RGDIR)の項目PABRP。 例 01122652 | |||
| 給与計算領域 PayrollArea | 従業員が所属する給与計算グループを示します。 | ||
| 説明 給与計算領域は、同じ給与計算実行で処理する従業員をまとめたグループです。給与の支払い頻度(月次、隔週など)や組織構造に基づいて設定されることがよくあります。この属性で分析対象を分けると、従業員グループごとのパフォーマンスを比較できます。 SAPでは、技術項目 重要な理由 グループ別(時給制と月給制など)に給与計算サイクルのパフォーマンスを比較できます。 入手先 テーブルPA0001(組織割当)の項目ABKRS。 例 米国・隔週ドイツ・月次役員給与計算 | |||
| 総支給額 GrossPayAmount | レコードに対して計算された総支給額です。 | ||
| 説明 この属性は、控除前の総支給額を金額で示します。財務上の検証に使う基本的な指標であり、高額な支払いと監査の厳格化や承認リードタイムの長期化との関連を分析できます。 給与計算結果テーブル(RT)から取得します。通常、総支給額を表す特定の賃金タイプ(例:/101)を参照します。「福利厚生・税額計算の精度」分析で、計算の基準額として利用できます。 重要な理由 支払い額に応じたプロセスの動きを分析できます(例:支払い額が大きいほど承認に時間がかかるか)。 入手先 給与計算結果テーブル(RT)の賃金タイプ/101など。 例 5000.002500.5010500.00 | |||
| 自動処理かどうか IsAutomated | アクティビティをシステムユーザーが実行したかどうかを示すフラグです。 | ||
| 説明 この真偽値属性は、特定のプロセスステップをバックグラウンドジョブ/システムユーザーと担当者のどちらが実行したかを示します。「銀行振込の自動処理モニター」で、人手を介さずに処理された割合を算出するために必要です。 通常、ユーザーIDを既知のシステムアカウント(「BATCH」「SAP_WORKFLOW」など)の一覧と照合して判定します。 重要な理由 自動処理率の測定や、手作業を減らせる箇所の特定に役立ちます。 入手先 ユーザーIDから判定します(例:Userが['BATCH', 'SYSTEM']に含まれる場合はtrue)。 例 truefalse | |||
| SLA処理期限 SLAProcessingDeadline | 給与計算の完了目標日時です。 | ||
| 説明 この属性は、期限内の支払いを実現するために給与計算を完了する社内または社外の期限を示します。実際の「支払い実行」タイムスタンプと比較し、「SLA遵守率」KPIの算出に使います。 SAPテーブルの標準項目とは限りませんが、カスタム制御テーブルで管理するか、給与カレンダーに基づいて概念的に定義することがよくあります(支払日の2日前など)。このデータモデルでは、支払日から一定の余裕日数を差し引いて算出する場合があります。 重要な理由 期限内の処理とSLA遵守状況を評価する基準になります。 入手先 支払日(T549S)から、設定された処理日数を差し引いて算出します。 例 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| 手戻り回数 ReworkCount | 修正が行われた回数です。 | ||
| 説明 この計算指標は、ケース履歴に「データ修正実施」アクティビティが現れる回数を数えます。プロセスの非効率を直接示す指標であり、「手動修正と手戻り率」ダッシュボードに役立ちます。 手戻り回数が多い場合、データ品質の問題が続いているか、初回の検証を通過できない複雑なケースが多いことを示します。 重要な理由 エラー修正に費やされた労力を数値化し、データ品質向上の取り組みの必要性を示すのに役立ちます。 入手先 ケースIDごとに「データ修正実施」アクティビティを数えて算出します。 例 013 | |||
| 法人 LegalEntity | 従業員の会社コードまたは法人です。 | ||
| 説明 この属性は、給与計算レコードに関連付けられた法人(会社コード)を識別します。子会社や企業体ごとの給与計算パフォーマンスを財務報告や分析に利用できます。 組織割当インフォタイプ(PA0001)の 重要な理由 会社間のベンチマークや財務配賦の分析に役立ちます。 入手先 テーブルPA0001の項目BUKRS。 例 US01DE011000 | |||
| 監査例外フラグ AuditExceptionFlag | 監査例外が発生したかどうかを示すフラグです。 | ||
| 説明 この属性は、給与計算のシミュレーションまたは計算中に、検証ルールによって例外や警告が発生したケースを示します。「監査例外の発生頻度」KPIの主要な入力データです。 給与計算ログやエラーメッセージ専用テーブル(FEHLER)から取得することがよくあります。値がtrueの場合、プロセスフローに例外処理の経路が含まれていたことを示します。 重要な理由 データ品質の問題や手動対応の必要性を明らかにします。 入手先 給与計算ログにエラーメッセージがあるか、特定のステータスコードが記録されているかを基に判定します。 例 truefalse | |||
| 課税管轄区域 TaxJurisdiction | 従業員に適用される税務地域または税務当局です。 | ||
| 説明 この属性は、給与計算レコードに適用される税務当局または地域(州、省、カントンなど)を識別します。「監査例外とコンプライアンスリスク」ダッシュボードで、地域ごとのコンプライアンス上の問題を特定するために必要です。 SAP US Payrollでは、 重要な理由 規制地域ごとにコンプライアンスリスクや監査例外を分類できます。 入手先 テーブルPA0001またはPA0207/PA0208の項目TXJCD。 例 CANYTXNRW | |||
給与処理のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| タイムシート承認 | 管理者またはシステム管理者が勤怠データを正式に承認した時点を示します。このステータス変更により、給与計算エンジンへのデータ転送が可能になります。 | ||
| 重要な理由 タイムシート承認リードタイムの重要業績評価指標(KPI)を算出します。ここでのボトルネックは、管理者の対応の遅れや複雑な承認階層を示します。 入手先 Employee Centralのワークフロー申請テーブル(WfRequest)から、ステータスがCOMPLETEDまたはAPPROVEDのデータを抽出します。 記録 ワークフローのステータスがAPPROVEDに変わった時点で記録されます。 イベントタイプ explicit | |||
| タイムシート提出 | 従業員または管理者が給与期間の勤怠データを提出した時点を示します。ECPに連携されたEmployee Centralモジュールのワークフロー申請ログから取得します。 | ||
| 重要な理由 データ蓄積段階の開始を示します。ここで遅れが生じると後続工程に影響し、給与処理に使える期間が短くなります。 入手先 Employee Centralのワークフロー申請テーブル(WfRequest)から、Time SheetまたはTime Offのカテゴリを抽出します。 記録 ワークフローのステータスがSUBMITTEDに変わった時点で記録されます。 イベントタイプ explicit | |||
| 支払い実行 | 銀行による確認、またはF110の支払い実行完了をもって、支払い処理が完了した時点を示します。 | ||
| 重要な理由 SLA遵守率を測定する際の主な終了タイムスタンプです。従業員への支払いが期限どおりだったかを判定します。 入手先 支払い実行テーブル(REGUH)の実行日と時刻を参照するか、起算日から推定します。 記録 支払い実行のステータスがPostedまたはCompleteに設定された時点で記録されます。 イベントタイプ explicit | |||
| 税務申告完了 | 税務申告ファイル(米国のPU19など)を作成するか、外部の税務申告サービスプロバイダーにデータを転送した時点を示します。 | ||
| 重要な理由 規制へのコンプライアンスを確保します。処理順序における最終的なコンプライアンス手順を追跡します。 入手先 Tax Reporter Log ManagerまたはB2A(Business to Administration)Managerのログで、ファイルが正常に作成されたことを確認します。 記録 Tax Reporterの実行が正常に完了した時点で記録されます。 イベントタイプ explicit | |||
| 給与シミュレーション実行 | 結果をデータベースに確定せずに給与計算プログラムをテスト実行し、エラーを特定します。PCCの検証段階における重要な手順です。 | ||
| 重要な理由 初回計算成功率の算出に必要です。シミュレーションの繰り返しは、データ品質に問題があることを示します。 入手先 Payroll Control CenterのStep Instanceログ(PYC_D_STEP_INST)から、ステップタイプがSimulationの記録を確認します。 記録 PCCのシミュレーションステップのステータスがCOMPLETEDに変わった時点で記録されます。 イベントタイプ explicit | |||
| 給与処理開始 | Payroll Control Center(PCC)で給与処理インスタンスを作成した時点を示します。特定の給与領域における給与サイクルの正式な開始です。 | ||
| 重要な理由 給与処理全体の期間のベースラインを設定します。処理対象となる従業員の範囲を定義します。 入手先 Payroll Control Centerのテーブル(例:PYC_D_PY_PROC_INST)で、新しいプロセスIDの作成を追跡します。 記録 PCCのプロセスインスタンスが作成された時点で記録されます。 イベントタイプ explicit | |||
| 給与記録の承認 | 従業員または給与グループの給与結果を正式に承認した時点を示します。PCCの「Monitoring」または「Sign Off」ステップで行われます。 | ||
| 重要な理由 計算・検証段階の終了と支払いの承認を示します。担当者ごとの処理能力を分析するうえで重要です。 入手先 Payroll Control CenterのStep Instanceログ(PYC_D_STEP_INST)から、ApprovalまたはConfirmationステップを確認します。 記録 PCCの承認ステップのステータスがCOMPLETEDに変わった時点で記録されます。 イベントタイプ explicit | |||
| 総支給額計算 | 総支給額の給与スキーマ計算が正常に実行された時点を示します。標準的な処理では、給与計算プログラムがPCL2クラスターに書き込んだ時点にあたります。 | ||
| 重要な理由 勤怠データと支給率データの統合が完了したことを示す重要な節目です。ここでの遅延は、総支給額から手取り額までの処理効率に影響します。 入手先 クラスターPCL2(給与結果)、特に「For-Period」のディレクトリテーブル(RGDIR)のタイムスタンプを参照します。 記録 給与クラスターに新しい連番が書き込まれた時点で記録されます。 イベントタイプ explicit | |||
| 銀行振込ファイル作成 | 仮データ媒体交換ファイル(pre-DME)または最終DMEファイルを作成した時点を示します。銀行への支払い指示が作成されます。 | ||
| 重要な理由 銀行振込自動化モニターで追跡します。ファイル作成の失敗は、プロセスが停止する重大な問題です。 入手先 DMEまたはPayment Medium Workbench(PMW)の実行ログを参照します。ログは通常、TemSeまたは特定の支払い実行テーブル(ReguH/ReguP)に保存されます。 記録 支払い実行(F110/RPCIPE)で出力が作成された時点で記録されます。 イベントタイプ explicit | |||
| インセンティブデータ取り込み | 賞与やコミッションなど、標準外の給与データを給与システムに取り込みます。通常はInfotype 0015または2010にデータを読み込みます。 | ||
| 重要な理由 取り込みが遅れると、総支給額を正確に計算できません。このデータを分析することで、インセンティブデータ連携のリードタイムを短縮できます。 入手先 監査ログ(PCL4または同等のログ)から、Infotype 0015(追加支払い)または2010(従業員報酬情報)への記録作成を確認します。 記録 Infotypeの作成タイムスタンプを、データ取り込みジョブのログと照合します。 イベントタイプ inferred | |||
| データ修正 | 監査例外への対応として、マスターデータまたは勤怠データを変更した時点を示します。給与アラートを解消するために必要な再処理にあたります。 | ||
| 重要な理由 手作業による修正率と再処理率を追跡します。プロセスの非効率につながる主なアクティビティです。 入手先 アラートが解消される前に、PCCアラートのタイムスタンプと、同じ従業員に対する後続の監査ログ(PCL4)の変更を結合して推定します。 記録 PCCアラートが有効な間に行われたマスターデータの更新を特定します。 イベントタイプ inferred | |||
| 監査例外の検出 | Payroll Control Centerのポリシーチェックによって検証アラートが生成された時点を示します。アラートはデータの不整合やコンプライアンス上のリスクを知らせます。 | ||
| 重要な理由 監査例外の発生頻度とコンプライアンスリスクのダッシュボードに直接反映されます。件数が多い場合、上流工程のデータ品質に問題がある可能性があります。 入手先 Payroll Control Centerのアラートテーブル(PYC_D_ALERT)で、特定のエラーコードを従業員記録に関連付けます。 記録 PCCのアラートテーブルに新しい記録が作成された時点で記録されます。 イベントタイプ explicit | |||
| 福利厚生控除の適用 | 福利厚生の計算ルールを処理する、計算スキーマ内の特定の手順です。通常の給与計算に含まれますが、個別に確認することで設定エラーを特定しやすくなります。 | ||
| 重要な理由 福利厚生と税額計算の正確性分析に役立ちます。複雑な控除ルールの不一致を調査する際に有用です。 入手先 給与結果にV0スプリットが存在することから推定します。詳細ログが有効な場合は、特定のログ記録も参照します(本番環境ではまれです)。 記録 総支給額の計算と同時に発生しますが、分析上は別の概念です。 イベントタイプ inferred | |||
| 給与明細公開 | セルフサービス(ESS)を通じて、従業員が給与明細を確認できるようにした時点を示します。 | ||
| 重要な理由 給与明細公開のSLAパフォーマンスを測定します。遅延するとヘルプデスクへの問い合わせが発生します。 入手先 給与明細マッシュアップサービスのログにある「Print Date」または公開日設定から推定します。 記録 支給日とシステム設定上の遅延時間をもとに算出します。 イベントタイプ inferred | |||
データ抽出ガイド
ステップ
- 抽出対象の給与領域と期間のパラメーターを特定します。主にPayroll Control Center(PCC)のテーブル(PYC_*)と給与クラスタディレクトリ(HRPY_RGDIR)からデータを抽出します。
- SAP SuccessFactors Employee Central Payroll(ECP)のバックエンドスキーマに接続したSQLクライアントまたはSAP HANA Studioを起動します。
- Queryセクションに記載されたデータ抽出スクリプトを実行します。このスクリプトは、マスターデータテーブル、給与計算結果、PCC監査ログのデータを集約します。
- 「タイムシート提出」と「タイムシート承認」のアクティビティを対応付けます。ECPでは通常、Employee Centralからこのデータを受け取るため、PA2001テーブルの作成日時と最終変更日時、または利用可能な場合はPTREQ_HEADERなどの専用時間管理インターフェーステーブルを使います。
- 対象の給与期間内に作成されたレコードを対象に、インフォタイプ0015(追加支給)と2010(従業員報酬情報)を検索し、「インセンティブデータのインポート」を抽出します。
- PYC_D_PYP(プロセスインスタンス)とPYC_D_BINST(ステップインスタンス)からPCCのプロセスステップを取得し、「給与処理の初期化」「給与シミュレーションの実行」「給与レコードの承認」「給与明細の公開」を記録します。
- PYC_D_ALERTテーブルを検索し、「監査例外の検出」イベントを特定します。これらのレコードは、特定の従業員とPCCチェックで検出された検証エラーを関連付けます。
- SAP変更文書ヘッダーテーブル(CDHDR)と給与関連のインフォタイプ(例:0008、0015、2001)を、給与処理期間内で結合し、「データ修正の実施」イベントを作成します。
- HRPY_RGDIRテーブルを使って「総支給額の計算」の正確な時刻を特定します。スキーマ実行中に同時に発生するため、同じタイムスタンプを使って「福利厚生控除の適用」イベントを作成します。
- REGUH(決済データ)とREGUT(DME管理)のテーブルから財務データを関連付け、「銀行振込ファイルの作成」と「支払いの実行」を記録します。
- ケースIDが一意になるよう、「PayrollRecord」列を必ず[EmployeeID]-[Period]-[Year]の形式に変換します。
- 最終データセットをCSVファイルとしてエクスポートします。ヘッダーが契約で定義された属性と一致することを確認し、ProcessMindにアップロードします。
設定
- 期間:直近6~12か月のローリング期間を対象に抽出するよう設定します。給与処理は周期的に行われるため、この範囲であれば通常処理と臨時処理の十分な違いを把握できます。
- 給与領域(ABKRS):特定の給与領域(例:米国の月次、ドイツの週次)で絞り込み、類似した処理サイクルを比較できるようにします。
- 言語:アクティビティとプロセスステップの説明を、主要なシステム言語(例:SPRAS = 'E')で抽出します。
- PCCプロセスID:PCCの設定で「監視」「本番」「臨時処理」に使用されているプロセス定義ID(PYP_ID)を特定し、関連するステップに絞り込みます。
- 通貨:グローバルな給与処理のデータを抽出する場合は、金額(GrossPayAmount)を単一の通貨に統一します。
- 権限:データベースユーザーには、人事(PA/PY)テーブルに加え、クラスタディレクトリ(HRPY_RGDIR)とPCCテーブル(PYC_*)の読み取り権限が必要です。
クエリの例 sql
/* Activity 1: Time Sheet Submitted */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Submitted' AS Activity,
T.BEGDA AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 2: Time Sheet Approved */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Approved' AS Activity,
T.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'False' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 3: Incentive Data Imported */
SELECT
CONCAT(I.PERNR, CONCAT('-', I.PABRJ, I.PABRP)) AS PayrollRecord,
'Incentive Data Imported' AS Activity,
I.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
I.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
I.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
I.BETRG AS GrossPayAmount,
I.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA0015 AS I
LEFT JOIN PA0001 AS O ON I.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE I.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 4: Payroll Process Initialized */
SELECT
CONCAT('N/A', CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payroll Process Initialized' AS Activity,
P.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
P.CREATED_BY AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_PYP AS P
WHERE P.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 5: Payroll Simulation Executed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Simulation Executed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Simulate%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 6: Audit Exception Flagged */
SELECT
CONCAT(A.RO_ID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Audit Exception Flagged' AS Activity,
A.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
'SYSTEM' AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_ALERT AS A
JOIN PYC_D_PYP AS P ON A.PYP_ID = P.ID
WHERE A.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 7: Data Correction Performed */
SELECT
CONCAT(C.OBJECTID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Data Correction Performed' AS Activity,
TO_TIMESTAMP(CONCAT(C.UDATE, C.UTIME)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
C.USERNAME AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM CDHDR AS C
JOIN HRPY_RGDIR AS P ON C.OBJECTID = P.PERNR
WHERE C.TCODE IN ('PA30', 'PA40') AND C.UDATE BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 8: Gross Pay Calculated */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Gross Pay Calculated' AS Activity,
TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 9: Benefit Deductions Applied */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Benefit Deductions Applied' AS Activity,
ADD_SECONDS(TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)), 1) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 10: Payroll Record Approved */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Record Approved' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Check%' AND S.STATUS = 'OK' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 11: Bank Transfer File Generated */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Bank Transfer File Generated' AS Activity,
TO_TIMESTAMP(CONCAT(T.TSDAT, T.TSTIM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.USRID AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUT AS T
JOIN REGUH AS H ON T.LAUFD = H.LAUFD AND T.LAUFI = H.LAUFI
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.TSDAT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 12: Payment Executed */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payment Executed' AS Activity,
TO_TIMESTAMP(CONCAT(H.LAUFD, '120000')) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
H.RBETR AS GrossPayAmount,
H.ZNME1 AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUH AS H
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE H.LAUFD BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 13: Pay Slip Published */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Pay Slip Published' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Remuneration%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 14: Tax Filing Completed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Tax Filing Completed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Tax%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]' ステップ
- ABAPエディターへのアクセス:SAP GUIからSAP SuccessFactors Employee Central Payroll(ECP)システムにログインします。トランザクションコードSE38(ABAPエディター)を開きます。
- プログラムの作成:新しいプログラム名(例:
Z_PROCESSMINING_PAYROLL_EXT)を入力し、作成をクリックします。種類に実行可能プログラムを選び、テスト用にローカルオブジェクト(パッケージ$TMP)として保存します。 - コードの実装:以下のQueryセクションに記載されたABAPコード全体をコピーしてエディターに貼り付け、既存の初期コードを置き換えます。
- 確認と有効化:確認ボタン(Ctrl+F2)をクリックして構文を検証します。エラーがないことを確認したら、有効化(Ctrl+F3)をクリックします。
- 抽出の実行:直接処理(F8)を押してレポートを実行します。
- 選択条件の設定:選択画面で
Payroll Area(例:US、99)、有効なDate Range(例:直近3か月)を入力します。テストする場合は、特定のPersonnel Numbers(PERNR)で絞り込むこともできます。 - データ抽出の実行:レポートを実行します。システムがHRPY_RGDIR、CATSDB、PA0015、REGUHの各テーブルを処理し、イベントログを作成します。
- 出力の確認:レポートでは
cl_demo_outputを使い、結果を画面上にグリッド表示するため、すぐに検証できます。 - データのエクスポート:結果のグリッドを右クリックし、スプレッドシートを選択して、CSVまたはExcel形式で保存します。
- ProcessMind用の形式に調整:エクスポートしたファイルを開きます。
EventTimestamp列がYYYY-MM-DD HH:MM:SS形式になっていることを確認します。PayrollRecord列でケースを一意に識別できることも確認します(通常はPERNR-SEQNRです)。 - アップロード:整形したCSVファイルをProcessMindにインポートし、列をケースID、アクティビティ、タイムスタンプ、属性に対応付けます。
設定
- 日付範囲:ABAPランタイム環境でメモリタイムアウトが発生しないよう、3~6か月単位でデータを抽出することを推奨します。
- 給与領域:重要な絞り込み条件です(テーブルT549A)。プロセスの一貫性を保つため、給与領域は一度に1つずつ抽出します(例:月次と隔週)。
- 設定テーブル:このスクリプトでは、主な抽出元として
HRPY_RGDIR(給与ディレクトリ)を読み取ります。このテーブルに対するS_TABU_DIS権限がユーザーに付与されていることを確認してください。 - 時間データソース:このスクリプトでは、タイムシートデータが
CATSDBにあることを前提としています。CATSを使わず、サードパーティの勤怠管理システムからIT2001またはIT2010に直接連携している場合、タイムシートのアクティビティが空になることがあります。その場合はスクリプトの調整が必要です。 - 支払いデータ:このスクリプトでは、
REGUH(決済データ)を使って給与処理と支払い処理を関連付けます。支払いイベントを確認するには、対象期間のF110支払い処理が実行済みであることを確認してください。 - パフォーマンス:従業員数が10万人を超える大規模システムでは、
SELECT *の処理をカーソルベースの取得に置き換えるか、バックグラウンドモード(F9)で実行してください。
クエリの例 abap
REPORT Z_PROCESSMINING_PAYROLL_EXT.
TABLES: pernr, hrpy_rgdir, catsdb, pa0015, reguh.
TYPES: BEGIN OF ty_event_log,
payroll_record TYPE string,
activity TYPE string,
event_timestamp TYPE string,
source_system TYPE string,
last_data_update TYPE string,
payroll_area TYPE abkrs,
employee_type TYPE persg,
pay_period TYPE pabrj,
pay_cycle_freq TYPE string,
gross_pay_amount TYPE string,
payroll_specialist TYPE usnam,
cost_center TYPE kostl,
is_automated TYPE string,
END OF ty_event_log.
DATA: gt_output TYPE TABLE OF ty_event_log,
gs_output TYPE ty_event_log,
gt_rgdir TYPE TABLE OF hrpy_rgdir,
gs_rgdir TYPE hrpy_rgdir,
gt_cats TYPE TABLE OF catsdb,
gs_cats TYPE catsdb,
gt_p0015 TYPE TABLE OF pa0015,
gs_p0015 TYPE pa0015,
gt_reguh TYPE TABLE OF reguh,
gs_reguh TYPE reguh,
gv_tstamp TYPE timestamp,
gv_date TYPE d,
gv_time TYPE t,
gv_pernr TYPE pernr_d.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_pernr FOR pernr-pernr,
s_date FOR sy-datum OBLIGATORY.
PARAMETERS: p_abkrs TYPE abkrs OBLIGATORY DEFAULT '99'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
" 1. Fetch Payroll Directory (The Core Process Driver)
SELECT * FROM hrpy_rgdir INTO TABLE gt_rgdir
WHERE pernr IN s_pernr
AND fpper LIKE '%'
AND cdate IN s_date.
IF gt_rgdir IS INITIAL.
WRITE: / 'No payroll results found for selection.'.
EXIT.
ENDIF.
SORT gt_rgdir BY pernr seqnr.
" Loop through Payroll Directory to build events
LOOP AT gt_rgdir INTO gs_rgdir.
CLEAR gs_output.
CONCATENATE gs_rgdir-pernr '-' gs_rgdir-seqnr INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-last_data_update = sy-datum.
gs_output-payroll_area = p_abkrs.
gs_output-pay_period = gs_rgdir-fpper.
gs_output-payroll_specialist = gs_rgdir-uname.
" --- Activity: Payroll Process Initialized ---
" Derived from the run date start
gs_output-activity = 'Payroll Process Initialized'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payroll Simulation Executed ---
IF gs_rgdir-srtza = 'S'. " S = Simulation
gs_output-activity = 'Payroll Simulation Executed'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Audit Exception Flagged ---
IF gs_rgdir-void IS NOT INITIAL. " Void indicator means rejected/exception
gs_output-activity = 'Audit Exception Flagged'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Data Correction Performed ---
" Inferred: If voided, a correction usually follows immediately
gs_output-activity = 'Data Correction Performed'.
" Add 1 hour to simulate reaction time
DATA: lv_corr_time TYPE t.
lv_corr_time = gs_rgdir-ctime + 3600.
CONCATENATE gs_rgdir-cdate lv_corr_time INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Gross Pay Calculated ---
IF gs_rgdir-srtza = 'A'. " A = Actual Result
gs_output-activity = 'Gross Pay Calculated'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-gross_pay_amount = '1000.00'. " Placeholder: Cluster read required for actual amount
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Benefit Deductions Applied ---
" Logically occurs immediately after gross calc
gs_output-activity = 'Benefit Deductions Applied'.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payroll Record Approved ---
" Inferred from successful write of 'A' record
gs_output-activity = 'Payroll Record Approved'.
DATA: lv_appr_time TYPE t.
lv_appr_time = gs_rgdir-ctime + 60. " +1 minute
CONCATENATE gs_rgdir-cdate lv_appr_time INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
" --- Activity: Pay Slip Published ---
" Available via ESS usually next day
gs_output-activity = 'Pay Slip Published'.
DATA: lv_slip_date TYPE d.
lv_slip_date = gs_rgdir-cdate + 1.
CONCATENATE lv_slip_date '080000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Tax Filing Completed ---
" End of period logic
gs_output-activity = 'Tax Filing Completed'.
DATA: lv_tax_date TYPE d.
lv_tax_date = gs_rgdir-paydt.
CONCATENATE lv_tax_date '235959' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDIF.
ENDLOOP.
" 2. Fetch Time Sheet Data (CATSDB)
" Linking to Payroll Record loosely via Period/Date
SELECT * FROM catsdb INTO TABLE gt_cats
WHERE pernr IN s_pernr
AND workdate IN s_date.
LOOP AT gt_cats INTO gs_cats.
CLEAR gs_output.
CONCATENATE gs_cats-pernr '-00000' INTO gs_output-payroll_record. " Generic mapping
gs_output-payroll_area = p_abkrs.
gs_output-source_system = 'SAP_ECP'.
" --- Activity: Time Sheet Submitted ---
IF gs_cats-status = '20' OR gs_cats-status = '30'.
gs_output-activity = 'Time Sheet Submitted'.
CONCATENATE gs_cats-laudate gs_cats-lautime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Time Sheet Approved ---
IF gs_cats-status = '30'. " 30 = Approved
gs_output-activity = 'Time Sheet Approved'.
CONCATENATE gs_cats-apdat gs_cats-aptime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
ENDLOOP.
" 3. Fetch Incentive Data (Infotype 0015)
SELECT * FROM pa0015 INTO TABLE gt_p0015
WHERE pernr IN s_pernr
AND begda IN s_date.
LOOP AT gt_p0015 INTO gs_p0015.
CLEAR gs_output.
CONCATENATE gs_p0015-pernr '-00000' INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-payroll_area = p_abkrs.
" --- Activity: Incentive Data Imported ---
gs_output-activity = 'Incentive Data Imported'.
CONCATENATE gs_p0015-aedtm '120000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDLOOP.
" 4. Fetch Payment Data (REGUH)
SELECT * FROM reguh INTO TABLE gt_reguh
WHERE zaldt IN s_date.
LOOP AT gt_reguh INTO gs_reguh.
" Filter for our PERNRs roughly (REGUH does not always have PERNR directly indexable easily in all views)
" For simulation, we map broadly or require join logic. Here assuming simple extraction.
CLEAR gs_output.
CONCATENATE gs_reguh-pernr '-99999' INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-payroll_area = p_abkrs.
" --- Activity: Bank Transfer File Generated ---
gs_output-activity = 'Bank Transfer File Generated'.
CONCATENATE gs_reguh-laufd gs_reguh-cpzut INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payment Executed ---
gs_output-activity = 'Payment Executed'.
CONCATENATE gs_reguh-zaldt '100000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDLOOP.
" Output Display
cl_demo_output=>display( gt_output ). 準備はできましたか?
このテンプレートをデータ抽出に適用し、効率的な給与処理に向けた取り組みを始めましょう。手順に沿って進めることで、生のデータから改善に役立つインサイトをすばやく得られます。
給与処理のパフォーマンスを今すぐ改善
給与サイクルを現在30%短縮している企業に続きましょう。
クレジットカードは不要です。数分で設定できます。