倉庫管理データテンプレート
倉庫管理データテンプレート
- 詳細な分析に推奨される属性
- プロセス全体で追跡する主要なアクティビティ
- SAP EWMからデータを抽出する手順
倉庫管理の属性
| 名前 | 説明 | ||
|---|---|---|---|
| 倉庫オーダー WarehouseOrder | リソースが実行する一連の倉庫タスクをまとめる、倉庫オーダーの一意の識別子です。 | ||
| 説明 倉庫オーダーは、倉庫内で商品を取り扱うエンドツーエンドのプロセスを追跡するための主要なケース識別子です。出荷品のピッキングや入荷品の棚入れなど、作業単位を表します。各倉庫オーダーには、1つ以上の倉庫タスクが含まれます。 プロセスマイニングで倉庫オーダー単位に分析すると、特定の作業単位のライフサイクル全体を把握できます。ボトルネックの特定、作成から完了までのサイクルタイムの測定、1つの物流指示に関連するアクティビティ全体の流れの把握に役立ちます。 重要な理由 関連する倉庫アクティビティをすべて結び付ける中核的な識別子です。これにより、1つの作業単位を対象としたエンドツーエンドのプロセス分析とサイクルタイムの測定が可能になります。 入手先 通常は、/SCWM/WHOなどのSAP EWM倉庫オーダーヘッダーテーブルにあります。 例 200000145200000146200000147 | |||
| アクティビティ名 ActivityName | 「ピッキングタスクの作成」や「出庫計上」など、倉庫管理で発生した具体的なアクティビティまたはイベントの名前です。 | ||
| 説明 この属性は、倉庫管理プロセスにおける個々のステップまたはイベントを表します。アクティビティはプロセスマップを構成する要素であり、作成、確認、梱包、積み込み、商品の移動などのタスクを示します。 アクティビティの順序や頻度の分析は、プロセスマイニングの基本です。プロセスフローの可視化、一般的な経路とまれな経路の特定、標準手順からの逸脱の検出、遅延や手戻りの原因となる工程の特定に役立ちます。 重要な理由 プロセスの各ステップを定義し、プロセスマップの基礎となります。プロセスフロー、逸脱、ボトルネックの分析にも利用できます。 入手先 ステータスの変更、イベントメッセージ、または倉庫オーダーやタスクに関連するトランザクションログから導出します。たとえば、/SCWM/ORDIM_C(確認)などのテーブルや、/SCWM/WHOおよび/SCWM/ORDIM_Oのステータスフィールドを解釈して取得します。 例 ピッキングタスクの確認棚入れタスクの作成入庫計上倉庫オーダーの完了 | |||
| ソースシステム 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 | |||
| ユーザーID User | アクティビティを実行または確認した倉庫担当者やユーザーの識別子です。 | ||
| 説明 この属性には、倉庫タスクを実行した担当者のユーザーIDが記録されます。ピッキングを確認した担当者、梱包ステーションの梱包担当者、棚入れを確認したフォークリフト運転者などが該当します。 このデータは「リソース・設備稼働率」ダッシュボードに欠かせません。個人やチームのパフォーマンス分析、研修ニーズの特定、倉庫スタッフ間の業務負荷の調整に役立ちます。 重要な理由 作業を特定の担当者にひも付けることで、ユーザーやチームごとのパフォーマンスを分析できます。リソース管理や業務負荷の調整にも役立ちます。 入手先 通常は、倉庫タスクの確認データにあります。たとえば、/SCWM/ORDIM_CテーブルのフィールドUNAMEです。 例 JSMITHARODRIGUEZOPERATOR_05 | |||
| 倉庫オーダーステータス WarehouseOrderStatus | 「完了」や「キャンセル」など、倉庫オーダーの現在または最終のステータスです。 | ||
| 説明 この属性は、倉庫オーダーの最終結果を示します。オーダーが正常に完了したか、キャンセルされたかを把握することで、プロセスの成功率を分析し、未完了の理由を特定できます。 多くの分析で重要なフィルターとして使われます。たとえば、倉庫のエンドツーエンドサイクルタイムを計算する際は、通常、完了したオーダーのみを対象にします。また、キャンセルされたオーダーの頻度や原因を調査する際にも役立ちます。 重要な理由 ケースの結果を示します。完了したオーダーとキャンセルされたオーダーを区別して絞り込めるため、サイクルタイムや処理量を正確に分析できます。 入手先 ステータスフィールドは通常、倉庫オーダーヘッダーテーブル(/SCWM/WHO)にあります。 例 完了処理中キャンセル | |||
| 倉庫オーダー種別 WarehouseOrderType | 棚入れ、ピッキング、内部補充など、目的に応じて倉庫オーダーを分類します。 | ||
| 説明 倉庫オーダー種別は、物流上の役割に応じてオーダーを分類します。種別によってプロセスの経路や求められるパフォーマンスが異なるため、この区別は重要です。 分析では、絞り込みや比較に使う主要な切り口になります。たとえば、「倉庫オーダーの処理量・件数」ダッシュボードでは、この属性を使って入庫(棚入れ)と出庫(ピッキング)のパフォーマンスを分けて表示し、倉庫業務をより適切に把握できます。 重要な理由 入庫と出庫など、プロセスの分類ごとに分析を分けられます。比較の関連性が高まり、インサイトを得やすくなります。 入手先 倉庫プロセス種別に基づいて決まり、通常は倉庫オーダーヘッダーテーブル/SCWM/WHOにあります。 例 ピッキング棚入れ補充保管 | |||
| 優先度 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の文書をご確認ください。 例 フォークリフト07AGV-02台車15 | |||
| 保管場所 StorageLocation | 商品を移動する先または移動元となる、保管棚などの倉庫内の具体的な場所です。 | ||
| 説明 この属性は、倉庫タスクに関係する物理的な場所を示します。たとえば、ピッキング元の棚や棚入れ先の棚が該当します。大まかなエリアから具体的な棚の位置まで指定できます。 保管場所ごとに分析すると、ピッキング率の高い「ゴールデンゾーン」や、遅延やエラーが頻発する問題エリアなど、業務に関するインサイトが得られます。また、「ピッキングルート遵守状況」の分析に使い、倉庫内での作業者の移動を把握することもできます。 重要な理由 倉庫内の位置情報を示し、移動効率、棚へのアクセスのしやすさ、ピッキングルートの最適化を分析できます。 入手先 通常、/SCWM/ORDIM_Oなどの倉庫タスクテーブルにあり、移動元(VLPLA)と移動先(NLPLA)の棚情報が含まれます。 例 01-02-03梱包ステーション01出庫ゾーンA | |||
| 倉庫タスク WarehouseTask | 倉庫オーダーを構成する個々の倉庫タスクの一意の識別子です。 | ||
| 説明 倉庫タスクは、商品を保管棚から梱包ステーションへ移動するなど、特定の商品の移動を実行するための指示です。倉庫オーダーには、1つ以上の倉庫タスクがまとめられます。 タスク単位で分析すると、倉庫業務をより細かく把握できます。特定の移動におけるリソースのパフォーマンス、アクセスしにくい保管棚、個々のピッキングや棚入れアクティビティの効率を分析できます。 重要な理由 倉庫オーダー全体の中から個々の移動やステップを調べられるため、分析をより細かい粒度で行えます。 入手先 /SCWM/ORDIM_O(タスクデータ)や/SCWM/ORDIM_C(確認データ)などの倉庫タスクテーブルにあります。 例 300000451300000452300000453 | |||
| 実績数量 ActualQuantity | 倉庫タスクについて、ユーザーが確認した品目の実際の数量です。 | ||
| 説明 この属性は、倉庫作業者が実際に取り扱い、確認した数量を示します。棚からピッキングした数量、棚入れした数量、入庫時に数えた数量などが該当します。 実績数量と計画数量の比較は、「在庫差異分析」の基本です。両者の差異は、調査が必要なプロセス上の例外を直接示します。これは業務の正確性を測る指標であり、「在庫精度率」や「ピッキングエラー率」のKPIにも使われます。 重要な理由 実際に取り扱われた数量を示す値です。計画数量と比較することで、業務の正確性を測り、エラーを特定できます。 入手先 倉庫タスクの確認データにあり、たとえば/SCWM/ORDIM_CテーブルのNDIFF(差異数量)などのフィールドに格納されるか、確認済み数量から算出されます。 例 10049250 | |||
| 希望完了日 RequestedCompletionDate | 優先度の高い倉庫オーダーについて、完了希望日を示します。 | ||
| 説明 この属性は、倉庫オーダーのサービスレベル合意(SLA)または目標完了日を定義します。実際の完了時刻と比較し、オーダーが期限内に処理されたかを判定する期限です。 この日付は「優先オーダー処理率」KPIの計算に欠かせません。実際の完了時刻と希望完了日を比較することで、サービス水準の遵守状況を数値化し、遅延のリスクがあるオーダーや、すでに遅れているオーダーを特定できます。 重要な理由 オーダーのSLAを定義し、期限内の処理状況を測る基準となります。特に優先度の高い品目の評価に役立ちます。 入手先 この日付は、倉庫オーダーの起点となった出庫納品オーダーの計画出庫日または納品日から算出されることがよくあります。SAP Extended Warehouse Managementの文書をご確認ください。 例 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| 数量差異 QuantityVariance | タスクの計画数量と実際に確認された数量との差です。 | ||
| 説明 この計算指標は、倉庫タスクで発生した差異を数値化します。値が0でない場合、実際の数量とシステム上の記録が一致していないことを示します。ピッキングミス、入庫ミス、商品の破損などが原因として考えられます。 この属性は、エラーの大きさを示し、「在庫差異分析」ダッシュボードを支えます。差異の発生頻度や大きさを分析することで、在庫管理や業務遂行における構造的な問題を特定し、精度向上に向けた取り組みにつなげられます。 重要な理由 在庫や業務の不正確さを直接数値化し、差異の大きさを把握・分析しやすくします。 入手先 対象となる各タスクについて、実績数量から計画数量を差し引いて算出します。 例 0-15 | |||
| 期限内完了 IsOnTime | 倉庫オーダーが希望完了日までに完了したかを示す真偽値です。 | ||
| 説明 このフラグは、SLAの遵守状況をシンプルな二値で示します。倉庫オーダーの最終完了イベントが、指定された希望完了日までに発生したかを判定します。 この属性は「優先オーダーの処理遵守状況」ダッシュボードに欠かせません。期限内に完了したオーダーと遅延したオーダーを簡単に集計・絞り込みできるため、KPIやビジュアライゼーションを作成しやすくなります。分析レイヤーで複雑な日付計算を行わずに、サービス水準に対するパフォーマンスをすばやく評価できます。 重要な理由 各オーダーが期限内に処理されたか、遅延したかを明確な二値で示し、SLAパフォーマンスの分析を簡単にします。 入手先 計算属性です。「倉庫オーダー完了」アクティビティのタイムスタンプと「RequestedCompletionDate」属性を比較します。 例 truefalse | |||
| 計画出発時刻 PlannedDepartureTime | 出荷が倉庫を出発する予定時刻です。 | ||
| 説明 この属性は、ピッキング、梱包、積み込みがすべて完了した後に出荷する目標時刻を示します。出庫プロセスの最終段階が予定どおりに進んだかを測る基準です。 この時刻は「出荷の定刻発送状況」ダッシュボードで重要です。実際の発送時刻と計画時刻を比較することで、積み込み、運送業者との調整、文書化における遅延を特定し、物流や輸送計画の効率を把握できます。 重要な理由 定刻発送の状況を測るベースラインとなり、物流計画や運送業者のスケジュール遵守に役立ちます。 入手先 通常、この情報は倉庫オーダーに関連付けられた輸送文書または出荷文書に含まれます。SAP Extended Warehouse Managementの文書をご確認ください。 例 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| 計画数量 PlannedQuantity | 倉庫タスクで指定された品目の予定数量です。 | ||
| 説明 この属性は、倉庫タスクの指示に従って移動、ピッキング、または受領する品目の目標数量を示します。実際に処理された数量と比較するためのベースラインです。 計画数量は、「在庫差異分析」ダッシュボードと「在庫精度率」KPIに欠かせません。実績数量と比較することで、ピッキングミス、入庫ミス、データ入力の問題などにつながる差異を特定し、在庫精度の向上に役立てられます。 重要な理由 在庫精度の計算や差異の特定に使うベースラインです。正確な在庫水準を維持するうえで重要です。 入手先 倉庫タスクのデータにあり、たとえば/SCWM/ORDIM_OテーブルのNISTA(目標数量)などのフィールドに格納されています。 例 10050250 | |||
倉庫管理のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| ピッキングタスクの確認 | 倉庫担当者がピッキング倉庫タスクの完了を確認し、商品を保管場所から実際に取り出したことを示します。通常はRFスキャナーを使って確認します。 | ||
| 重要な理由 オーダー処理における重要な節目であり、オーダーから出荷までのサイクルタイムに直接影響します。このアクティビティを分析すると、ピッキング担当者の生産性を測定し、ピッキングのボトルネックを特定できます。 入手先 倉庫タスクテーブル/SCWM/WTの確認タイムスタンプ(フィールドCONFIRMED_AT)から取得します。タスクのステータス(STAT)は「確認済み」に更新されます。 記録 倉庫オーダーに関連するピッキングタスクについて、/SCWM/WTテーブルの確認タイムスタンプを使用します。 イベントタイプ explicit | |||
| 倉庫オーダーの作成 | このアクティビティは、複数の倉庫タスクで構成される作業単位である倉庫オーダー(WO)の作成を示します。システムは、作業エリア、キュー、製品などの条件に基づいてWOを作成し、倉庫担当者の作業をまとめて整理します。 | ||
| 重要な理由 倉庫実行プロセスの主要な開始イベントです。作成から最初の作業までの時間を分析すると、作業の割り当てやリソース配分の遅れを特定できます。 入手先 このイベントは、倉庫オーダーヘッダーテーブル/SCWM/WHOの作成タイムスタンプ(フィールドCREATED_AT)から取得します。 記録 倉庫オーダー番号(WHO)ごとに、/SCWM/WHOテーブルから作成タイムスタンプを抽出します。 イベントタイプ explicit | |||
| 倉庫オーダーの完了 | 関連するすべての倉庫タスクが確認されると、倉庫オーダーのステータスが「完了」になります。これにより、実行上の作業単位が終了します。 | ||
| 重要な理由 プロセスの主要な正常終了イベントです。倉庫のエンドツーエンドのサイクルタイムを算出し、全体の処理量を測定するうえで欠かせません。 入手先 倉庫オーダーヘッダーテーブル/SCWM/WHOのステータスフィールド(STAT)が「完了」に変わったことを追跡して取得します。テーブルの変更ログ(DBTABLOG)または専用のタイムスタンプフィールドを使用できます。 記録 /SCWM/WHOのステータスが「C」(完了)になった時刻を特定します。 イベントタイプ inferred | |||
| 出庫計上 | システム上で倉庫在庫から商品を正式に払い出す、物流・財務上の最終工程です。所有権が移転し、出荷が正式に完了したことを示します。 | ||
| 重要な理由 出庫フローの重要な終点であり、請求と在庫更新の契機になります。納期どおりの出荷や、積み込み・出荷時間KPIの測定にも欠かせません。 入手先 倉庫オーダーに関連付けられた出荷伝票の計上から推定します。/SCDL/DB_PROCH_Oテーブルの伝票フローまたはステータスフィールド(例:DGI_STAT)を確認してください。 記録 関連する出荷の出庫ステータスが「完了」になった時刻を特定します。 イベントタイプ explicit | |||
| 梱包の完了 | 出荷するすべての商品が荷役単位に梱包され、その荷役単位が閉じられてラベル付けされたことを示します。梱包済みの商品は、ステージングや積み込みなどの次の工程に進める状態です。 | ||
| 重要な理由 梱包工程の完了を示す節目です。ステージングと出荷に進むための前提となるため、ここでの遅延は全体のリードタイムと梱包・ステージングのリードタイムKPIに直接影響します。 入手先 荷役単位(HU)のステータスが「クローズ」になった時点、またはWOに関連する最後の梱包倉庫タスクが確認された時点で取得できます。/SCWM/HUHDRテーブルにHUのステータス情報があります。 記録 オーダーに関連する最終出荷用荷役単位がクローズまたは完了した時刻を特定します。 イベントタイプ inferred | |||
| 棚入れタスクの確認 | 倉庫担当者が棚入れ倉庫タスクの完了を確認し、商品が指定された保管棚に実際に置かれたことを示します。この確認により、在庫の保管場所がリアルタイムで更新されます。 | ||
| 重要な理由 入庫処理における重要な節目であり、在庫がピッキング可能になったことを示します。ここでの遅延は、入庫から棚入れまでのサイクルタイムKPIに直接影響します。 入手先 倉庫タスクテーブル/SCWM/WTの確認タイムスタンプ(フィールドCONFIRMED_AT)から取得します。タスクのステータス(STAT)も「確認済み」に変わります。 記録 倉庫オーダーに関連する棚入れタスクについて、/SCWM/WTテーブルの確認タイムスタンプを使用します。 イベントタイプ explicit | |||
| ステージングタスクの確認 | 倉庫担当者が、梱包済みの荷役単位を梱包ステーションまたは集約エリアから指定された出荷ステージングエリアへ移動したことを確認します。商品は積み込み可能な位置に置かれます。 | ||
| 重要な理由 倉庫内の処理から出庫物流への移行を示します。ステージングが遅れると、積み込み場が混乱したり、運送会社の集荷時刻に間に合わなくなったりする可能性があります。 入手先 ステージング移動のプロセス種別を持つ倉庫タスク(/SCWM/WT)の確認タイムスタンプ(フィールドCONFIRMED_AT)から取得します。 記録 荷役単位または出荷に関連するステージング倉庫タスクの確認タイムスタンプを特定します。 イベントタイプ explicit | |||
| ピッキングタスクの作成 | システムは、出荷指示を満たすために保管棚から商品を取り出す倉庫タスク(WT)を作成します。これは、担当者に商品を取り出すよう指示するシステム上の指示です。 | ||
| 重要な理由 出庫に伴う実作業の開始を示します。ピッキングタスクの作成から確認までの時間差は、ピッキング効率やリソースの利用可能性を分析するうえで重要です。 入手先 ピッキングを示すプロセス種別の倉庫タスクについて、/SCWM/WTテーブルの作成タイムスタンプ(フィールドCREATED_AT)から取得します。 記録 倉庫オーダーに関連付けられた、ピッキングのプロセス種別を持つ倉庫タスクに絞り込み、その作成タイムスタンプを使用します。 イベントタイプ explicit | |||
| 倉庫オーダーのキャンセル | すべてのタスクが完了する前に倉庫オーダーがキャンセルされ、以降の実行が停止します。在庫不足、顧客オーダーの変更、その他の例外が原因となる場合があります。 | ||
| 重要な理由 失敗または例外の経路を示します。キャンセルの頻度と理由を分析すると、計画、在庫精度、オーダー管理における上流工程の問題を特定できます。 入手先 倉庫オーダーヘッダーテーブル/SCWM/WHOのステータスフィールド(STAT)が「キャンセル」に変わったことを追跡して取得します。 記録 /SCWM/WHOのステータスがキャンセルを示す値になった時刻を特定します。 イベントタイプ inferred | |||
| 入庫計上 | 外部仕入先または生産部門から届いた商品を、倉庫在庫として正式に受け入れたことを示します。在庫を可視化し、棚入れなどの後続プロセスで利用可能にする、重要な財務・在庫計上です。 | ||
| 重要な理由 入庫プロセスにおける重要な節目です。商品の到着から計上までの時間から、入荷エリアの滞留状況を把握できます。滞留は在庫の利用可能性にも影響します。 入手先 倉庫オーダーに関連付けられた入荷伝票の計上から推定します。/SCDL/DB_PROCH_Iテーブルの伝票フローまたはステータスフィールド(例:DGRSTAT)を確認してください。 記録 関連する入荷伝票の入庫ステータスが「完了」になった時刻を特定します。 イベントタイプ inferred | |||
| 梱包の開始 | ピッキングした商品をまとめ、出荷用の容器または荷役単位に入れる梱包作業の開始を示します。多くの場合、梱包作業場で最初に行われる工程です。 | ||
| 重要な理由 付加価値サービス工程の開始を示します。梱包にかかる時間を測定すると、作業場のレイアウト、人員配置、資材を最適化できます。 入手先 このイベントは推定が必要な場合があります。梱包ステーションで商品または荷役単位を最初にスキャンした時刻から特定できます。多くの場合、作業場や荷役単位のログに記録されています。/SCWM/PACKSPECなどのテーブルや関連する実行ログが情報源になります。 記録 出荷に関連する梱包タスクの最初の倉庫タスク確認タイムスタンプ、または最終出荷用HUの作成時刻を使用します。 イベントタイプ inferred | |||
| 棚入れタスクの作成 | システムは、入荷エリアから最終保管棚へ商品を移動するための具体的な指示として、倉庫タスク(WT)を作成します。このアクティビティは、システム上で棚入れ作業を実行できる状態になったことを示します。 | ||
| 重要な理由 タスクの作成から確認までの時間を追跡すると、倉庫担当者が棚入れ指示を受けて実行するまでにかかる時間が分かります。人員や設備の不足が疑われる箇所も把握できます。 入手先 棚入れを示すプロセス種別の倉庫タスクについて、/SCWM/WTテーブルの作成タイムスタンプ(フィールドCREATED_AT)から取得します。 記録 倉庫オーダーに関連付けられた、棚入れのプロセス種別を持つ倉庫タスクに絞り込み、その作成タイムスタンプを使用します。 イベントタイプ explicit | |||
| 積み込みの完了 | 出荷するすべての商品が輸送単位に実際に積み込まれたことを示します。出庫計上と車両の出発に必要な前提条件です。 | ||
| 重要な理由 最終出荷前の重要な節目です。積み込み完了から出庫計上までの遅延は、伝票やシステムの問題によって運送会社の作業が滞っている可能性を示します。 入手先 関連する輸送単位(TU)または出荷指示のステータスが「積み込み完了」に変わった時刻から推定します。/SCWM/TUおよび/SCDL/DB_PROCH_Oテーブルのステータスが関連します。 記録 TUまたは出荷指示のステータスが積み込み完了を示す値に更新された時刻を記録します。 イベントタイプ inferred | |||
| 積み込みの開始 | ステージングエリアからトラックまたは輸送単位への商品の積み込み作業が始まったことを示します。多くの場合、システム上でユーザーが操作して開始します。 | ||
| 重要な理由 倉庫内で行う最後の実作業の開始を示します。積み込み時間を分析すると、バースの利用効率や運送会社の車両回転時間を改善できます。 入手先 関連する輸送単位(TU)または出荷指示のステータスが「積み込み開始」に変わった時刻から推定します。/SCWM/TU_STATUSテーブルを確認できます。 記録 TUまたは出荷指示のステータスが積み込み開始を示す値に更新された時刻を記録します。 イベントタイプ inferred | |||
データ抽出ガイド
ステップ
- 前提条件:CDSビューの特定または作成:主なデータソースは、倉庫管理用の標準SAP S/4HANA CDSビューです。注文レベルのイベントには
I_WarehouseOrder、タスクレベルのイベントにはI_WarehouseTaskが主要なビューとなります。関連する物流イベントには、I_OutboundDeliveryItem、I_InboundDeliveryItem、I_EWMTransportationUnitなどのビューも必要です。これらのビューがシステムで有効になっていることを確認してください。 - カスタムCDSビューの作成:複数のソースのデータを1つのイベントログ形式にまとめるには、カスタムCDSビューを作成する必要があります。EclipseのABAP Development Tools(ADT)で、新しいデータ定義を作成します。このカスタムビューでは
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アノテーションを追加します。これにより、ビューの構造に基づいてODataサービスがSAPによって自動生成されます。 - CDSビューとODataサービスの有効化:ADTで新しいデータ定義を有効化します。次に、SAPゲートウェイハブシステムでトランザクション
/IWFND/MAINT_SERVICEを使い、新しく生成されたODataサービスを検索して有効化します。これにより、REST APIエンドポイントからデータにアクセスできるようになります。 - データの抽出:利用するデータプラットフォームまたはETLツールを、有効化したODataサービスのエンドポイントに接続します。OData URIに
EventTimeの絞り込み条件を直接指定し、データ範囲を限定します(例:?$filter=EventTime ge datetime'2023-01-01T00:00:00')。 - プロセスマイニング用の形式に整形:抽出データをCSVなどのフラットファイル形式で保存し、列見出しをProcessMindの必須属性(
WarehouseOrder、ActivityName、EventTimeなど)に合わせます。完成したファイルをプロセスマイニングツールにアップロードします。
設定
- カスタム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を呼び出すユーザーまたはサービスアカウントには、基になる倉庫管理データへのアクセス権限が必要です。
クエリの例 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によるイベントの推定に頼らないでください。アクティビティが現在のヘッダーフィールドではなくステータス履歴や申請ログに記録されている場合は、その履歴またはログを使い、イベントタイムスタンプと実行ユーザーを保持します。
- すべてのアクティビティのタイムスタンプを1つのタイムゾーン(できればUTC)に統一するか、SAPアプリケーションサーバーのタイムゾーンを文書化します。ソース固有のステータスコードとプロセスコードを、イベントログで必要な次のアクティビティ名に変換します:倉庫注文作成、入庫転記、棚入れタスク作成、棚入れタスク確認、ピッキングタスク作成、ピッキングタスク確認、梱包開始、梱包完了、ステージングタスク確認、積み込み開始、積み込み完了、出庫転記、倉庫注文完了、倉庫注文キャンセル。
- 出力する各行に
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:抽出時刻またはソースの更新時刻を、実行内のすべての行に一貫して設定します。
- 増分抽出:最後に正常に抽出したソースタイムスタンプを基準とする、保存済みのハイウォーターマークを使います。到着が遅れたレコードを取り込めるよう期間を重複させ、利用可能な場合は確認済みのソース識別子で重複を排除します。
- パフォーマンス:早い段階で日付範囲を限定し、必要な列だけを選択し、インデックス付きフィールドで絞り込みます。条件式でインデックス付きタイムスタンプ列に関数を適用せず、大量データは日次または週次のバッチで処理します。許可されている場合はレポーティング用レプリカを使います。
- 結合方法:倉庫注文と倉庫タスクの多重度を確認します。タスク、ステータス、品目、Handling Unitのデータを結合する際に、意図しない行の増加を防いでください。結合前に、適切なイベントレコードを集約または選択します。
- タイムゾーン:ソースのタイムゾーンと変換ルールを設定します。タイムスタンプを一貫した形式で保存し、夏時間の扱いを文書化します。
- 前提条件:読み取り専用のデータベース権限、EWMスキーマへの承認済みアクセス、確認済みのデータディクショナリマッピング、関連する業務データおよび履歴オブジェクトの読み取り権限、承認済みのProcessMind取り込み設定が必要です。必要なSAPモジュール、ライセンス、権限は導入済みのEWMアーキテクチャによって異なるため、システム担当者に確認してください。
クエリの例 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%を達成し、注文処理の遅延を解消します。
クレジットカードは不要です。数分で設定できます。