倉庫管理データテンプレート
倉庫管理データテンプレート
- 詳細な分析に推奨される属性
- プロセス全体で追跡する主要アクティビティ
- SAP EWMからデータを抽出するためのガイド
倉庫管理の属性
| 名前 | 説明 | ||
|---|---|---|---|
| 倉庫オーダー WarehouseOrder | リソースが実行する一連の倉庫タスクをまとめる、倉庫注文の一意の識別子です。 | ||
| 説明 Warehouse Orderは、倉庫内で商品を取り扱うエンドツーエンドプロセスを追跡するための主要なケース識別子です。出庫納品用商品のピッキングや、入荷商品の棚入れなどの作業単位を表します。各Warehouse Orderには、1つ以上の倉庫タスクが含まれます。 プロセスマイニングでWarehouse Order単位に分析すると、特定の作業単位のライフサイクル全体を把握できます。これにより、ボトルネックの特定、作成から完了までの全体サイクルタイムの測定、1つの物流指示に関連するアクティビティの流れ全体の理解が可能になります。 重要な理由 関連するすべての倉庫アクティビティをつなぐ中核的な識別子であり、1つの作業単位についてエンドツーエンドのプロセス分析とサイクルタイム測定を可能にします。 入手先 通常、SAP EWMの倉庫注文ヘッダーテーブル(/SCWM/WHOなど)にあります。 例 200000145200000146200000147 | |||
| アクティビティ名 ActivityName | 発生した特定の倉庫管理アクティビティまたはイベントの名称です。例として、「Picking Task Created」や「Goods Issue Posted」があります。 | ||
| 説明 この属性は、倉庫管理プロセス内の1つのステップまたはイベントを表します。これらのアクティビティはプロセスマップを構成する基本要素であり、作成、確認、梱包、積み込み、商品の移動などのタスクを表します。 これらのアクティビティの順序と頻度を分析することは、プロセスマイニングの基本です。プロセスフローの可視化、一般的な経路と稀な経路の特定、標準手順からの逸脱の検出、遅延や手戻りの原因となる具体的なステップの特定に役立ちます。 重要な理由 プロセスの各ステップを定義し、プロセスマップの基盤となるとともに、プロセスフロー、逸脱、ボトルネックの分析を可能にします。 入手先 ステータス変更、イベントメッセージ、または倉庫注文とタスクに関連するトランザクションログから導出します。/SCWM/ORDIM_C(確認)などのテーブルを使用するほか、/SCWM/WHOおよび/SCWM/ORDIM_Oのステータスフィールドを解釈して取得します。 例 ピッキングタスクの確認棚入れタスクの作成入荷計上Warehouse Orderの完了 | |||
| ソースシステム SourceSystem | データの抽出元システムを識別します。例として、SAP EWMの本番インスタンスがあります。 | ||
| 説明 この属性は、倉庫管理データの記録元となるシステムを示します。複数のシステムが存在するエンタープライズ環境では、追跡可能性と背景情報を確保するため、データの出所を明示することが欠かせません。 分析では、複数のシステムにまたがる可能性のあるプロセスを区別したり、地域ごとに分かれたシステムなど、異なるインスタンスのプロセスを比較したりできます。データの系譜を明確にし、監査可能な状態に保つことにもつながります。 重要な理由 複数のSAPインスタンスや連携システムがある環境で、データの系譜を明確にし、追跡可能性と背景情報を提供します。 入手先 通常、データの抽出、変換、ロード(ETL)処理で付与する固定値で、特定のSAP S/4HANAまたはEWMインスタンスを識別します。 例 SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| 最終データ更新日時 LastDataUpdate | このレコードのデータがソースシステムから最後に更新された時点を示すタイムスタンプです。 | ||
| 説明 この属性は、データがソースシステムから最後に抽出された時点を記録します。分析対象データの鮮度を把握するための重要な情報です。 分析やダッシュボードでは、データがいつ更新されたかを把握することが、適切な判断に欠かせません。このタイムスタンプにより、リアルタイム情報を見ているのか、特定時点のスナップショットを見ているのかを判断でき、データの最新性に対する認識をそろえられます。 重要な理由 データの鮮度を示します。プロセス分析がどの時点の情報に基づいているかを理解するうえで重要です。 入手先 通常、データ抽出(ETL)処理で生成・付与するメタデータフィールドです。データロードのタイムスタンプを示します。 例 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| 開始時刻 EventTime | アクティビティまたはイベントが開始した時点を示すタイムスタンプです。 | ||
| 説明 この属性は、特定の倉庫アクティビティが発生した正確な日付と時刻を記録します。イベントの順序付けや、イベント間の所要時間の計算に使用する主要な時間要素です。 プロセスマイニングでは、各ケースのイベントを時系列に並べるために開始時刻が欠かせません。サイクルタイム、待機時間、処理時間の計算に使用され、パフォーマンス分析、ボトルネックの特定、SLA監視に役立ちます。 重要な理由 このタイムスタンプは、イベントを時系列に並べ、サイクルタイムや所要時間など、時間に基づくすべてのパフォーマンス指標を計算するうえで重要です。 入手先 通常、/SCWM/ORDIM_C(例:フィールドCONF_TIMESTAMP)などのイベントまたは確認テーブル、あるいは倉庫注文とタスクに関連するステータス変更ログにあります。 例 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| Warehouse Orderステータス WarehouseOrderStatus | Warehouse Orderの現在または最終的なステータスです。例として「Completed」や「Canceled」があります。 | ||
| 説明 この属性は、Warehouse Orderの最終的な結果を示します。注文が正常に完了したのかキャンセルされたのかを把握することは、プロセスの成功率を分析し、未完了の理由を特定するうえで重要です。 多くの分析で重要なフィルターになります。たとえば、エンドツーエンドの倉庫サイクルタイムを計算する際は、通常、完了した注文だけを分析対象にします。また、キャンセルされた注文の頻度と原因の特定・調査にも役立ちます。 重要な理由 ケースの結果を示し、完了した注文とキャンセルされた注文を分けて分析できます。正確なサイクルタイムと処理量の分析に欠かせません。 入手先 通常、ステータスフィールドは倉庫注文ヘッダーテーブル/SCWM/WHOにあります。 例 完了処理中キャンセル済み | |||
| Warehouse Orderタイプ WarehouseOrderType | 棚入れ、ピッキング、庫内補充など、目的に応じてWarehouse Orderを分類します。 | ||
| 説明 Warehouse Orderタイプは、物流上の機能に基づいて注文を分類します。この区別は、タイプごとに異なるプロセス経路とパフォーマンス要件があるため、基本的な情報です。 分析では、フィルタリングと比較に使う主要な軸になります。たとえば、「Warehouse Orderの処理量・件数」ダッシュボードでは、この属性を使って入荷(棚入れ)と出荷(ピッキング)のプロセスを分け、倉庫業務をより適切に把握します。 重要な理由 プロセス区分(例:入荷と出荷)に基づいて分析を分類し、より適切な比較と分析結果の把握を可能にします。 入手先 倉庫プロセスタイプによって決まり、通常は倉庫注文ヘッダーテーブル/SCWM/WHOにあります。 例 ピッキング棚入れ補充保管 | |||
| ユーザーID User | アクティビティを確認または実行した倉庫担当者またはユーザーの識別子です。 | ||
| 説明 この属性は、倉庫タスクを実行した担当者のユーザーIDを記録します。ピッキングを確認したピッカー、梱包ステーションの梱包担当者、棚入れを確認したフォークリフト担当者などが該当します。 このデータは「リソース・設備利用率」ダッシュボードに欠かせません。個人またはチームのパフォーマンス分析、研修ニーズの特定、倉庫スタッフ間の作業負荷の調整に役立ちます。 重要な理由 作業を特定の担当者に関連付けることで、ユーザーまたはチーム単位のパフォーマンス分析、リソース管理、作業負荷の調整を可能にします。 入手先 通常、倉庫タスクの確認データにあり、例として/SCWM/ORDIM_CテーブルのフィールドUNAMEが挙げられます。 例 JSMITHARODRIGUEZOPERATOR_05 | |||
| 優先度 Priority | 倉庫オーダーに割り当てられた優先度です。緊急度を示し、「高」、「中」、「低」などで表されます。 | ||
| 説明 この属性は、業務上の重要度や緊急度に基づいて倉庫オーダーを分類します。たとえば、高優先度のオーダーには、特急出荷や重要な生産供給向けのものがあり、迅速な処理が必要です。 優先度は、「優先オーダーの履行遵守」ダッシュボードとKPIの主要な分析軸です。優先度でパフォーマンスを絞り込み、最も重要なオーダーが予定どおりに処理されているかを確認できます。これにより、倉庫業務を事業目標に合わせて管理できます。 重要な理由 優先度を考慮した分析とモニタリングが可能になり、緊急度の高いオーダーがサービスレベルを満たしているかを確認できます。顧客満足度にも直接影響する指標です。 入手先 優先度は元の出荷伝票に設定し、倉庫オーダーへ引き継ぐことができます。/SCWM/WHOなどのテーブルに保存されている場合があります。 例 高中低 | |||
| 品目番号 MaterialNumber | 倉庫タスクで取り扱う製品または品目の一意の識別子です。 | ||
| 説明 この属性は、移動、ピッキング、梱包、入荷の対象となる品目を示します。製品の特性に基づいて倉庫パフォーマンスを分類・分析するための重要な軸です。 品目番号で分析すると、棚入れに最も時間がかかる製品、ピッキングミスが最も多い製品、品質検査が必要な製品などを把握できます。「入荷・棚入れパフォーマンス」や「品質検査リードタイム」のダッシュボードに欠かせない情報です。 重要な理由 製品単位でプロセスデータを絞り込み、分類できます。取り扱い、保管、品質管理における製品固有の問題を特定するうえで重要です。 入手先 通常、/SCWM/ORDIM_Oなどの倉庫タスクテーブルにあり、品目マスターデータと関連付けられています。 例 FIN-1001RAW-2050SFIN-300-A | |||
| 終了時刻 EventEndTime | アクティビティまたはイベントが完了した時点を示すタイムスタンプです。 | ||
| 説明 この属性は、特定の倉庫アクティビティが終了した日付と時刻を記録します。単発のイベントでは開始時刻と同じになることが多い一方、梱包や積み込みなど、所要時間を測定できるアクティビティでは異なる場合があります。 終了時刻を個別に持つことで、各アクティビティの処理時間を正確に計算できます。これは、「ピッキング・梱包効率」など、特定の工程の所要時間を分析するパフォーマンスダッシュボードに欠かせません。どのタスクに最も時間がかかっているかを特定できます。 重要な理由 個々のアクティビティの所要時間を正確に計算できるため、時間のかかる工程や多くのリソースを必要とするタスクの特定に役立ちます。 入手先 個別のイベントでは開始タイムスタンプと同じになることが多くあります。長時間にわたるタスクでは、/SCWM/ORDIM_Cなどのテーブルに別のフィールドとして記録されるか、後続のステータス変更から導出します。 例 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| エンドツーエンドのサイクルタイム EndToEndCycleTime | 倉庫オーダーの作成から最終完了までに経過した合計時間です。 | ||
| 説明 このKPIは、倉庫オーダーのライフサイクル全体にかかった時間を測定します。倉庫業務全体の効率と処理速度を示す、重要な上位指標です。 この指標は、「エンドツーエンド倉庫サイクルタイム」ダッシュボードの中心となります。KPIを時系列で追跡し、オーダータイプや品目などの軸で分けて分析すると、構造的な非効率を特定し、業務全体に対するプロセス改善施策の効果を測定できます。 重要な理由 倉庫プロセス全体の効率を測定する主要KPIであり、業務パフォーマンスを俯瞰できます。 入手先 ケース単位で、最初のイベント「倉庫オーダー作成」のタイムスタンプから、最後のイベント「倉庫オーダー完了」のタイムスタンプを差し引いて算出します。 例 8640017280043200 | |||
| 使用機器 EquipmentUsed | 倉庫タスクの実行に使用したフォークリフトやハンドパレットトラックなどの機器を識別する情報です。 | ||
| 説明 この属性は、倉庫タスクに割り当てられた、または使用されたマテリアルハンドリング機器を指定します。特定のフォークリフト、自動搬送車(AGV)、特定タイプの台車などが該当します。 このデータは、「リソース・機器稼働状況」ダッシュボードと「機器稼働率」KPIの基盤になります。どのタスクでどの機器がどれだけの時間使われたかを追跡することで、管理者は稼働パターンを分析し、メンテナンスを計画し、車両・機器の台数や構成を適切に判断できます。 重要な理由 機器の稼働状況と効率を分析できるため、車両・機器の管理を最適化し、リソース不足を特定できます。 入手先 SAP EWMでリソース管理が設定されている場合、この情報は倉庫タスクまたはオーダーの詳細に保存されます。SAP Extended Warehouse Managementのドキュメントを参照してください。 例 FORKLIFT-07AGV-02CART-15 | |||
| 保管場所 StorageLocation | 商品を移動する先または移動元となる、保管ビンなど倉庫内の具体的な場所です。 | ||
| 説明 この属性は、倉庫タスクに関係する物理的な場所を識別します。たとえば、ピッキング元の棚番や棚入れ先の棚番などです。広いエリアから、特定の棚の座標まで指定できます。 保管場所別に分析すると、ピッキング率の高い「ゴールデンゾーン」や、遅延・エラーが頻発する問題エリアなど、業務上の傾向を把握できます。また、「ピッキングルート遵守」分析にも利用でき、作業員が倉庫内をどのように移動しているかを確認できます。 重要な理由 倉庫内の地理的な状況を把握できるため、移動効率、棚へのアクセス性、ピッキングルートの最適化を分析できます。 入手先 通常は、/SCWM/ORDIM_Oなどの倉庫タスクテーブルにあり、移動元(VLPLA)と移動先(NLPLA)の棚番情報が含まれます。 例 01-02-03PACK-STATION-01GI-ZONE-A | |||
| 倉庫タスク WarehouseTask | Warehouse Orderを構成する、1つの倉庫タスクの一意の識別子です。 | ||
| 説明 Warehouse Taskは、商品を保管ビンから梱包ステーションへ移動するなど、特定の商品の移動を実行するための指示です。Warehouse Orderは、1つ以上のこのようなタスクをまとめます。 タスク単位で分析すると、倉庫業務をより詳細に把握できます。特定の移動に対するリソースのパフォーマンス、到達が難しい保管ビン、個々のピッキングや棚入れアクティビティの効率を分析できます。 重要な理由 より大きなWarehouse Order内の個々の移動やステップを調べることができ、詳細な分析を可能にします。 入手先 /SCWM/ORDIM_O(タスクデータ)や/SCWM/ORDIM_C(確認データ)などの倉庫タスクテーブルにあります。 例 300000451300000452300000453 | |||
| 出庫予定時刻 PlannedDepartureTime | 出荷が倉庫を出発する予定時刻です。 | ||
| 説明 この属性は、ピッキング、梱包、積み込みが完了した後に出荷する目標時刻を示します。出庫プロセスの最終段階が予定どおり進んだかを測定する基準になります。 このタイムスタンプは、「出荷出庫オンタイムパフォーマンス」ダッシュボードに欠かせません。実際の出庫時刻と予定時刻を比較することで、積み込み、運送会社との調整、書類作成における遅延を特定し、物流・輸送計画の効率を把握できます。 重要な理由 予定どおりの出庫実績を測定する基準となり、物流計画や運送会社のスケジュール遵守に役立ちます。 入手先 通常は、倉庫オーダーに関連付けられた輸送または出荷伝票の一部として記録されます。SAP Extended Warehouse Managementのドキュメントを参照してください。 例 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| 実績数量 ActualQuantity | 倉庫タスクについて、ユーザーが確認した品目の実際の数量です。 | ||
| 説明 この属性は、倉庫担当者が実際に取り扱い、確認した数量です。ビンからピッキングした数量、棚入れした数量、入荷時に計数した数量などが該当します。 実績数量と計画数量を比較することは、「在庫差異分析」の基本です。2つの値の差異は、調査が必要なプロセス上の例外を直接示します。業務の正確性を測る指標であり、「在庫精度率」や「ピッキングミス率」KPIの重要な入力値です。 重要な理由 実際に取り扱った数量を示す基準値です。計画数量と比較することで、業務の正確性を直接測定し、ミスを特定できます。 入手先 倉庫タスクの確認データにあり、例として/SCWM/ORDIM_CテーブルのNDIFF(差異数量)などのフィールド、または確認数量から導出した値が挙げられます。 例 10049250 | |||
| 数量差異 QuantityVariance | タスクの計画数量と実績確認数量の差です。 | ||
| 説明 この計算指標は、倉庫タスクの実行時に発生した差異を数値化します。ゼロ以外の値は、実際の在庫状況とシステム記録が一致していないことを示し、ピッキングミス、入荷処理の誤り、破損品などの問題が考えられます。 この属性は、「在庫差異分析」ダッシュボードでエラーの大きさを把握するために直接役立ちます。差異の発生頻度と大きさを分析することで、在庫管理や業務実行における構造的な問題を特定し、精度向上の取り組みにつなげられます。 重要な理由 在庫や業務の不正確さを直接数値化できるため、差異の大きさを簡単に把握・分析できます。 入手先 関連する各タスクについて、PlannedQuantityからActualQuantityを差し引いて算出します。 例 0-15 | |||
| 期限内完了フラグ IsOnTime | 倉庫オーダーが要求完了日までに完了したかを示す真偽値フラグです。 | ||
| 説明 このフラグは、SLAの遵守状況を二値で示します。倉庫オーダーの最終完了イベントが、指定されたRequested Completion Date以前に発生したかを判定します。 この属性は、「優先オーダーの履行遵守」ダッシュボードに欠かせません。期限内のオーダーと遅延したオーダーを簡単に集計・絞り込みできるため、KPIや可視化を容易に作成できます。分析層で複雑な日付計算を行わずに、サービスレベル目標に対する実績をすばやく確認できます。 重要な理由 各オーダーの履行が期限内か遅延しているかを明確に示す二値指標により、SLA実績の分析を簡単にします。 入手先 計算属性です。「倉庫オーダー完了」アクティビティのタイムスタンプと「RequestedCompletionDate」属性を比較します。 例 truefalse | |||
| 要求完了日 RequestedCompletionDate | 高優先度の倉庫オーダーを完了するよう要求された日付です。 | ||
| 説明 この属性は、倉庫オーダーのサービスレベル合意(SLA)または目標完了日を定義します。実際の完了時刻と比較する期限となり、オーダーが予定どおり履行されたかを判定できます。 この日付は、「優先オーダー履行率」KPIの算出に欠かせません。実際の完了タイムスタンプと要求完了日を比較することで、サービスレベルの遵守状況を測定し、遅延リスクのあるオーダーや、すでに遅延しているオーダーを特定できます。 重要な理由 オーダーのSLAを定義し、予定どおりの履行状況を測定する基準になります。特に高優先度の品目の管理に役立ちます。 入手先 通常は、倉庫オーダーの起点となった出庫伝票に記録された出庫予定日または納入日から算出されます。SAP Extended Warehouse Managementのドキュメントを参照してください。 例 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| 計画数量 PlannedQuantity | 特定の倉庫タスクで扱う品目の予定数量です。 | ||
| 説明 この属性は、倉庫タスクの指示に従って移動、ピッキング、または入荷する品目の目標数量を表します。実際の実行数量と比較する基準になります。 計画数量は、「在庫差異分析」ダッシュボードと「在庫精度率」KPIに欠かせません。実績数量と比較することで、ピッキングミス、入荷ミス、データ入力の問題につながる差異を特定し、在庫精度の向上に役立てられます。 重要な理由 在庫精度の計算と差異の特定における基準となり、正確な在庫水準を維持するうえで重要です。 入手先 倉庫タスクデータにあり、例として/SCWM/ORDIM_OテーブルのNISTA(目標数量)などのフィールドが挙げられます。 例 10050250 | |||
倉庫管理のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| Warehouse Orderの作成 | このアクティビティは、複数の倉庫タスクで構成される作業単位であるWarehouse Order(WO)の作成を示します。システムは、作業エリア、キュー、製品などの条件に基づき、倉庫担当者の作業をまとめて整理するためにWOを生成します。 | ||
| 重要な理由 これは倉庫実行プロセスの主要な開始イベントです。作成から最初のアクションまでの時間を分析すると、作業割り当てやリソース配分の遅延を特定できます。 入手先 このイベントは、Warehouse Orderのヘッダーテーブルである/SCWM/WHOの作成タイムスタンプ(フィールドCREATED_AT)から取得します。 取得 各Warehouse Order番号(WHO)について、/SCWM/WHOテーブルから作成タイムスタンプを抽出します。 イベントタイプ explicit | |||
| Warehouse Orderの完了 | 関連するすべての倉庫タスクが確認されると、Warehouse Orderのステータスが「Completed」に設定されます。これにより、実行上の作業単位が完了します。 | ||
| 重要な理由 これはプロセスが正常に完了したことを示す主要な終了イベントです。倉庫業務のエンドツーエンドサイクルタイムの計算と、全体の処理量の測定に欠かせません。 入手先 Warehouse Orderヘッダーテーブルである/SCWM/WHOのステータスフィールド(STAT)が「Completed」に変更されたことを追跡して取得します。このテーブルの変更ログ(DBTABLOG)または専用のタイムスタンプフィールドを使用できます。 取得 /SCWM/WHOのステータスが「C」(Completed)に設定された時点のタイムスタンプを特定します。 イベントタイプ inferred | |||
| ピッキングタスクの確認 | 倉庫担当者がピッキング用Warehouse Taskの完了を確認します。これは、商品が保管場所から実際に取り出されたことを示します。通常はRFスキャナーで実行します。 | ||
| 重要な理由 これは注文処理における重要なマイルストーンであり、注文から出荷までのサイクルタイムに直接影響します。このアクティビティを分析すると、ピッカーの生産性を測定し、ピッキングのボトルネックを特定できます。 入手先 Warehouse Taskテーブルである/SCWM/WTの確認タイムスタンプ(フィールドCONFIRMED_AT)から取得します。タスクステータス(STAT)は「Confirmed」に更新されます。 取得 Warehouse Orderに関連付けられたピッキングタスクについて、/SCWM/WTテーブルの確認タイムスタンプを使用します。 イベントタイプ explicit | |||
| 出庫計上 | システム上で商品を倉庫在庫から正式に払い出す、物流上および財務上の最終工程です。法的な所有権が移転し、出荷が正式に完了したことを示します。 | ||
| 重要な理由 出庫フローの重要な終点であり、請求と在庫更新を開始します。定時出荷の測定と、出荷の積み込み・発送時間KPIに欠かせません。 入手先 Warehouse Orderに関連付けられたOutbound Deliveryドキュメントの計上から推定します。/SCDL/DB_PROCH_Oテーブルのドキュメントフローまたはステータスフィールド(例:DGI_STAT)を確認します。 取得 関連するOutbound DeliveryのGoods Issueステータスが「Completed」に設定された時点のタイムスタンプを特定します。 イベントタイプ explicit | |||
| 梱包完了 | このアクティビティは、出荷対象のすべての商品が荷役単位に梱包され、その荷役単位が閉鎖されてラベル付けされたことを示します。梱包済みの商品は、ステージングや積み込みなどの次の工程に進める状態です。 | ||
| 重要な理由 このマイルストーンで梱包段階が完了します。ステージングと出荷の前提となるため、ここでの遅延は全体のリードタイムと梱包・ステージングのリードタイムKPIに直接影響します。 入手先 荷役単位(HU)のステータスが「Closed」に設定された時点、またはWOに関連する最後の梱包用Warehouse Taskが確認された時点で取得できます。HUのステータス情報は/SCWM/HUHDRテーブルにあります。 取得 注文に関連する最終出荷用荷役単位が閉鎖または完了した時点のタイムスタンプを特定します。 イベントタイプ inferred | |||
| 棚入れタスクの確認 | 倉庫担当者が棚入れ用Warehouse Taskの完了を確認します。これは、商品が指定された保管ビンに実際に配置されたことを意味します。この確認により、在庫場所がリアルタイムで更新されます。 | ||
| 重要な理由 このアクティビティは入荷処理における重要なマイルストーンであり、在庫がピッキング可能になったことを確認します。ここでの遅延は、入荷から棚入れまでのサイクルタイムKPIに直接影響します。 入手先 Warehouse Taskテーブルである/SCWM/WTの確認タイムスタンプ(フィールドCONFIRMED_AT)から取得します。タスクステータス(STAT)も「Confirmed」に変わります。 取得 Warehouse Orderに関連付けられた棚入れタスクについて、/SCWM/WTテーブルの確認タイムスタンプを使用します。 イベントタイプ explicit | |||
| Warehouse Orderのキャンセル | すべてのタスクが完了する前にWarehouse Orderがキャンセルされ、以降の実行が停止します。在庫不足、顧客注文の変更、その他の例外によって発生する可能性があります。 | ||
| 重要な理由 失敗または例外の経路を示します。キャンセルの頻度と理由を分析すると、計画、在庫精度、注文管理における上流工程の問題を特定できます。 入手先 Warehouse Orderヘッダーテーブルである/SCWM/WHOのステータスフィールド(STAT)が「Canceled」に変更されたことを追跡して取得します。 取得 /SCWM/WHOのステータスがキャンセルを示す値に設定された時点のタイムスタンプを特定します。 イベントタイプ inferred | |||
| ステージングタスクの確認 | 倉庫担当者が、梱包ステーションまたは集約エリアから指定された出荷ステージングエリアへ、梱包済みの荷役単位を移動したことを確認します。商品は積み込み可能な位置に配置されます。 | ||
| 重要な理由 これは、庫内処理から出庫物流への移行を示します。ステージングの遅延は、積み込み場の混乱や運送会社の集荷時間の逸失につながる可能性があります。 入手先 ステージング移動用のプロセスタイプを持つWarehouse Task(/SCWM/WT)の確認タイムスタンプ(フィールドCONFIRMED_AT)から取得します。 取得 荷役単位または納品に関連するステージングWarehouse Taskの確認タイムスタンプを特定します。 イベントタイプ explicit | |||
| ピッキングタスクの作成 | システムは、出庫納品注文に対応するため、保管ビンから商品を取り出すWarehouse Task(WT)を生成します。これは、担当者が商品を取り出すためのシステム指示です。 | ||
| 重要な理由 出庫における実作業の開始点です。ピッキングタスクの作成から確認までの時間差は、ピッキング効率とリソースの可用性を分析するうえで重要です。 入手先 ピッキングを示すプロセスタイプが設定された、/SCWM/WTテーブル内の該当するWarehouse Taskの作成タイムスタンプ(フィールドCREATED_AT)から取得します。 取得 Warehouse Orderに関連付けられた、ピッキングのプロセスタイプを持つWarehouse Taskを抽出し、その作成タイムスタンプを使用します。 イベントタイプ explicit | |||
| 入荷計上 | 外部仕入先または生産工程から倉庫在庫への商品の正式な受け入れを示します。これは、在庫を財務上および在庫管理上計上し、棚入れなどの後続プロセスで利用可能にする重要な処理です。 | ||
| 重要な理由 これは入荷プロセスにおける重要なマイルストーンです。商品の到着からこの計上までの時間は、入荷エリアの滞留を示す可能性があり、在庫の利用可能性に影響します。 入手先 Warehouse Orderに関連付けられたInbound Deliveryドキュメントの計上から推定します。/SCDL/DB_PROCH_Iテーブルのドキュメントフローまたはステータスフィールド(例:DGRSTAT)を確認します。 取得 関連するInbound DeliveryのGoods Receiptステータスが「Completed」に設定された時点のタイムスタンプを特定します。 イベントタイプ inferred | |||
| 梱包開始 | ピッキングした商品をまとめ、出荷用コンテナまたは荷役単位に入れる梱包作業の開始を示します。多くの場合、梱包ワークセンターで最初に行われる工程です。 | ||
| 重要な理由 付加価値サービス段階の開始を示します。梱包にかかる時間を測定すると、ワークセンターのレイアウト、人員配置、資材を最適化できます。 入手先 このイベントは推定が必要になる場合があります。梱包ステーションで商品または荷役単位を最初にスキャンした時点から導出でき、通常はワークセンターまたは荷役単位のログに記録されます。/SCWM/PACKSPECなどのテーブルと関連する実行ログがデータソースになります。 取得 納品に関連する最初の梱包用Warehouse Task確認のタイムスタンプ、または最終出荷HUの作成時刻を使用します。 イベントタイプ inferred | |||
| 棚入れタスクの作成 | システムは、入荷した商品を入荷エリアから最終保管ビンへ移動するための具体的な指示であるWarehouse Task(WT)を生成します。このアクティビティは、棚入れ移動を実行できる状態になったことを示します。 | ||
| 重要な理由 タスクの作成から確認までの時間を追跡すると、倉庫担当者が棚入れ指示を受け取り、実行するまでにかかる時間が分かり、作業員や設備の不足を示す兆候を把握できます。 入手先 棚入れを示すプロセスタイプが設定された、/SCWM/WTテーブル内の該当するWarehouse Taskの作成タイムスタンプ(フィールドCREATED_AT)から取得します。 取得 Warehouse Orderに関連付けられた、棚入れのプロセスタイプを持つWarehouse Taskを抽出し、その作成タイムスタンプを使用します。 イベントタイプ explicit | |||
| 積み込み完了 | 出荷対象のすべての商品が輸送単位に実際に積み込まれたことを示します。出庫計上と車両の出発に先立つ前提条件です。 | ||
| 重要な理由 最終出荷前の重要なマイルストーンです。積み込み完了から出庫計上までの遅延は、運送会社の出発を妨げる書類上またはシステム上の問題を示す可能性があります。 入手先 関連するTransportation Unit(TU)またはOutbound Delivery Orderのステータスが「Loading Completed」に変更されたことから推定します。/SCWM/TUおよび/SCDL/DB_PROCH_Oテーブルのステータスが該当します。 取得 TUまたはDelivery Orderのステータスが積み込み完了を示す状態に更新された時点のタイムスタンプを取得します。 イベントタイプ inferred | |||
| 積み込み開始 | ステージングエリアからトラックまたは輸送単位へ商品を実際に積み込む作業の開始を示します。通常は、システム上のユーザー操作によって開始されます。 | ||
| 重要な理由 倉庫における最後の実作業の開始です。積み込み時間を分析すると、バースの利用効率と運送会社の滞留時間を最適化できます。 入手先 関連するTransportation Unit(TU)またはOutbound Delivery Orderのステータスが「Loading Started」に変更されたことから推定します。/SCWM/TU_STATUSテーブルを確認できます。 取得 TUまたはDelivery Orderのステータスが積み込み開始を示す状態に更新された時点のタイムスタンプを取得します。 イベントタイプ inferred | |||
抽出ガイド
ステップ
- 前提条件:CDSビューを特定または作成する:主なデータソースは、倉庫管理用の標準SAP S/4HANA CDSビューです。主要なビューは、オーダーレベルのイベント用の
I_WarehouseOrderと、タスクレベルのイベント用のI_WarehouseTaskです。関連する物流イベントには、I_OutboundDeliveryItem、I_InboundDeliveryItem、I_EWMTransportationUnitなどのビューも必要です。これらのビューがシステムで有効になっていることを確認してください。 - カスタムCDSビューを作成する:複数のソースのデータを1つのイベントログ形式にまとめるには、カスタムCDSビューを作成する必要があります。EclipseのABAP Development Tools(ADT)を使って、新しいData Definitionを作成してください。このカスタムビューでは
UNION ALLを使って複数ソースのレコードを統合します。各レコードは、個別の業務アクティビティを表します。 - イベントログの構造を定義する:カスタムCDSビューで、イベントログの列となるフィールドを定義します。
WarehouseOrder、ActivityName、EventTime、その他の必須・推奨属性を含める必要があります。これらのフィールドを基盤となる標準CDSビューからマッピングしてください。 - 倉庫オーダーのイベントをモデル化する:UNIONに最初の
SELECT文を追加します。I_WarehouseOrderから選択し、作成タイムスタンプを使って「倉庫オーダー作成」イベントを生成します。続けて、オーダーのステータスで絞り込み、適切な確認または変更のタイムスタンプを使って「倉庫オーダー完了」と「倉庫オーダーキャンセル」イベント用のSELECT文を追加します。 - 倉庫タスクのイベントをモデル化する:
I_WarehouseTaskからSELECT文を追加します。棚入れに関連する倉庫プロセスカテゴリで絞り込み、「棚入れタスク作成」と「棚入れタスク確認」イベントを生成します。同様に、それぞれのプロセスカテゴリに基づいて「ピッキングタスク作成」、「ピッキングタスク確認」、「ステージングタスク確認」イベントを作成し、作成タイムスタンプと確認タイムスタンプを使います。 - 入出庫イベントをモデル化する:出荷関連ビューを倉庫タスクに結合し、入出庫を記録します。「入荷計上」には
I_InboundDeliveryItemのActualGoodsMovementDateTimeを使います。「出庫計上」にはI_OutboundDeliveryItemの同じフィールドを使い、関連する倉庫オーダーまたはタスクに紐付けます。 - 積み込みと梱包のイベントをモデル化する:
I_EWMTransportationUnitから選択し、専用のタイムスタンプを使って「積み込み開始」と「積み込み完了」を記録します。複雑になりやすい梱包については、Handling Unitビューから選択する代替方法を使います。作成時刻を「梱包開始」、ステータス変更時刻を「梱包完了」として扱えます。この手順は、実際の梱包プロセスに応じて調整が必要になる場合があります。 - CDSビューを公開するアノテーションを追加する:カスタムCDSビュー定義に
@OData.publish: trueアノテーションを追加します。これにより、SAPがビューの構造に基づいてODataサービスを自動生成します。 - CDSビューとODataサービスを有効化する:ADTで新しいData Definitionを有効化します。次にSAP Gatewayハブシステムへ移動し、トランザクション
/IWFND/MAINT_SERVICEを使って新しく生成されたODataサービスを検索し、有効化します。これにより、REST APIエンドポイントからデータにアクセスできるようになります。 - データを抽出する:対象のデータプラットフォームまたはETLツールから、有効化したODataサービスのエンドポイントに接続します。
EventTimeで絞り込むなど、OData URIに直接フィルターを適用してデータ範囲を制限します(例:?$filter=EventTime ge datetime'2023-01-01T00:00:00')。 - プロセスマイニング用に整形する:抽出したデータを、CSVなどのフラットファイル形式で保存します。列見出しは、ProcessMindで必要な属性(
WarehouseOrder、ActivityName、EventTimeなど)と一致させてください。完成したファイルをプロセスマイニングツールにアップロードします。
設定
- カスタムCDSビュー:イベントデータを統合する専用CDSビュー(例:
Z_C_EWM_EVENTLOG_CDS)を作成する必要があります。抽出の中心となるオブジェクトです。 - ODataサービス:カスタムCDSビューから生成されたODataサービスを有効化する必要があります。サービス名は通常、
_CDSサフィックスを付けたCDSビュー名です。 - 日付範囲フィルタリング:OData APIを呼び出す際は、
EventTimeフィールドに日付フィルターを適用することが重要です。初回分析では、通常3~6か月分のデータを対象にします。フィルターを設定しないと、クエリがタイムアウトしたり、パフォーマンスに問題が生じたりする可能性があります。 - エンティティのフィルタリング:データ範囲をさらに限定するため、倉庫番号(
倉庫)、倉庫オーダータイプ(WarehouseOrderType)、特定の品目(MaterialNumber)などの属性にフィルターを適用することを検討してください。 - システム権限:CDSビューを作成するユーザーには、ADTでのSAP開発者アクセス権が必要です。OData APIを呼び出すユーザーまたはサービスアカウントには、基盤となる倉庫管理データにアクセスする権限が必要です。
a サンプルクエリ sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate ステップ
- SAP EWMデータベーススキーマへの直接読み取りアクセスが承認されていることを確認し、倉庫オーダーヘッダー、倉庫タスク、倉庫オーダーのステータス履歴、入荷・出荷計上、梱包、ステージング、積み込みを表す物理データベースオブジェクトを特定します。論理参照として
/SCWM/WHOと/SCWM/WTが出発点になることは一般的ですが、実際のオブジェクト、フィールド、ステータスコード、タイムスタンプの意味、データベーススキーマはシステムごとに確認してください。 - SAP EWMの技術担当者またはデータディクショナリから、確認済みのフィールドマッピングを入手します。倉庫オーダーID、倉庫オーダータイプ、ステータス、優先度、倉庫タスクID、タスクカテゴリまたはプロセスタイプ、品目、ユーザー、作成タイムスタンプ、確認タイムスタンプ、梱包タイムスタンプ、ステージングタイムスタンプ、積み込みタイムスタンプ、入荷タイムスタンプ、出荷タイムスタンプ、ソースシステム、最終更新タイムスタンプをマッピングします。フィールドが同じテーブルに存在することや、ステータスコードの意味が環境間で同じであることを前提にしないでください。
- 読み取り専用データベースアカウント、本番またはレポーティングスキーマ、抽出開始日、抽出終了日、ソースシステム名、組織固有のフィルターをパラメーター化した値で、抽出接続を設定します。日付フィルターは倉庫オーダーの作成タイムスタンプだけでなく、該当するイベントタイムスタンプに適用してください。これにより、オーダーのライフサイクル後半に発生したイベントが除外されるのを防げます。
- 明示的に必要なアクティビティごとに1行を選択し、イベント行を作成します。クエリでは各アクティビティについて確認済みのソースフィールドを使い、イベントの推測をProcessMindに任せないでください。アクティビティが現在のヘッダーフィールドではなく、ステータス履歴やアプリケーションログで表される場合は、その履歴またはログを使い、イベントタイムスタンプと実行ユーザーを保持します。
- すべてのアクティビティのタイムスタンプを、できればUTCなど1つのタイムゾーンに統一します。統一できない場合は、SAPアプリケーションサーバーのタイムゾーンを記録してください。ソース固有のステータスコードとプロセスコードを、イベントログで必要な正確なアクティビティ名に変換します:Warehouse Order Created、Goods Receipt Posted、Putaway Task Created、Putaway Task Confirmed、Picking Task Created、Picking Task Confirmed、Packing Started、Packing Completed、Staging Task Confirmed、Loading Started、Loading Completed、Goods Issue Posted、Warehouse Order Completed、Warehouse Order Canceled。
- すべての出力行に
WarehouseOrder、ActivityName、EventTime、SourceSystem、LastDataUpdateを含めます。信頼できる完了タイムスタンプがある場合は、EventEndTimeにも値を設定します。タスクレベルのイベントは、タスクを倉庫オーダーに関連付けます。1つの倉庫オーダーに複数の関連タスクが含まれる場合は、倉庫オーダーをケース識別子として保持しながら、タスクイベントごとに1行を残します。対象のインポート形式が対応している場合は、タスクIDやソースイベントIDなど、安定したタイブレーカーを使います。 - エクスポート前に結果を検証します。ソースデータに該当する業務イベントがある場合、14種類すべてのアクティビティ名が出現していること、タイムスタンプが要求範囲内にあること、倉庫オーダーが予期せず空欄になっていないことを確認します。重複行については、複数タスクやステータス変更の繰り返しで説明できるかを確認します。件数をSAPの業務レポートまたは別途承認された抽出結果と照合します。
- 結果を、ProcessMindに対応した区切りファイルまたはデータベース結果として、1行1イベントでエクスポートします。必要な列名を正確に保持し、ISO 8601など曖昧さのないタイムスタンプ形式を使います。区切り形式で必要な場合はテキスト値を引用し、ヘッダー行を含めてください。ファイルをアップロードするか、ProcessMindでデータベース接続を設定し、
WarehouseOrderをケース識別子、ActivityNameをアクティビティ、EventTimeを開始タイムスタンプ、利用可能な場合はEventEndTimeを終了タイムスタンプとして指定します。
設定
- ソースオブジェクトのマッピング:倉庫オーダー、倉庫タスク、ステータス履歴、入出庫、梱包、ステージング、積み込みに対応する物理データベースオブジェクトとフィールドを確認します。
/SCWM/WHOと/SCWM/WTが関連する論理オブジェクトである可能性はありますが、実装前に導入済みシステムでのデータベース上の表現を確認する必要があります。 - 日付範囲:まずは管理しやすい3~6か月の期間から始めます。初期テストではより短い期間を使い、照合後に範囲を広げてください。増分実行の間に短い重複期間を設け、後から計上されたデータや訂正を取り込めるようにします。
- イベントタイムスタンプの選択:作成アクティビティには作成タイムスタンプ、確認アクティビティには確認タイムスタンプ、入荷・出荷計上には計上タイムスタンプ、梱包・ステージング・積み込みには確認済みの実行タイムスタンプを使います。すべてのイベントに倉庫オーダーの作成時刻を代用しないでください。
- フィルター:倉庫番号、会社コード、伝票タイプ、倉庫オーダータイプ、アクティビティエリア、キュー、プラント、ソースシステムなど、確認済みの業務フィルターだけを適用します。会社コードや伝票タイプのフィールドは関連オブジェクトに存在する場合があるため、対象システムでマッピングする必要があります。
- ステータスマッピング:完了およびキャンセルされた倉庫オーダーを表すSAPの正確なステータスまたはプロセスコードを設定します。ステータスコードと保存場所はリリースや実装によって異なる場合があるため、EWM機能担当者とマッピングを検証してください。
- SourceSystem:EWMの本番またはレポーティングインスタンスを識別する安定した値を設定します。NULLになり得る業務フィールドから生成しないでください。
- LastDataUpdate:抽出時刻またはソースの更新時刻を設定し、1回の実行で生成されるすべての行に一貫して入力します。
- 増分抽出:最後に正常に抽出したソースタイムスタンプを基準に、保存済みのハイウォーターマークを使います。遅れて到着するレコードに備えて重複期間を設け、利用可能な場合は確認済みのソース識別子で重複を排除します。
- パフォーマンス:早い段階で日付範囲を制限し、必要な列だけを選択し、インデックス付きフィールドで絞り込みます。条件式でインデックス付きタイムスタンプ列に関数を適用することは避け、大量の範囲は日次または週次のバッチで処理します。許可されている場合はレポーティング用レプリカを使います。
- 結合戦略:倉庫オーダーと倉庫タスクのカーディナリティを確認します。タスク、ステータス、品目、Handling Unitのデータを結合する際に、意図しない行の増加を防いでください。結合前に適切なイベントレコードを集約または選択します。
- タイムゾーン:ソースのタイムゾーンと変換ルールを設定します。タイムスタンプを一貫した形式で保存し、夏時間の扱いを記録してください。
- 前提条件:読み取り専用データベース権限、EWMスキーマへの承認済みアクセス、確認済みのデータディクショナリマッピング、関連する業務データおよび履歴オブジェクトの読み取り権限、承認済みのProcessMindインポート設定が必要です。必要なSAPモジュール、ライセンス、権限は導入されているEWMアーキテクチャによって異なるため、システム所有者が確認してください。
a サンプルクエリ sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_time,
CAST('[End date and time]' AS TIMESTAMP) AS end_time,
CAST('[Source system name]' AS VARCHAR(255)) AS source_system,
CAST(CURRENT_TIMESTAMP AS TIMESTAMP) AS last_data_update
),
warehouse_orders AS (
SELECT
CAST(wo.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wo.[Warehouse order type field] AS VARCHAR(255)) AS WarehouseOrderType,
CAST(wo.[Warehouse order status field] AS VARCHAR(255)) AS WarehouseOrderStatus,
CAST(wo.[Priority field] AS VARCHAR(255)) AS Priority,
CAST(wo.[Warehouse order creation timestamp field] AS TIMESTAMP) AS WarehouseOrderCreatedTime,
CAST(wo.[Warehouse order completion timestamp field] AS TIMESTAMP) AS WarehouseOrderCompletedTime,
CAST(wo.[Warehouse order cancellation timestamp field] AS TIMESTAMP) AS WarehouseOrderCanceledTime,
CAST(wo.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wo.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse order header table] wo
),
warehouse_tasks AS (
SELECT
CAST(wt.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wt.[Warehouse task ID field] AS VARCHAR(255)) AS WarehouseTask,
CAST(wt.[Task category or process type field] AS VARCHAR(255)) AS TaskType,
CAST(wt.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wt.[Task creation timestamp field] AS TIMESTAMP) AS TaskCreatedTime,
CAST(wt.[Task confirmation timestamp field] AS TIMESTAMP) AS TaskConfirmedTime,
CAST(wt.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse task table] wt
),
events AS (
SELECT wo.WarehouseOrder, 'Warehouse Order Created' AS ActivityName, wo.WarehouseOrderCreatedTime AS EventTime, CAST(NULL AS TIMESTAMP) AS EventEndTime, wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo
UNION ALL
SELECT gr.[Warehouse order ID field], 'Goods Receipt Posted', CAST(gr.[Goods receipt posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gr.[Material number field] AS VARCHAR(255)), CAST(gr.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods receipt posting table] gr LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gr.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Started', CAST(pk.[Packing start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Completed', CAST(pk.[Packing completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT st.[Warehouse order ID field], 'Staging Task Confirmed', CAST(st.[Staging confirmation timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(st.[Material number field] AS VARCHAR(255)), CAST(st.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your staging event table] st LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(st.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Started', CAST(ld.[Loading start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Completed', CAST(ld.[Loading completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT gi.[Warehouse order ID field], 'Goods Issue Posted', CAST(gi.[Goods issue posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gi.[Material number field] AS VARCHAR(255)), CAST(gi.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods issue posting table] gi LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gi.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Completed', wo.WarehouseOrderCompletedTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCompletedTime IS NOT NULL
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Canceled', wo.WarehouseOrderCanceledTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCanceledTime IS NOT NULL
)
SELECT
e.WarehouseOrder,
e.ActivityName,
e.EventTime,
e.EventEndTime,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaterialNumber,
e.[User],
e.WarehouseOrderType,
e.WarehouseOrderStatus,
e.Priority
FROM events e
CROSS JOIN params p
WHERE e.WarehouseOrder IS NOT NULL
AND e.EventTime IS NOT NULL
AND e.EventTime >= p.start_time
AND e.EventTime < p.end_time
ORDER BY e.WarehouseOrder, e.EventTime, e.ActivityName; 始める準備はできていますか?
最適化された倉庫業務への取り組みを、今日から始めてください。このテンプレートを使って効率を高め、オーダー履行を迅速化できます。
ピッキングミスをなくし、今日から倉庫管理を最適化
数週間で在庫精度99.5%を達成し、履行遅延をなくします。
クレジットカードは不要です。数分で設定できます。