給与処理データテンプレート
給与処理データテンプレート
- 給与分析に必要な主要データ項目
- プロセスディスカバリーに必要な主要な節目
- システム別の抽出ガイド
給与計算処理の属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ Activity | 給与処理で発生する特定のタスクまたはイベントです。 | ||
| 説明 この属性には、実行中のプロセスステップ名が記録されます。たとえば、「タイムシート提出」、「給与シミュレーション実行」、「支払実行」などです。給与処理サイクル中に実行された操作の順序を分析担当者が可視化できるため、プロセスマップの基盤となります。 この属性のデータは、Workflowログ(SWWLOGHIST)、Infotype変更ログ(CDHDR/CDPOS)、給与処理ステータステーブルなど、複数のログから収集します。抽出時には一貫した命名規則を適用し、技術的なイベントコードを業務で理解しやすいアクティビティ名に変換します。 重要な理由 プロセスグラフのノードを定義し、プロセスフロー、ループ、バリアントを可視化できます。 入手先 SWWLOGHIST(Workflow)、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では、通常、Personnel Number(PERNR)にPayroll Year(PABRJ)とPayroll Period(PABRP)を連結し、複数回の実行を区別するためにシーケンス番号(SEQNR)を加えて作成します。この粒度により、各支払サイクルを個別のインスタンスとして分析でき、処理時間を正確に測定し、エラーを追跡できます。 重要な理由 Case IDとして機能し、関連するすべてのイベントをまとめることで、発行された各給与のエンドツーエンドのプロセス経路を再構築できます。 入手先 SAP Cluster B2(時間評価結果)またはPC_PAYRESULTテーブル(PERNR、PABRJ、PABRP、SEQNR)から作成されます。 例 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| ソースシステム SourceSystem | イベントデータの発生元となるシステムです。 | ||
| 説明 データを抽出したSAP SuccessFactors Employee Central Payrollのインスタンス、または接続されたサブシステムを特定します。複数の給与システムやハイブリッド構成を含む複雑な環境では、データの系譜と追跡可能性を確保します。 異なる地域のインストール環境にまたがるデータを分析する場合や、レガシーシステムと移行後のシステムのパフォーマンスを比較する場合に特に役立ちます。通常は、データ抽出の設定時に構成する固定文字列です。 重要な理由 複数システム環境でのデータ分割を可能にし、発生元を特定することでデータ品質の問題のトラブルシューティングに役立ちます。 入手先 SAPインストール環境または抽出設定のSystem 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のEmployee Group( 重要な理由 プロセスの差異や遅延が、特定の雇用区分に限られるものかどうかを特定できます。 入手先 テーブルPA0001、項目PERSG(グループ)およびPERSK(サブグループ)です。 例 在籍社員研修生年金受給者時給制契約社員 | |||
| 給与エリア PayrollArea | 従業員が所属する給与グループを定義します。 | ||
| 説明 給与エリアは、同じ給与実行で処理する従業員をまとめたグループです。月次や隔週などの支払頻度、または組織構造に基づいて設定されることが多く、異なる従業員集団のパフォーマンスを比較するプロセス分析に欠かせません。 SAPでは、技術項目 重要な理由 異なるグループ(時給制と月給制など)間で、給与処理サイクルのパフォーマンスを比較できます。 入手先 テーブルPA0001(組織割当)、項目ABKRSです。 例 米国 隔週ドイツ 月次役員給与計算 | |||
| 給与サイクル頻度 PayCycleFrequency | 実行が通常処理かオフサイクル処理かを示します。 | ||
| 説明 標準的な予定給与処理と、訂正や即時支払いに使う臨時の「オフサイクル」処理を区別します。オフサイクル処理の件数が多い場合は、プロセスの非効率を示す重要な兆候であり、「オフサイクル支払件数分析」ダッシュボードで追跡します。 給与クラスタディレクトリのOff-Cycle Reason( 重要な理由 「オフサイクル支払比率」KPIを測定し、標準外の処理を減らす取り組みの対象を定めるために欠かせません。 入手先 テーブルRGDIR(クラスタディレクトリ)、項目OCRSNまたはPAYTYです。 例 通常修正A賞与支給退職 | |||
| 給与処理担当者 PayrollSpecialist | レコードを処理した担当者のユーザーIDまたは氏名です。 | ||
| 説明 手作業や承認を担当した給与管理者または専門担当者を特定します。「担当者別処理量・作業負荷」ダッシュボードの中心となる属性であり、作業配分と個人の生産性を分析できます。 システムログの 重要な理由 作業負荷の平準化や、プロセス上の人的なボトルネックの特定に欠かせません。 入手先 CDHDRに記録されたシステム項目(SY-UNAME)またはWorkflow Actor IDです。 例 JSMITHKMILLERシステム | |||
| 給与期間 PayPeriod | 会計年度内の特定の期間番号です。 | ||
| 説明 給与期間の連番です(1月または最初の隔週サイクルを示す01など)。時間の経過に伴うパフォーマンスの傾向を追跡し、処理負荷の季節性を特定できます。
重要な理由 傾向を分析し、特定の時期に発生する季節性のボトルネックを特定できます。 入手先 テーブルPA0001または給与結果クラスタ(RGDIR)、項目PABRPです。 例 01122652 | |||
| 総支給額 GrossPayAmount | レコードに対して計算された総支給額です。 | ||
| 説明 控除前の総支給額を金額で示します。財務検証の基本指標であり、高額な支払いと監査確認の増加や承認リードタイムの長期化との関係を分析するために使います。 給与結果テーブル(RT)から取得し、通常は総支給額を表す特定の賃金タイプ(例:/101)に記録されています。「福利厚生・税計算精度」分析で計算の基準値として利用できます。 重要な理由 支払額に応じたプロセスの挙動を分析できます(たとえば、高額な支払いほど承認に時間がかかるかどうか)。 入手先 給与結果テーブル(RT)、賃金タイプ/101などです。 例 5000.002500.5010500.00 | |||
| 自動処理かどうか IsAutomated | アクティビティがシステムユーザーによって実行されたかどうかを示すフラグです。 | ||
| 説明 特定のプロセスステップがバックグラウンドジョブやシステムユーザーによって実行されたか、人が実行したかを示すBoolean属性です。「銀行振込自動化モニター」で、人手を介さずに処理された割合を計算するために欠かせません。 通常は、ユーザーIDを既知のシステムアカウント(「BATCH」、「SAP_WORKFLOW」など)の一覧と照合して導出します。 重要な理由 自動化率を測定し、手作業を減らせる箇所を特定できます。 入手先 ユーザーIDから導出します(例:Userが['BATCH','SYSTEM']に含まれる場合はtrue)。 例 truefalse | |||
| SLA処理期限 SLAProcessingDeadline | 給与処理を完了する目標日時です。 | ||
| 説明 給与を確定し、期限どおりに支払うための社内または社外の期限を表します。実際の「支払実行」タイムスタンプと比較し、「SLA遵守率」KPIの計算に使います。 SAPテーブルの標準項目ではない場合もありますが、カスタム管理テーブルで管理するか、給与カレンダー(支払日の2日前など)に基づいて定義します。このデータモデルでは、支払日から所定のバッファを差し引いて導出することが多い項目です。 重要な理由 処理の適時性とSLA遵守状況を評価する基準となります。 入手先 Pay Date(T549S)から設定された処理日数を差し引いて導出されます。 例 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| 手戻り回数 ReworkCount | 訂正を実施した回数です。 | ||
| 説明 ケース履歴に「データ訂正実施」アクティビティが現れた回数を数える計算指標です。プロセスの非効率を直接示し、「手動訂正・手戻り率」ダッシュボードを支えます。 手戻り回数が多い場合は、データ品質の問題が繰り返し発生しているか、初回の検証に通らない複雑なケースであることを示します。 重要な理由 エラー訂正に費やした作業量を定量化し、データ品質改善の取り組みの必要性を説明できます。 入手先 CaseIdごとに「データ訂正実施」アクティビティを数えて計算します。 例 013 | |||
| 法人 LegalEntity | 従業員の会社コードまたは法人です。 | ||
| 説明 給与処理レコードに関連付けられた法人(会社コード)を特定します。異なる子会社や法人間で給与処理のパフォーマンスを財務面から報告・分析できます。 組織割当インフォタイプ(PA0001)の 重要な理由 会社間のベンチマークや財務配賦の分析を支援します。 入手先 テーブルPA0001、項目BUKRSです。 例 US01DE011000 | |||
| 監査例外フラグ AuditExceptionFlag | 監査例外が発生したかどうかを示すフラグです。 | ||
| 説明 給与シミュレーションまたは計算中に、検証ルールによって例外や警告が発生したケースを示します。「監査例外頻度」KPIの主要な入力値です。 通常は、給与ログまたは特定のエラーメッセージテーブル(FEHLER)から取得します。trueの場合、プロセスフローに例外処理の経路が含まれていたことを示します。 重要な理由 データ品質の問題と、手作業による対応の必要性を明らかにします。 入手先 給与ログにエラーメッセージが存在するか、特定のステータスコードがあるかによって導出されます。 例 truefalse | |||
| 税務管轄 TaxJurisdiction | 従業員に適用される税務地域または税務当局です。 | ||
| 説明 給与処理レコードを管轄する特定の税務当局または地域(州、県、カントンなど)を特定します。「監査例外・コンプライアンスリスク」ダッシュボードで、地域ごとのコンプライアンス問題を重点的に確認するために必要です。 SAP US Payrollでは 重要な理由 規制地域ごとにコンプライアンスリスクと監査例外を分けて分析できます。 入手先 テーブルPA0001またはPA0207/PA0208、項目TXJCDです。 例 CANYTXNRW | |||
給与計算処理のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| タイムシート承認 | 管理者または担当者が時間データを正式に承認するアクティビティです。このステータス変更により、給与エンジンへ転送するデータが確定します。 | ||
| 重要な理由 タイムシート承認リードタイムKPIを算出します。ここでのボトルネックは、管理者による遅延や複雑な承認階層を示します。 入手先 Employee Central Workflow Requestテーブル(WfRequest)で、ステータスがCOMPLETEDまたはAPPROVEDのレコードに絞り込みます。 取得 ワークフローのステータスがAPPROVEDに変更された時点で記録されます イベントタイプ explicit | |||
| タイムシート提出 | 従業員または管理者が給与期間の時間データを提出するアクティビティです。ECPに接続されたEmployee Centralモジュールのワークフローリクエストログから取得します。 | ||
| 重要な理由 データ蓄積段階の開始を示します。ここで遅延が発生すると後続の処理にも影響し、給与処理に使える期間が圧縮されます。 入手先 Employee Central Workflow Requestテーブル(WfRequest)で、Time SheetまたはTime Offカテゴリに絞り込みます。 取得 ワークフローのステータスがSUBMITTEDに変更された時点で記録されます イベントタイプ explicit | |||
| 支払い実行 | 支払い処理を完了するアクティビティです。通常は銀行による確認、またはF110支払い処理の完了によって確定します。 | ||
| 重要な理由 SLAコンプライアンス率の主な終了タイムスタンプです。従業員に期日どおり支払われたかを判定します。 入手先 支払い処理テーブル(REGUH)に記録された処理日時、またはValue Dateから推定します。 取得 支払い処理のステータスがPosted/Completeに設定された時点で記録されます イベントタイプ explicit | |||
| 税務申告完了 | 税務申告ファイル(米国のPU19など)を生成するか、第三者の税務申告プロバイダーへ転送するアクティビティです。 | ||
| 重要な理由 規制上のコンプライアンスを確保します。処理順序における最終的なコンプライアンスステップを追跡します。 入手先 ファイル生成の成功を示すTax Reporter Log ManagerまたはB2A(Business to Administration)Managerのログです。 取得 Tax Reporterの処理が正常に完了した時点で記録されます イベントタイプ explicit | |||
| 給与シミュレーション実行 | 結果をデータベースに確定せず、エラーを特定するために給与ドライバーをテスト実行します。PCCの検証段階における重要なステップです。 | ||
| 重要な理由 初回計算率の算出に欠かせません。シミュレーションの繰り返しは、データ品質に問題があることを示します。 入手先 ステップタイプがSimulationに該当するPayroll Control Center Step Instanceログ(PYC_D_STEP_INST)です。 取得 PCC Simulation StepのステータスがCOMPLETEDに変更された時点で記録されます イベントタイプ explicit | |||
| 給与レコード承認 | 従業員または給与グループの給与結果を正式に承認するアクティビティです。PCCの「Monitoring」または「Sign Off」ステップで実行されます。 | ||
| 重要な理由 計算・検証段階の終了と支払いへのリリースを示します。担当者の処理能力分析に欠かせません。 入手先 ApprovalまたはConfirmationステップに対応するPayroll Control Center Step Instanceログ(PYC_D_STEP_INST)です。 取得 PCC Approval StepのステータスがCOMPLETEDに変更された時点で記録されます イベントタイプ explicit | |||
| 給与処理初期化 | Payroll Control Center(PCC)内に給与処理インスタンスを作成するアクティビティです。特定の給与領域における給与サイクルの正式な開始を示します。 | ||
| 重要な理由 給与処理の最初から最後までのサイクル期間の基準を設定します。処理対象となる従業員の範囲も定義します。 入手先 新しいプロセスIDの作成を追跡するPayroll Control Centerのテーブル(例:PYC_D_PY_PROC_INST)です。 取得 PCC Process Instanceが作成された時点で記録されます イベントタイプ explicit | |||
| 総支給額計算 | 総給与スキーマの計算が正常に実行されるアクティビティです。標準処理では、給与ドライバーがPCL2クラスターに書き込んだ時点で発生します。 | ||
| 重要な理由 時間データとレートデータの結合が正常に完了したことを示す主要なマイルストーンです。ここでの遅延は、総支給額から手取り額までの処理効率に影響します。 入手先 クラスターPCL2(給与結果)、特に「For-Period」に対応するディレクトリテーブル(RGDIR)のタイムスタンプです。 取得 新しいシーケンス番号が給与クラスターに書き込まれた時点で記録されます イベントタイプ explicit | |||
| 銀行振込ファイル生成 | 暫定データ媒体交換ファイル(pre-DME)または最終DMEファイルを作成するアクティビティです。銀行への支払い指示を作成します。 | ||
| 重要な理由 銀行振込自動化モニターを追跡します。ファイル生成の失敗は、プロセスを停止させる重大な事象です。 入手先 DME/Payment Medium Workbench(PMW)の実行ログです。通常はTemSeまたは支払い処理用の特定テーブル(ReguH/ReguP)に保存されます。 取得 支払い処理(F110/RPCIPE)が出力を作成した時点で記録されます イベントタイプ explicit | |||
| インセンティブデータ取り込み | 賞与やコミッションなど、標準外の給与データを給与システムに取り込むアクティビティです。通常はInfotype 0015または2010にデータをロードします。 | ||
| 重要な理由 取り込みが遅れると、総支給額を正確に計算できなくなります。分析により、インセンティブデータ連携のリードタイムを最適化できます。 入手先 Infotype 0015(追加支給)または2010(従業員報酬情報)にレコードが作成されたことを示す監査ログ(PCL4または同等のログ)です。 取得 Infotypeの作成タイムスタンプと取り込みジョブのログを比較します イベントタイプ inferred | |||
| データ修正実施 | 監査例外に対応してマスターデータまたは時間データを変更するアクティビティです。給与アラートを解消するために必要な再処理を表します。 | ||
| 重要な理由 手作業による修正率と再処理率を追跡します。プロセスの非効率に最も大きく影響するアクティビティです。 入手先 PCC Alertのタイムスタンプと、アラートがクローズされる前に同じ従業員に対して行われた、その後の監査ログ変更(PCL4)を結合して推定します。 取得 PCCアラートが有効な間に発生したマスターデータの更新を特定します イベントタイプ inferred | |||
| 監査例外フラグ付与 | Payroll Control Centerのポリシーチェックによって検証アラートが生成されるアクティビティです。データの不整合やコンプライアンス上のリスクを特定します。 | ||
| 重要な理由 監査例外発生頻度とコンプライアンスリスクのダッシュボードに直接反映されます。件数が多い場合は、上流のデータ品質に問題がある可能性があります。 入手先 特定のエラーコードを従業員レコードに関連付けるPayroll Control Center Alertテーブル(PYC_D_ALERT)です。 取得 PCC Alertテーブルに新しいエントリが作成された時点で記録されます イベントタイプ 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監査ログのデータを集約します。
- 「Time Sheet Submitted」と「Time Sheet Approved」のアクティビティをマッピングします。ECPではこのデータをEmployee Centralから受け取ることが多いため、テーブルPA2001の作成日時と最終変更日時、または利用可能な場合はPTREQ_HEADERなどの専用時間インターフェーステーブルを使用します。
- 対象給与期間内に作成されたレコードを対象に、Infotype 0015(追加支給)と2010(従業員報酬情報)を検索し、「Incentive Data Imported」を抽出します。
- テーブルPYC_D_PYP(プロセスインスタンス)とPYC_D_BINST(ステップインスタンス)からPCCのプロセスステップを取得し、「Payroll Process Initialized」、「Payroll Simulation Executed」、「Payroll Record Approved」、「Pay Slip Published」を記録します。
- テーブルPYC_D_ALERTを検索し、「Audit Exception Flagged」イベントを特定します。これらのレコードは、PCCのチェックステップで検出された検証エラーと特定の従業員を関連付けます。
- 有効な給与処理期間中に、SAP Change Document Headerテーブル(CDHDR)と給与関連のInfotype(例:0008、0015、2001)を結合し、「Data Correction Performed」イベントを生成します。
- テーブルHRPY_RGDIRを利用して、「Gross Pay Calculated」が発生した正確な時点を特定します。スキーマ実行中に同時に発生するため、同じタイムスタンプを使って「Benefit Deductions Applied」の派生イベントを作成します。
- テーブルREGUH(決済データ)とREGUT(DME管理)から財務データを関連付け、「Bank Transfer File Generated」と「Payment Executed」を記録します。
- 「PayrollRecord」列を厳密に[EmployeeID]-[Period]-[Year]の形式に変換し、ケースIDの一意性を確保します。
- 属性の見出しが契約で定義された内容と一致することを確認して最終データセットをCSVファイルとしてエクスポートし、ProcessMindにアップロードします。
設定
- 期間:抽出対象を直近6~12か月の移動期間に設定します。給与処理は周期的に行われるため、この範囲で通常処理と臨時処理の十分な変動を把握できます。
- 給与領域(ABKRS):特定の給与領域(例:US Monthly、DE Weekly)で絞り込み、類似した処理サイクルを比較できるようにします。
- 言語:アクティビティとプロセスステップの説明は、主要なシステム言語(例:SPRAS = 'E')で抽出します。
- PCCプロセスID:PCC設定で「Monitoring」、「Production」、「Off-Cycle」に使用されているプロセス定義ID(PYP_ID)を特定し、関連するステップを絞り込みます。
- 通貨:グローバルな給与業務のデータを抽出する場合は、金額(GrossPayAmount)を単一通貨に換算します。
- 権限:データベースユーザーには、人事(PA/PY)テーブル、特にクラスターのディレクトリ(HRPY_RGDIR)とPCCテーブル(PYC_*)への読み取り権限が必要です。
a サンプルクエリ 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回につき1つの給与領域を抽出します(例:月次と隔週)。
- 設定テーブル:スクリプトは
HRPY_RGDIR(給与ディレクトリ)を主な基準として読み取ります。ユーザーにこのテーブルへのS_TABU_DIS権限があることを確認します。 - 時間データソース:スクリプトは時間データが
CATSDBに保存されていることを前提としています。CATSを使わず、サードパーティーのタイムレコーダーからIT2001またはIT2010に直接連携している場合、タイムシートのアクティビティが空になり、スクリプトの調整が必要になることがあります。 - 支払いデータ:スクリプトは
REGUH(決済データ)を通じて給与実行と支払い実行を関連付けます。選択した期間についてF110の支払い実行が完了していることを確認すると、支払いイベントを確認できます。 - パフォーマンス:大規模システム(従業員10万人以上)では、
SELECT *の処理をカーソルベースの取得に置き換えるか、バックグラウンドモード(F9)で実行します。
a サンプルクエリ 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%短縮している企業に加わりませんか。
クレジットカードは不要です。数分で設定できます。