倉庫管理データテンプレート
倉庫管理データテンプレート
- 包括的な分析のための推奨属性
- プロセス全体で追跡すべき主要なアクティビティ
- SAP EWMからのデータ抽出ガイド
倉庫管理属性
| 名前 | 説明 | ||
|---|---|---|---|
| 倉庫オーダー WarehouseOrder | 資源によって実行される一連の倉庫タスクをグループ化する、倉庫オーダーの一意の識別子。 | ||
| 説明 倉庫オーダーは、倉庫内での商品取扱いのエンドツーエンドプロセスを追跡するための主要なケース識別子として機能します。これは、出庫のための品目ピッキングや入荷した商品の格納といった作業パッケージを表します。各倉庫オーダーには、1つ以上の倉庫タスクが含まれます。 プロセスマイニングにおいて、倉庫オーダーによって分析することで、特定の作業パッケージのライフサイクル全体を包括的に把握できます。これは、ボトルネックの特定、作成から完了までの全体サイクルタイムの測定、および単一の物流指示に関連する活動の完全な流れを理解するのに役立ちます。 その重要性 これは、関連するすべての倉庫活動を結びつけ、単一の作業単位のエンドツーエンドプロセス分析とサイクルタイム測定を可能にするコア識別子です。 取得元 この識別子は通常、SAP EWMの倉庫オーダーヘッダーテーブル(例:/SCWM/WHO)にあります。 例 200000145200000146200000147 | |||
| アクティビティ名 ActivityName | 発生した特定の倉庫管理活動またはイベントの名前(「Picking Task Created」や「Goods Issue Posted」など)。 | ||
| 説明 この属性は、倉庫管理プロセス内の単一のステップまたはイベントを記述します。これらの活動は、作成、確認、梱包、積載、商品移動などのタスクを表すプロセスマップの構成要素です。 これらの活動のシーケンスと頻度を分析することは、プロセスマイニングの基本です。プロセスフローを可視化し、一般的でまれなパスを特定し、標準手順からの逸脱を検出し、遅延や手直しを引き起こしている特定のステップを特定するのに役立ちます。 その重要性 プロセスのステップを定義し、プロセスマップの基礎を形成し、プロセスフロー、逸脱、ボトルネックの分析を可能にします。 取得元
例 ピッキングタスク確認済格納タスク作成入庫記帳済み倉庫オーダー完了済み | |||
| ソースシステム 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 | |||
| `品目コード` MaterialNumber | 倉庫タスクで取り扱われている製品または資材の一意の識別子。 | ||
| 説明 この属性は、移動、ピッキング、梱包、または受領されている資材を指定します。これは、製品特性に基づいて倉庫パフォーマンスをセグメント化し、分析するための重要なディメンションです。 資材番号ごとに分析することで、どの製品が最も格納時間が長いか、ピッキングエラーに最も頻繁に関与しているか、または品質検査を必要とするかといった疑問に答えるのに役立ちます。これは、「Goods Receipt & Putaway Performance」および「Quality Inspection Lead Time」ダッシュボードにとって不可欠です。 その重要性 製品ごとにプロセスデータをフィルタリングおよびセグメント化することが可能になり、取り扱い、保管、または品質管理における製品固有の問題を特定するために重要です。 取得元 この情報は通常、/SCWM/ORDIM_Oなどの倉庫タスクテーブルで利用可能であり、資材マスタデータにリンクされています。 例 FIN-1001RAW-2050SFIN-300-A | |||
| ユーザー`ID` User | 活動を確認または実行した倉庫作業員またはユーザーの識別子。 | ||
| 説明 この属性は、倉庫タスクの実行を担当する人物のユーザーIDを記録します。これは、ピッキングを確認したピッカー、梱包ステーションの梱包担当者、または格納を確認したフォークリフトオペレーターである可能性があります。 このデータは、「Resource & Equipment Utilization」ダッシュボードにとって極めて重要です。個人またはチームのパフォーマンス分析を可能にし、トレーニングの必要性を特定するのに役立ち、倉庫スタッフ全体で作業負荷をより効果的にバランスさせるために使用できます。 その重要性 作業を特定の人物に割り当てることで、ユーザーやチームごとのパフォーマンス分析を可能にし、リソース管理とワークロードバランシングをサポートします。 取得元 通常、倉庫タスクの確認データ(例えばテーブル /SCWM/ORDIM_C の UNAME フィールド)にあります。 例 JSMITHARODRIGUEZOPERATOR_05 | |||
| 倉庫オーダーステータス WarehouseOrderStatus | 倉庫オーダーの現在または最終ステータス(「完了」または「キャンセル」など)。 | ||
| 説明 この属性は、倉庫オーダーの最終的な結果を示します。オーダーが正常に完了したか、キャンセルされたかを理解することは、プロセス成功率を分析し、未完了の理由を特定するために非常に重要です。 これは多くの分析にとって主要なフィルターとなります。例えば、エンドツーエンドの倉庫サイクルタイムを計算する際、分析は通常、完了したオーダーのみに対して実行されます。また、キャンセルされたオーダーの頻度と原因を特定し、調査するのにも役立ちます。 その重要性 ケースの結果を示し、完了したオーダーとキャンセルされたオーダーをフィルタリングできるようにします。これは、正確なサイクルタイムとスループット分析にとって不可欠です。 取得元 ステータスフィールドは通常、倉庫オーダーヘッダーテーブル /SCWM/WHO にあります。 例 完了済み処理中キャンセル済み | |||
| 倉庫オーダータイプ WarehouseOrderType | 倉庫オーダーを、棚入れ、ピッキング、内部補充などの目的別に分類します。 | ||
| 説明 倉庫オーダータイプは、提供する物流機能に基づいてオーダーを分類します。異なる種類のオーダーは異なるプロセスパスをたどり、異なるパフォーマンス期待値を持つため、この区別は非常に重要です。 分析において、この属性はフィルタリングと比較のための主要なディメンションです。例えば、「Warehouse Order Throughput & Volume」ダッシュボードは、これに基づいて入荷(Putaway)プロセスと出庫(Picking)プロセスのパフォーマンスをセグメント化し、倉庫業務のより意味のあるビューを提供します。 その重要性 プロセスカテゴリ(例: 入庫対出庫)に基づいて分析をセグメント化することが可能になり、より関連性の高い比較と洞察を可能にします。 取得元 これは倉庫プロセスタイプによって決定され、多くの場合、倉庫オーダーヘッダーテーブル /SCWM/WHO にあります。 例 PICKPUTWREPLSTGE | |||
| 優先度 Priority | 倉庫オーダーに割り当てられた優先度レベル。その緊急度(例:高、中、低)を示します。 | ||
| 説明 この属性は、ビジネス上の重要性や緊急度に基づいて倉庫オーダーを分類します。例えば、高優先度オーダーは、速達出荷や重要な生産供給に関するものであり、迅速な処理を必要とします。 優先度は、「Priority Order Fulfillment Adherence」ダッシュボードとKPIにとって重要なディメンションです。最も重要なオーダーが期待されるタイムライン内で処理されていることを確認するためにパフォーマンスをフィルタリングおよびセグメント化することを可能にし、倉庫業務をビジネス目標と整合させます。 その重要性 優先度の高いオーダーがサービスレベルを満たしていることを保証するために、分析と監視を優先することが可能になり、顧客満足度に直接影響します。 取得元 優先順位は、元となる配送伝票に設定され、倉庫オーダーに転送されます。/SCWM/WHOのようなテーブルで確認できる場合があります。 例 高中低 | |||
| 処理時間 ProcessingTime | 特定のアクティビティに積極的に費やした時間の長さです。 | ||
| 説明 処理時間とは、活動の開始タイムスタンプと終了タイムスタンプの差として計算される、実際の実作業時間を測定するものです。これは、活動間の待機期間を含むサイクルタイムとは異なります。 この指標は、特に「Picking & Packing Efficiency」のようなダッシュボードにおいて、パフォーマンス分析の基礎となります。最も時間のかかる特定のタスクを特定するのに役立ち、管理者は処理時間が最も長い活動に改善努力を集中させることができ、それによって全体のスループットを向上させることができます。 その重要性 活動のアクティブな作業期間を測定し、最も時間のかかるタスクを特定し、リソース能力分析の基礎を形成するのに役立ちます。 取得元 これは、各活動のEventEndTimeからEventTimeを差し引くことで導出される算出指標です。 例 3009150 | |||
| 終了日時 EventEndTime | アクティビティまたはイベントが完了した時点を示すタイムスタンプ。 | ||
| 説明 この属性は、特定の倉庫活動が終了した日付と時刻を記録します。原子的なイベントの場合、開始時間と同じであることが多いですが、梱包や積載のように測定可能な期間を持つ活動では異なる場合があります。 明確な終了時間を持つことで、個々の活動の処理時間を正確に計算できます。これは、「Picking & Packing Efficiency」のような特定のステップの期間を分析するパフォーマンスダッシュボードにとって重要であり、どのタスクが最も時間を消費しているかを特定するのに役立ちます。 その重要性 個々の活動の期間を正確に計算することを可能にし、時間のかかるステップやリソースを大量に消費するタスクを特定するための鍵となります。 取得元 多くの場合、個別のイベントの開始タイムスタンプと同じです。長時間実行されるタスクの場合、 例 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| エンドツーエンドサイクルタイム EndToEndCycleTime | 倉庫オーダーの作成から最終完了までの総経過時間。 | ||
| 説明 このKPIは、倉庫オーダーのライフサイクル全体の期間を測定します。これは、倉庫業務全体の効率と速度を示す重要な高レベル指標です。 この指標は、「End-to-End Warehouse Cycle Time」ダッシュボードの基礎となります。このKPIを時間経過とともに追跡し、オーダータイプや資材などのディメンションでセグメント化することで、システム的な非効率性を特定し、プロセス改善イニシアチブが業務全体に与える影響を測定するのに役立ちます。 その重要性 これは、倉庫プロセスの全体的な効率を測定するための主要なKPIであり、運用パフォーマンスのハイレベルなビューを提供します。 取得元 ケースレベルで、最初のイベント(「倉庫オーダー作成」)のタイムスタンプから最後のイベント(「倉庫オーダー完了」)のタイムスタンプを引くことで計算されます。 例 8640017280043200 | |||
| 使用設備 EquipmentUsed | 倉庫タスクの実行に使用された、フォークリフトやパレットジャッキなどの設備の識別子。 | ||
| 説明 この属性は、倉庫タスクに割り当てられた、または使用されたマテハン機器を指定します。これは、特定のフォークリフト、自動搬送車(AGV)、または特定の種類のカートである可能性があります。 このデータは、「Resource & Equipment Utilization」ダッシュボードと「Equipment Utilization Rate」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 | 単一の倉庫タスクの一意の識別子であり、倉庫オーダーの構成要素です。 | ||
| 説明 倉庫タスクとは、品物を保管場所から梱包ステーションへ移動させるなど、特定の品目移動を実行するための指示です。倉庫オーダーは、これらのタスクを1つ以上グループ化します。 タスクレベルで分析することで、倉庫業務のより詳細な視点が得られます。これは、特定移動におけるリソースのパフォーマンスを理解したり、到達が困難な保管場所を特定したり、個々のピッキングや棚入れ作業の効率を分析したりするのに役立ちます。 その重要性 より詳細な分析レベルを提供し、より大きな倉庫オーダー内の個々の動きやステップを検証することを可能にします。 取得元
例 300000451300000452300000453 | |||
| 出庫予定時刻 PlannedDepartureTime | 出荷が倉庫から出発する予定時刻。 | ||
| 説明 この属性は、すべてのピッキング、梱包、積載活動が完了した後に出荷を発送するための目標時間を表します。これは、出庫プロセスの最終段階における定時パフォーマンスを測定するためのベンチマークとして機能します。 このタイムスタンプは、「Shipment Dispatch On-Time Performance」ダッシュボードにとって極めて重要です。実際の発送時間をこの計画時間と比較することで、分析は積載、運送会社との連携、または文書作成における遅延を特定し、物流および輸送計画の効率に関する洞察を提供できます。 その重要性 定時出荷パフォーマンスを測定するための基準を提供します。これは、物流計画と運送会社のスケジュール遵守にとって重要です。 取得元 この情報は通常、倉庫オーダーにリンクされた輸送または出荷伝票の一部です。SAP Extended Warehouse Managementのドキュメントを参照してください。 例 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| 完了要求日 RequestedCompletionDate | 高優先度倉庫オーダーが完了を要求される日付。 | ||
| 説明 この属性は、倉庫オーダーのサービスレベルアグリーメント(SLA)または目標完了日を定義します。これは、オーダーが定時で履行されたかどうかを判断するために、実際の完了時間が測定される期限です。 この日付は、「Priority Order Fulfillment Rate」KPIを計算するために不可欠です。実際の完了タイムスタンプをこの要求された日付と比較することで、分析はサービスレベルへの遵守を定量化し、遅延のリスクがあるオーダーや既に遅延しているオーダーを強調表示できます。 その重要性 オーダーのSLAを定義し、特に優先度の高い品目のオンタイムフルフィルメントパフォーマンスを測定するためのベンチマークとして機能します。 取得元 この日付は、多くの場合、倉庫オーダーをトリガーした出庫伝票オーダー上の計画出庫日または配送日から派生します。SAP Extended Warehouse Managementのドキュメントを参照してください。 例 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| 実際数量 ActualQuantity | 倉庫タスクについてユーザーによって確認された資材の実際の数量。 | ||
| 説明 この属性は、倉庫作業員によって物理的に処理され、確認された数量です。これは、ロケーションからピッキングされた量、格納された量、または入荷時に計数された量である可能性があります。 実数量と計画数量を比較することは、「Inventory Discrepancy Analysis」の基本です。両者の値の差異は、調査を要するプロセス例外を直接的に浮き彫りにします。これは運用精度の直接的な尺度であり、「Inventory Accuracy Rate」および「Picking Error Rate」KPIの主要な入力となります。 その重要性 これは、物理的に処理された内容の事実です。計画数量と比較することで、運用精度を直接測定し、エラーを特定できます。 取得元 倉庫タスク確認データ、例えばテーブル 例 10049250 | |||
| 数量差異 QuantityVariance | タスクの計画数量と実際に確認された数量との差。 | ||
| 説明 この算出指標は、倉庫タスク中に検出された差異を定量化します。ゼロ以外の値は、物理的な現実がシステム記録と一致しなかったことを示し、ピッキングエラー、受入ミス、または破損品目といった潜在的な問題を示唆します。 この属性は、「Inventory Discrepancy Analysis」ダッシュボードを直接サポートし、エラーの大きさを強調します。これらの差異の頻度と規模を分析することで、在庫管理と運用実行におけるシステム的な問題を特定するのに役立ち、精度向上のための取り組みを導きます。 その重要性 在庫および運用上の不正確さを直接定量化し、不一致の規模を簡単に特定・分析できるようにします。 取得元 各関連タスクについて、 例 0-15 | |||
| 期限内である IsOnTime | 倉庫オーダーが要求された完了日までに完了したかどうかを示すブール値フラグです。 | ||
| 説明 このフラグは、SLA遵守に関するシンプルで二進法的な結果を提供します。倉庫オーダーの最終完了イベントが、指定された完了要求日以前に発生したかどうかを評価します。 この属性は、「Priority Order Fulfillment Adherence」ダッシュボードにとって不可欠です。定時オーダーと遅延オーダーの容易なカウントとフィルタリングを可能にすることで、KPIと可視化の作成を簡素化します。これにより、分析レイヤーで複雑な日付計算を必要とせずに、サービスレベル目標に対するパフォーマンスを迅速に評価するのに役立ちます。 その重要性 各オーダーの定時または遅延履行を明確な二値指標で提供することで、SLAパフォーマンス分析を簡素化します。 取得元 これは算出属性です。ロジックは、「Warehouse Order Completed」活動のタイムスタンプを「RequestedCompletionDate」属性と比較します。 例 truefalse | |||
| 計画数量 PlannedQuantity | 特定の倉庫タスクにおける資材の予想数量。 | ||
| 説明 この属性は、倉庫タスク指示書に従って移動、ピッキング、または受領されるべき資材の目標数量を表します。これは、実際に実行された数量と比較される基準です。 計画数量は、「Inventory Discrepancy Analysis」ダッシュボードおよび「Inventory Accuracy Rate」KPIにとって不可欠です。実数量と比較することで、システムはピッキングエラー、受入ミス、またはデータ入力の問題を示唆する可能性のある差異を特定し、在庫精度の向上に貢献します。 その重要性 在庫精度を計算し、差異を特定するための基準として機能します。これは、正確な在庫レベルを維持するために不可欠です。 取得元 倉庫タスクデータ、例えばテーブル 例 10050250 | |||
倉庫管理活動
| アクティビティ | 説明 | ||
|---|---|---|---|
| `商品出荷`登録済み | これは、システムにおける最終的な物流および財務ステップであり、倉庫在庫から商品を正式に削除します。法的所有権が移転し、出荷が正式に出発したことを意味します。 | ||
| その重要性 出庫フローにおける重要な終点であり、請求と在庫更新をトリガーします。これは、オンタイム出荷と出荷積載・発送時間KPIを測定するための重要な要素です。 取得元 倉庫オーダーに関連する出庫配送伝票の転記から推測されます。 取得 関連する出庫配送の出庫ステータスが「完了」に設定されたときのタイムスタンプを特定します。 イベントタイプ explicit | |||
| ピッキングタスク確認済 | 倉庫作業員がピッキング倉庫タスクの完了を確認し、品物が保管場所から物理的に取り出されたことを示します。これは通常、RFスキャナーを介して行われます。 | ||
| その重要性 これは、受注処理における重要なマイルストーンであり、受注から出荷までのサイクルタイムに直接影響します。この活動を分析することで、ピッカーの生産性を測定し、ピッキングのボトルネックを特定するのに役立ちます。 取得元 倉庫タスクテーブル 取得 倉庫オーダーに関連するピッキングタスクには、/SCWM/WTテーブルの確認タイムスタンプを使用してください。 イベントタイプ explicit | |||
| 倉庫オーダー作成済み | この活動は、複数の倉庫タスクから構成される作業パッケージである倉庫オーダー(WO)の作成を示します。システムは、活動エリア、キュー、または製品といった基準に基づいて、倉庫従業員のための作業をまとめ、整理するためにWOを生成します。 | ||
| その重要性 これは、倉庫実行プロセスの主要な開始イベントです。作成から最初の行動までの時間を分析することで、作業割り当てや資源配分における遅延を特定するのに役立ちます。 取得元 このイベントは、倉庫オーダーヘッダーテーブル /SCWM/WHO の作成タイムスタンプ(CREATED_ATフィールド)から取得されます。 取得 各倉庫オーダー番号(WHO)について、 イベントタイプ explicit | |||
| 倉庫オーダー完了済み | 関連するすべての倉庫タスクが確認された後、倉庫オーダーステータスが「完了」に設定されます。これにより、実行の観点から作業パッケージが閉じられます。 | ||
| その重要性 これは、プロセスの主要な成功終了イベントです。エンドツーエンドの倉庫サイクルタイムを計算し、全体のスループットを測定するために不可欠です。 取得元 倉庫オーダーヘッダーテーブル 取得
イベントタイプ inferred | |||
| 格納タスク確認済 | 倉庫作業員が棚入れ倉庫タスクの完了を確認します。これは、品物が指定された保管場所に物理的に配置されたことを意味します。この確認により、在庫場所はリアルタイムで更新されます。 | ||
| その重要性 この活動は、入荷処理における重要なマイルストーンであり、ピッキング可能な在庫があることを確認します。ここでの遅延は、入荷から格納までのサイクルタイムKPIに直接影響します。 取得元 倉庫タスクテーブル 取得 倉庫オーダーに関連する格納タスクには、/SCWM/WTテーブルの確認タイムスタンプを使用してください。 イベントタイプ explicit | |||
| 梱包完了 | この活動は、出荷対象のすべての品目が荷役単位に梱包され、閉鎖およびラベル付けされたことを意味します。梱包された商品は、ステージングや積載などの次の段階に進む準備ができています。 | ||
| その重要性 このマイルストーンは、梱包段階の完了を示します。これはステージングと出荷の前提条件であるため、ここでの遅延は、全体的なリードタイムおよび梱包・ステージングリードタイムKPIに直接影響します。 取得元 ハンドリングユニット(HU)のステータスが「完了」に設定されたとき、またはWOの最後の梱包関連倉庫タスクが確認されたときに捕捉できます。 取得 オーダーに関連付けられた最終出荷ハンドリングユニットがクローズまたは完了したときのタイムスタンプを特定します。 イベントタイプ inferred | |||
| ステージングタスク確認済 | 倉庫作業員は、梱包されたハンドリングユニットが梱包ステーションまたは統合エリアから指定された出荷準備エリアへ移動したことを確認します。これにより、品物は積載準備が整った状態になります。 | ||
| その重要性 これは、内部処理から出庫物流への移行を示します。ステージングの遅延は、積み込みドックの混乱や運送会社の集荷時刻の逸失につながる可能性があります。 取得元 出荷準備移動用のプロセスタスクタイプを持つ倉庫タスク ( 取得 ハンドリングユニットまたは配送に関連する出荷準備倉庫タスクの確認タイムスタンプを特定します。 イベントタイプ explicit | |||
| ピッキングタスク作成済み | システムは、保管ロケーションから商品をピッキングして出庫伝票オーダーを履行するための倉庫タスク(WT)を生成します。これは、オペレーターが製品を回収するためのシステム指示を表します。 | ||
| その重要性 出庫物理プロセスの開始点です。ピッキングタスクの作成と確認の間の時間差は、ピッキング効率と資源の利用可能性を分析する上で非常に重要です。 取得元 テーブル 取得 倉庫オーダーにリンクされたピッキングプロセスタイプを持つ倉庫タスクをフィルタリングし、その作成タイムスタンプを使用します。 イベントタイプ explicit | |||
| 倉庫オーダーキャンセル済み | すべてのタスクが完了する前に倉庫オーダーがキャンセルされ、それ以上の実行が阻止される状況を表します。これは、在庫不足、顧客オーダーの変更、またはその他の例外により発生する可能性があります。 | ||
| その重要性 失敗または例外パスを表します。キャンセルの頻度と理由を分析することで、計画、在庫精度、またはオーダー管理における上位の問題を特定するのに役立ちます。 取得元 倉庫オーダーヘッダーテーブル 取得
イベントタイプ inferred | |||
| 入庫記帳済み | 外部ベンダーまたは生産からの品物が倉庫在庫に正式に受け入れられたことを示します。これは、在庫を可視化し、棚入れなどの後続プロセスで利用可能にするための重要な財務および在庫転記です。 | ||
| その重要性 これは入荷プロセスにおける重要なマイルストーンです。商品到着からこの計上までの時間は、荷受エリアでの滞留を示唆し、在庫の利用可能性に影響を与えます。 取得元 倉庫オーダーに関連する入庫配送伝票の転記から推測されます。 取得 関連する入庫配送の入庫ステータスが「完了」に設定されたときのタイムスタンプを特定します。 イベントタイプ inferred | |||
| 格納タスク作成 | システムは、入荷した商品を荷受エリアから最終保管ロケーションに移動するための特定の指示である倉庫タスク(WT)を生成します。この活動は、格納移動を実行するためのシステムの準備が整ったことを示します。 | ||
| その重要性 タスク作成から確認までの時間を追跡することで、格納指示が倉庫作業員によって取得・実行されるまでにかかる時間を明らかにできます。これにより、潜在的な人手不足や設備不足が浮き彫りになります。 取得元 テーブル 取得 倉庫オーダーにリンクされた棚入れプロセスタイプを持つ倉庫タスクをフィルタリングし、その作成タイムスタンプを使用します。 イベントタイプ explicit | |||
| 梱包開始 | ピッキングされた品目を集約し、輸送容器または荷役単位に入れる梱包活動の開始を表します。これは、梱包作業場での最初のステップとなることがよくあります。 | ||
| その重要性 付加価値サービス段階の始まりを示します。梱包期間を測定することで、ワークセンターのレイアウト、人員配置、および品目を最適化するのに役立ちます。 取得元 このイベントは推測が必要な場合があります。梱包ステーションでの品目または荷役単位の最初のスキャンから派生させることができ、多くの場合、作業区または荷役単位のログに記録されています。/SCWM/PACKSPECのようなテーブルや関連する実行ログが情報源となり得ます。 取得 配送に関する最初の梱包関連の倉庫タスク確認のタイムスタンプ、または最終出荷HUの作成時間を使用してください。 イベントタイプ inferred | |||
| 積載完了 | 出荷対象のすべての商品が輸送ユニットに物理的に積載されたことを意味します。これは、出庫の計上と車両の発送の前提条件となります。 | ||
| その重要性 最終出荷前の重要なマイルストーンです。積載完了から出庫までの遅延は、運送業者を拘束するドキュメントまたはシステムの問題を示している可能性があります。 取得元 関連する輸送ユニット(TU)または出庫配送オーダーのステータスが「積載完了」に変更されたことから推測されます。 取得 TUまたは配送オーダーのステータスが積載完了を反映するように更新されたときのタイムスタンプを捕捉します。 イベントタイプ inferred | |||
| 積載開始 | この活動は、ステージングエリアからトラックまたは輸送ユニットへの商品の物理的な積載の開始を示します。これは、多くの場合、システム内のユーザーアクションによって開始されます。 | ||
| その重要性 倉庫における最終的な物理ステップの開始です。積載期間を分析することで、ドックドアの利用率と運送会社のターンアラウンドタイムの最適化に役立ちます。 取得元 関連する輸送ユニット(TU)または出庫配送オーダーのステータスが「積載開始」に変更されたことから推測されます。 取得 TUまたは配送オーダーのステータスが積載開始を反映するように更新されたときのタイムスタンプを捕捉します。 イベントタイプ inferred | |||
抽出ガイド
ステップ
- 前提条件: CDSビューの特定または作成: 主要なデータソースは、倉庫管理のための標準SAP S/4HANA CDSビューです。キーとなるビューは、オーダーレベルのイベント用の
I_WarehouseOrderと、タスクレベルのイベント用のI_WarehouseTaskです。関連するロジスティクスイベントには、I_OutboundDeliveryItem、I_InboundDeliveryItem、I_EWMTransportationUnitなどの他のビューが必要です。これらのビューがシステムで有効になっていることを確認してください。 - カスタムCDSビューの作成: 複数のソースからのデータを単一のイベントログ形式に結合するには、カスタムCDSビューを作成する必要があります。EclipseのABAP Development Tools (ADT) を使用して、新しいデータ定義を作成します。このカスタムビューは、
UNION ALLを使用して、それぞれが異なるビジネス活動を表す異なるソースからのレコードをマージします。 - イベントログ構造の定義: カスタムCDSビューで、イベントログの列となるフィールドを定義します。これには、
WarehouseOrder、ActivityName、EventTime、およびその他の必須・推奨属性を含める必要があります。これらのフィールドを基盤となる標準CDSビューからマッピングします。 - 倉庫オーダーイベントのモデリング: ユニオンに最初の
SELECTステートメントを追加します。I_WarehouseOrderから選択して、作成タイムスタンプを使用して「倉庫オーダー作成」イベントを生成します。その後、オーダーのステータスでフィルタリングし、適切な確認または変更タイムスタンプを使用して、「倉庫オーダー完了」および「倉庫オーダーキャンセル」イベントのSELECTステートメントを追加します。 - 倉庫タスクイベントのモデリング:
I_WarehouseTaskからSELECTステートメントを追加します。棚入れに関連する倉庫プロセスカテゴリでフィルタリングして、「棚入れタスク作成」および「棚入れタスク確認」イベントを生成します。同様に、それぞれのプロセスカテゴリに基づいて「ピッキングタスク作成」、「ピッキングタスク確認」、および「出荷準備タスク確認」イベントを作成し、作成および確認タイムスタンプを使用します。 - 品目移動イベントのモデリング: 配送関連ビューを倉庫タスクに結合し、品目移動を捕捉します。「入庫転記」については、
I_InboundDeliveryItemからActualGoodsMovementDateTimeを使用して選択します。「出庫転記」については、関連する倉庫オーダーまたはタスクにリンクして、I_OutboundDeliveryItemから同じフィールドを使用します。 - 積載および梱包イベントのモデリング:
I_EWMTransportationUnitから選択して、専用のタイムスタンプを使用して「積載開始」および「積載完了」イベントを捕捉します。複雑になる可能性のある梱包については、ハンドリングユニットビューから選択することでプロキシを使用し、作成時間を「梱包開始」、ステータス変更時間を「梱包完了」として表すことができます。このステップは、お客様の特定の梱包プロセスに基づいて調整が必要になる場合があります。 - CDSビューを公開するためのアノテーションの追加: カスタムCDSビュー定義に
@OData.publish: trueアノテーションを追加します。これにより、SAPはビューの構造に基づいてODataサービスを自動的に生成するように指示されます。 - CDSビューとODataサービスの有効化: ADTで新しいデータ定義を有効化します。その後、SAP Gatewayハブシステムに移動し、トランザクション
/IWFND/MAINT_SERVICEを使用して、新しく生成されたODataサービスを検索して有効化します。これにより、REST APIエンドポイント経由でデータにアクセスできるようになります。 - データの抽出: ターゲットのデータプラットフォームまたはETLツールを使用して、有効化されたODataサービスエンドポイントに接続します。
EventTimeでフィルタリングしてデータ範囲を制限するなど、OData URIで直接フィルターを適用します (例:?$filter=EventTime ge datetime'2023-01-01T00:00:00')。 - プロセスマイニング用のフォーマット: 抽出されたデータが、
ProcessMind(WarehouseOrder、ActivityName、EventTimeなど) の必須属性と一致する列ヘッダーを持つCSVなどのフラットファイル形式で保存されていることを確認してください。最終ファイルをプロセスマイニングツールにアップロードします。
設定
- カスタムCDSビュー: 例えば
Z_C_EWM_EVENTLOG_CDSのような専用のCDSビューを作成し、イベントデータを統合する必要があります。これはデータ抽出の中心となるオブジェクトです。 - ODataサービス: カスタムCDSビューから生成されたODataサービスを有効化する必要があります。サービス名は通常、CDSビュー名に
_CDSサフィックスを付けたものになります。 - 日付範囲フィルタリング: OData APIを呼び出す際、
EventTimeフィールドに日付フィルターを適用することが非常に重要です。初期分析では、通常3~6ヶ月分のデータを対象とします。フィルターがない場合、クエリがタイムアウトしたり、パフォーマンスの問題を引き起こす可能性があります。 - エンティティフィルタリング: データ範囲をさらに限定するには、倉庫番号 (
Warehouse)、倉庫オーダータイプ (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 ステップ
- 前提条件: CDSビューの特定または作成: 主要なデータソースは、倉庫管理のための標準SAP S/4HANA CDSビューです。キーとなるビューは、オーダーレベルのイベント用の
I_WarehouseOrderと、タスクレベルのイベント用のI_WarehouseTaskです。関連するロジスティクスイベントには、I_OutboundDeliveryItem、I_InboundDeliveryItem、I_EWMTransportationUnitなどの他のビューが必要です。これらのビューがシステムで有効になっていることを確認してください。 - カスタムCDSビューの作成: 複数のソースからのデータを単一のイベントログ形式に結合するには、カスタムCDSビューを作成する必要があります。EclipseのABAP Development Tools (ADT) を使用して、新しいデータ定義を作成します。このカスタムビューは、
UNION ALLを使用して、それぞれが異なるビジネス活動を表す異なるソースからのレコードをマージします。 - イベントログ構造の定義: カスタムCDSビューで、イベントログの列となるフィールドを定義します。これには、
WarehouseOrder、ActivityName、EventTime、およびその他の必須・推奨属性を含める必要があります。これらのフィールドを基盤となる標準CDSビューからマッピングします。 - 倉庫オーダーイベントのモデリング: ユニオンに最初の
SELECTステートメントを追加します。I_WarehouseOrderから選択して、作成タイムスタンプを使用して「倉庫オーダー作成」イベントを生成します。その後、オーダーのステータスでフィルタリングし、適切な確認または変更タイムスタンプを使用して、「倉庫オーダー完了」および「倉庫オーダーキャンセル」イベントのSELECTステートメントを追加します。 - 倉庫タスクイベントのモデリング:
I_WarehouseTaskからSELECTステートメントを追加します。棚入れに関連する倉庫プロセスカテゴリでフィルタリングして、「棚入れタスク作成」および「棚入れタスク確認」イベントを生成します。同様に、それぞれのプロセスカテゴリに基づいて「ピッキングタスク作成」、「ピッキングタスク確認」、および「出荷準備タスク確認」イベントを作成し、作成および確認タイムスタンプを使用します。 - 品目移動イベントのモデリング: 配送関連ビューを倉庫タスクに結合し、品目移動を捕捉します。「入庫転記」については、
I_InboundDeliveryItemからActualGoodsMovementDateTimeを使用して選択します。「出庫転記」については、関連する倉庫オーダーまたはタスクにリンクして、I_OutboundDeliveryItemから同じフィールドを使用します。 - 積載および梱包イベントのモデリング:
I_EWMTransportationUnitから選択して、専用のタイムスタンプを使用して「積載開始」および「積載完了」イベントを捕捉します。複雑になる可能性のある梱包については、ハンドリングユニットビューから選択することでプロキシを使用し、作成時間を「梱包開始」、ステータス変更時間を「梱包完了」として表すことができます。このステップは、お客様の特定の梱包プロセスに基づいて調整が必要になる場合があります。 - CDSビューを公開するためのアノテーションの追加: カスタムCDSビュー定義に
@OData.publish: trueアノテーションを追加します。これにより、SAPはビューの構造に基づいてODataサービスを自動的に生成するように指示されます。 - CDSビューとODataサービスの有効化: ADTで新しいデータ定義を有効化します。その後、SAP Gatewayハブシステムに移動し、トランザクション
/IWFND/MAINT_SERVICEを使用して、新しく生成されたODataサービスを検索して有効化します。これにより、REST APIエンドポイント経由でデータにアクセスできるようになります。 - データの抽出: ターゲットのデータプラットフォームまたはETLツールを使用して、有効化されたODataサービスエンドポイントに接続します。
EventTimeでフィルタリングしてデータ範囲を制限するなど、OData URIで直接フィルターを適用します (例:?$filter=EventTime ge datetime'2023-01-01T00:00:00')。 - プロセスマイニング用のフォーマット: 抽出されたデータが、
ProcessMind(WarehouseOrder、ActivityName、EventTimeなど) の必須属性と一致する列ヘッダーを持つCSVなどのフラットファイル形式で保存されていることを確認してください。最終ファイルをプロセスマイニングツールにアップロードします。
設定
- カスタムCDSビュー: 例えば
Z_C_EWM_EVENTLOG_CDSのような専用のCDSビューを作成し、イベントデータを統合する必要があります。これはデータ抽出の中心となるオブジェクトです。 - ODataサービス: カスタムCDSビューから生成されたODataサービスを有効化する必要があります。サービス名は通常、CDSビュー名に
_CDSサフィックスを付けたものになります。 - 日付範囲フィルタリング: OData APIを呼び出す際、
EventTimeフィールドに日付フィルターを適用することが非常に重要です。初期分析では、通常3~6ヶ月分のデータを対象とします。フィルターがない場合、クエリがタイムアウトしたり、パフォーマンスの問題を引き起こす可能性があります。 - エンティティフィルタリング: データ範囲をさらに限定するには、倉庫番号 (
Warehouse)、倉庫オーダータイプ (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