輸送管理データテンプレート
輸送管理データテンプレート
- 収集を推奨する項目
- 追跡すべき主要アクティビティ
- SAP輸送管理のデータ抽出ガイド
輸送管理属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 輸送プロセス内で発生した特定のビジネスイベントまたはステップの名前です。 | ||
| 説明 Activity名とは、「出荷計画済み」、「商品集荷済み」、「商品配送済み」など、出荷のライフサイクルにおける単一のタスクまたはマイルストーンを説明するものです。これらのActivityは、発見されたプロセスマップにおけるノードを形成します。 Activityの順序と頻度を分析することは、標準プロセスフロー、逸脱、ボトルネック、および手戻りループを特定するのに役立ちます。これは、輸送管理におけるプロセスディスカバリとコンフォーマンスチェックの根幹をなします。 その重要性 この属性は輸送プロセスのステップを定義し、エンドツーエンドの出荷フローの可視化と分析を可能にします。 取得元 これは通常、SAP TM実行追跡イベントハンドラーに記録されたイベントコードまたはステータス変更から導き出されます。ビジネスオブジェクトのステータス変更または特定のイベントメッセージをログに記録するテーブルから取得される場合もあります。 例 出荷計画済み運送業者割り当て済み貨物引取済み商品配送済み配送証明受領済み | |||
| イベント日時 EventTime | 特定のアクティビティまたはイベントが発生した時刻を示すタイムスタンプ。 | ||
| 説明 イベント時間(Event Time)は、輸送プロセスにおける各活動の正確な日時を提供します。この時間データは、サイクルタイム、期間、および異なるプロセスステップ間の待機時間を計算するための基本的なものです。 分析では、この属性を使用してイベントを正確に順序付けし、時系列ログを構築し、すべての時間ベースのパフォーマンス分析を実行します。遅延の特定、プロセス効率の測定、スケジュールやサービスレベル契約に対するパフォーマンスの評価にとって不可欠です。 その重要性 タイムスタンプは、イベントを時系列で並べ替え、サイクルタイムやオンタイム配送などのすべてのパフォーマンスメトリクスを計算するために不可欠です。 取得元 報告されたイベントのタイムスタンプを格納するSAP TMのイベントハンドラーテーブル(例:/SAPTRX/EH_EVMSG)から取得されます。 例 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| 出荷 ShipmentId | 単一の貨物移動のユニークな識別子であり、分析の中心となるケースとして機能します。 | ||
| 説明 出荷IDとは、関連するすべての輸送Activityとイベントをグループ化する主キーです。これは、最初の依頼から最終的な配送証明と支払いまで、単一のエンドツーエンドの輸送プロセスを表します。 プロセスマイニングにおいて、この属性はケースビューを構築するために不可欠であり、アナリストが各出荷の完全なジャーニーを追跡することを可能にします。これにより、個々の出荷に関連するプロセスバリアント、サイクルタイム、および結果の分析が可能になり、輸送パフォーマンスの包括的なビューが提供されます。 その重要性 これは基本的なケース識別子であり、すべてのイベントとデータポイントを特定の輸送オーダーにリンクします。これはエンドツーエンドのプロセス分析にとって不可欠です。 取得元 この識別子は、SAP TMの貨物オーダー番号または貨物ブッキング番号です。これは、/SCMTMS/D_TORROTや/SCMTMS/D_TRQROTなどのテーブルで確認できます。 例 610000432161000056786100009876 | |||
| 希望納期 RequestedDeliveryDate | 顧客が要求した、または販売オーダーで規定された配送日時です。 | ||
| 説明 希望納期は、「商品配送済み」Activityの目標期限です。これはオンタイム配送パフォーマンスを測定するための主要なベンチマークとなります。 この日付は、「オンタイム配送率」KPIを計算するために不可欠です。実際の配送タイムスタンプとこの希望納期を比較することで、組織はサービスレベル契約を満たしたかどうかを判断できます。逸脱を分析することは、運送会社のパフォーマンス問題、計画遅延、通関保留など、遅延のシステム的な原因を特定するのに役立ちます。 その重要性 これは定時配送パフォーマンスを測定するための基準であり、顧客満足度と業務の卓越性にとって不可欠なKPIです。 取得元 この日付は通常、SAP ERPからの先行する販売オーダーまたは在庫移動オーダーから転送されます。貨物ユニットまたは貨物オーダーの日付/時刻フィールドに保存されます。 例 2023-05-20T17:00:00Z2023-06-01T12:00:00Z2023-06-15T23:59:59Z | |||
| 納期内配送 IsOnTimeDelivery | 貨物が要求された配送日またはそれ以前に配達されたかどうかを示すブール値フラグ。 | ||
| 説明 これは、「商品配送済み」Activityのタイムスタンプと「希望納期」を比較する計算された属性です。配送がオンタイムまたは早期であればtrue、遅延していればfalseと評価されます。 この属性は、各出荷に対して明確な二値の結果を作成することで、パフォーマンス分析を簡素化します。これはオンタイム配送パフォーマンスダッシュボードおよび対応するKPIの基礎となります。アナリストが遅延出荷を簡単にフィルタリングし、パフォーマンス低下の要因を理解するための根本原因分析を実行することを可能にします。 その重要性 配送コミットメントへの遵守を直接測定し、重要な定時配送KPIの計算と可視化を簡素化します。 取得元 この属性はSAP TMには保存されません。データ変換中に、実際の配送イベントタイムスタンプと希望納期を比較することにより計算する必要があります。 例 truefalse | |||
| 終了日時 EndTime | 特定のアクティビティが完了した時点を示すタイムスタンプ。 | ||
| 説明 StartTimeがイベントの開始を示す一方で、EndTimeはその完了を示します。これは、「通関」や「貨物積載」のように期間を伴うアクティビティにとって特に有用です。EndTimeとStartTimeの差は、そのアクティビティの処理時間を表します。 プロセスマイニング分析において、開始時間と終了時間の両方を持つことで、アクティビティ期間のより詳細な分析が可能となり、処理時間と待機時間を区別できます。これにより、非効率性がタスクの実行自体にあるのか、それともタスク間の引き渡しにあるのかに関わらず、その正確な発生箇所を特定するのに役立ちます。 その重要性 活動の処理時間を正確に計算し、実作業時間とイベント間の待機時間を区別することを可能にします。 取得元 StartTimeと同様に、これはイベントハンドラーテーブルから取得されます。特定のActivityの「完了」イベントに相当する場合があります。 例 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| 総輸送コスト TotalFreightCost | 出荷の計算済みまたは請求済みの総コストです。 | ||
| 説明 総輸送コストは、出荷がもたらす経済的な影響を表します。これは、輸送管理システムで算出されるコストの場合もあれば、決済後に運送業者から請求される最終金額の場合もあります。 この属性により、財務的な側面をプロセス分析に組み込むことが可能になります。アナリストは、最もコストのかかるプロセスバリアントを特定し、遅延や再ルーティングの費用を算出し、異なる運送業者や輸送モード間の費用対効果を比較できます。輸送支出やサービス提供コストの分析に焦点を当てたダッシュボードにとって、これは基礎となる要素です。 その重要性 プロセスに財務的側面を追加し、輸送費、出荷あたりのコスト、およびプロセス非効率性の財務的影響の分析を可能にします。 取得元 料金計算が実行された後、SAP TMの運賃決済文書から取得されます。これは、/SCMTMS/D_SFIRHDなどのテーブルで確認できます。 例 250.751200.005430.50 | |||
| 輸送モード ModeOfTransport | 出荷に使用される輸送方法です(例:道路、鉄道、航空、海上)。 | ||
| 説明 この属性は輸送モードを指定します。異なるモードは、個別のコスト構造、輸送時間、およびプロセス複雑性を持っています。例えば、国際航空貨物輸送は、国内トラック輸送と比較して、通関手続きのような異なるActivityを伴います。 輸送モード別にプロセスを分析することは、カスタマイズされた改善イニシアチブを可能にします。また、コスト分析、特にプレミアム運賃(例:緊急航空便)と標準的な、より経済的なモードの使用を特定するためにも不可欠です。このセグメンテーションは、輸送支出を理解し、管理するための鍵となります。 その重要性 輸送モードに基づいたコスト、時間、およびプロセス変動の分析を可能にし、コスト最適化と緊急輸送の使用状況特定に不可欠です。 取得元 これは、貨物オーダーまたは貨物ブッキングの主要フィールドであり、多くの場合、輸送モードまたはMOTとしてラベル付けされます。 例 01 (Road)02 (Rail)04 (Air)05 (Sea) | |||
| 運送業者名 CarrierName | 出荷に割り当てられた輸送運送会社または物流サービスプロバイダーの名前です。 | ||
| 説明 運送会社名とは、貨物の物理的な移動を担当する会社を特定するものです。運送会社によってサービス、コスト、信頼性のレベルが異なる場合があるため、これはパフォーマンス分析にとって重要な側面です。 プロセスマイニングでは、この属性を使用して、さまざまな運送会社間のパフォーマンスをセグメント化し、比較します。これにより、運送会社スコアカードの作成、運送会社ごとのオンタイム配送率の監視、コスト比較、およびどの運送会社が遅延や紛争に最も頻繁に関連しているかを特定することが可能になります。このインサイトは、戦略的な運送会社管理と調達にとって不可欠です。 その重要性 異なる運送業者間のパフォーマンス比較を可能にし、運送業者の選定、コスト、サービスレベルの最適化に不可欠です。 取得元 この情報は貨物オーダーまたは貨物ブッキング文書に保存されます。運送会社のビジネスパートナー機能を介してリンクされます。 例 DHL ExpressFedEx Freightマースクラインユニオン・パシフィック鉄道 | |||
| ソースシステム SourceSystem | イベントデータが発信されたシステムです。 | ||
| 説明 この属性は、SAP TM、SAP ERP、または外部運送会社ポータルなど、データを生成したソースシステムを特定します。これにより、データの発生源に関するコンテキストが提供され、データ統合ポイントを理解するのに役立ちます。 複雑な環境では、ソースシステムを知ることは、データ検証、統合問題のトラブルシューティング、および異なるシステムが全体的なプロセスにどのように貢献しているかを理解するために不可欠です。例えば、内部システムによって報告されたイベントと、サードパーティの物流プロバイダーによって報告されたイベントを区別することができます。 その重要性 データの発生源を特定します。これは、データガバナンス、トラブルシューティング、および複数のシステムにわたるプロセスオーケストレーションを理解するために不可欠です。 取得元 この情報は、システムログの一部として保存されることが多く、データエントリを作成したインターフェースまたはユーザーに基づいて導き出すことができます。 例 SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| ユーザー名 UserName | Activityを実行した人物のユーザーIDまたは名前です。 | ||
| 説明 この属性は、「出荷計画済み」や「請求書検証済み」などの手動Activityの実行を担当する従業員またはユーザーを特定します。これは、プロセスステップを、それらを実行した個人またはチームにリンクします。 ユーザーごとのActivityを分析することは、ワークロードの分散を理解し、トレーニングニーズを特定し、トップパフォーマーを認識するのに役立ちます。また、誰が何をいつ行ったかの明確な記録を提供するため、コンプライアンスおよび監査目的にも不可欠です。これにより、異なるユーザーが同じタスクをどのように実行するかのバリエーションが明らかになることがあります。 その重要性 手動プロセスステップを特定のユーザーに紐付け、ワークロード、個人のパフォーマンス、およびトレーニング機会の分析を可能にします。 取得元 通常、輸送関連文書の変更ログや文書ヘッダーテーブルに見られます。例えば、「作成者」や「変更者」フィールド(例: ERNAM、AENAM)などです。 例 CB998030SMITHJPLANNER_EU | |||
| 仕向国 DestinationCountry | 出荷が配送される国です。 | ||
| 説明 この属性は、最終配送場所の住所から派生した、出荷の最終目的国を特定します。 出発国と同様に、目的国別に分析することは、地域の物流課題を理解するために不可欠です。これにより、どの目的地が配送遅延に最も陥りやすいか、またはラストマイル配送コストが高いかといったパターンを明らかにできます。このインサイトは、ネットワーク最適化、現実的な納期設定、および国際貿易コンプライアンスの管理に非常に価値があります。 その重要性 目的地別のプロセスパフォーマンス分析を可能にし、特定の配送地域、税関当局、またはラストマイル運送業者に関する問題を浮き彫りにします。 取得元 これは、貨物オーダーの最終停車地の目的地の住所情報の一部です。 例 フランスCAGB日本 | |||
| 最終データ更新 LastDataUpdate | プロセスマイニングデータセットの最新のデータ抽出または更新のタイムスタンプです。 | ||
| 説明 この属性は、分析されているデータの鮮度を示します。これは、SAP TMなどのソースシステムからプロセスマイニングツールにデータが最後にプルされた日時を反映します。 これは、インサイトがどれだけ最新であるかに関するコンテキストを提供するものであるため、あらゆるダッシュボードまたは分析にとって重要なメタデータ要素です。ユーザーがリアルタイム情報を見ているのか、それとも以前の期間のスナップショットを見ているのかを理解するのに役立ち、タイムリーかつ情報に基づいた意思決定を行うために不可欠です。 その重要性 データの適時性に関する重要なコンテキストを提供し、ユーザーが分析の最新性を認識できるようにします。 取得元 これは通常、データ取り込みプロセス中にETL(Extract, Transform, Load)ツールまたはデータパイプラインによって生成および保存されます。 例 2023-10-27T08:00:00Z2023-10-26T08:00:00Z | |||
| 出荷サイクルタイム ShipmentCycleTime | 最初の依頼から最終的な配送証明までの出荷の総期間です。 | ||
| 説明 これは、出荷のエンドツーエンドのサイクルタイムを表す計算されたメトリックです。通常、「配送証明受領済み」のタイムスタンプと「輸送依頼受領済み」の差として計算されます。 出荷サイクルタイムは、輸送プロセス全体の効率を測定するための主要なKPIです。これはパフォーマンスの全体像を提供し、時間経過や運送会社、ルートなどの異なる側面で分析された場合、傾向と主要なボトルネックを明らかにできます。エンドツーエンド出荷サイクルタイムダッシュボードにとって不可欠です。 その重要性 輸送プロセスのエンドツーエンドの総期間を測定し、プロセス全体の速度と効率を示す重要な指標となります。 取得元 これは、各ケースの最初のイベントの開始時刻を最後のイベントの終了時刻から差し引くことによって導き出される計算されたメトリックです。 例 5日4時間12日8時間22時間30分 | |||
| 出荷ステータス ShipmentStatus | データ抽出時点における出荷の現在の全体的なステータスです。 | ||
| 説明 出荷ステータスは、出荷が「計画中」、「実行中」、「配送済み」、「キャンセル済み」など、ライフサイクルのどの段階にあるかのスナップショットを提供します。これは、ケースの最後に判明した状態を表します。 この属性は、出荷結果に基づいて出荷をフィルタリングおよび分析するのに役立ちます。たとえば、アナリストは完了した出荷のみに焦点を当ててエンドツーエンドのサイクルタイムを測定したり、キャンセルされた出荷のみを分析してキャンセルの根本原因を理解したりできます。これはプロセスフローを解釈するための重要なコンテキストを提供します。 その重要性 各出荷の大まかな結果を提供し、出荷が完了したか、キャンセルされたか、またはまだ輸送中であるかに基づいてフィルタリングと分析を可能にします。 取得元 これは、SAP TMの貨物オーダーまたは貨物ブッキング文書のヘッダーにある全体的なステータスフィールドです。 例 計画中輸送準備完了実行中実行済み取り消し済み | |||
| 異議あり IsDisputed | 出荷に関する運賃請求書が紛争になったかどうかを示すブール値フラグ。 | ||
| 説明 この計算されたフラグは、関連する運賃決済紛争がある出荷を特定します。紛争が作成された場合はtrue、そうでない場合はfalseと評価されます。これは、「運賃紛争作成済み」Activityの存在、または空でない「紛争理由」から導き出すことができます。 この属性は、運賃決済プロセスの分析を簡素化します。これにより、運賃請求不一致率KPIの容易な計算が可能になり、すべての紛争中の出荷をフィルタリングするのに役立ちます。アナリストは、運送会社、レーン、または請求タイプなど、これらの出荷の共通の特性を調査し、請求エラーの根本原因を見つけることができます。 その重要性 問題のある運賃決済の特定を簡素化し、紛争率の迅速な計算と請求エラーの根本原因分析を可能にします。 取得元 この属性はSAP TMには保存されません。運賃決済文書にリンクされた紛争ケースの存在に基づいて計算する必要があります。 例 truefalse | |||
| 発信国 OriginCountry | 出荷元となる国です。 | ||
| 説明 この属性は、輸送ジャーニーの開始国を特定します。これは、最初の集荷場所の住所から派生します。 出発国別にプロセスを分析することは、パフォーマンス、コスト、および複雑さにおける地域差を特定するのに役立ちます。これにより、通関時間が長い国、運送会社コストが高い国、または遅延が頻繁に発生する国を強調できます。この地理的セグメンテーションは、グローバルサプライチェーンを管理し、特定の地域に物流戦略を合わせるために不可欠です。 その重要性 出荷パフォーマンスの地理的分析を可能にし、地域ごとのボトルネック、コスト要因、またはプロセス変動の特定に役立ちます。 取得元 これは、貨物オーダーの最初の停車地の出発地の住所情報の一部です。 例 ドイツUSCNMX | |||
| 紛争理由 DisputeReason | 運賃請求書に異議が申し立てられた際に提供される理由です。 | ||
| 説明 運送業者からの請求書がSAP TMで算出された予測コストと一致しない場合、異議申し立てが発生します。この属性には、「レートの誤り」、「重複請求」、「追加料金未承認」といった不一致の理由が記録されます。 異議申し立ての理由を分析することは、運賃請求書エラーおよび異議申し立て率ダッシュボードにとって極めて重要です。これにより、請求の不正確さの根本原因が、マスタデータの問題、運送業者のエラー、運用上の失敗のいずれに起因するのかを特定できます。この洞察に基づき、組織は異議申し立てを削減するための的を絞った対策を講じることができ、結果として支払いサイクルを迅速化し、管理コストを削減します。 その重要性 運賃請求エラーの根本原因を提供し、請求書紛争を削減し、決済プロセスを改善するための的を絞ったアクションを可能にします。 取得元 この情報は、運賃決済文書に関連付けられた紛争管理ケースに捕捉されます。 例 料金不一致重量誤り未承認のデマレージ料金重複請求書 | |||
| 遅延理由 DelayReason | 出荷遅延の理由を説明するコードまたはテキスト。 | ||
| 説明 遅延理由属性は、「悪天候」、「通関保留」、「運送会社による遅延」など、計画されたスケジュールからの逸脱の原因を把握します。この情報は、多くの場合、手動または運送会社からのイベントメッセージを介して報告されます。 これは、根本原因分析のための強力な属性です。アナリストは、出荷が遅れたという事実だけでなく、その理由を理解することができます。遅延理由を分類し定量化することで、組織は繰り返しの問題を特定し、運送会社とのコミュニケーション改善や、渋滞回避のためのルート最適化など、最も影響の大きい分野に改善努力を集中することができます。 その重要性 出荷遅延の「なぜ」を説明し、強力な根本原因分析を可能にして例外を減らし、定時パフォーマンスを向上させます。 取得元 これは、「到着/出発遅延」イベントが報告された際、SAP TMのイベント管理フレームワークにおいてイベントコードと理由として捕捉できます。 例 WEATHER_DELAYCUSTOMS_INSPECTIONPORT_CONGESTION (港湾混雑)MECHANICAL_FAILURE (機械故障) | |||
| 集荷予定日 ScheduledPickupDate | 運送会社が発送元から商品をピックアップする予定日時です。 | ||
| 説明 集荷予定日は、物理的な輸送開始について合意された時間です。これは出荷の実行フェーズにおける重要なマイルストーンとなります。 この属性は、旅の最初の区間の適時性を監視するために不可欠です。集荷予定時間と実際の「商品集荷済み」イベントタイムスタンプを比較することで、企業は集荷遅延を計算できます。これは、発送元と運送会社の両方のパフォーマンスと信頼性を評価するのに役立ちます。 その重要性 集荷の適時性を測定するための基準となり、出荷の物理的な旅の最初段階における遅延を特定するのに役立ちます。 取得元 これは、SAP TMの貨物オーダーの停車シーケンスに保存される計画された日付/時刻です。 例 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
輸送管理アクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| 出荷キャンセル | このActivityは、依頼または計画された出荷のキャンセルを表します。これは、実行に進まないプロセスの終端点として機能します。 | ||
| その重要性 キャンセルを追跡することは、顧客需要の変化や計画エラーなど、プロセス失敗の原因を特定するのに役立ちます。高いキャンセル率は、受注管理や計画における根本的な問題を示唆している可能性があります。 取得元 これは、運送オーダーまたは貨物オーダーのライフサイクルステータスが「キャンセル済み」に変更されたことから推測されます。このステータス変更のタイムスタンプがイベントを示します。 取得 文書のライフサイクルステータスが「キャンセル済み」に設定されたときのタイムスタンプをキャプチャします。 イベントタイプ inferred | |||
| 出荷計画済み | このActivityは、輸送要件が具体的な出荷計画に統合されたことを示します。これは、貨物オーダー(道路/鉄道用)または貨物ブッキング(海上/航空用)が作成および保存され、計画されたルートとリソースが含まれているときに捕捉されます。 | ||
| その重要性 このマイルストンを完了することは、ロジスティクス実行を開始するために不可欠です。依頼からこの活動までのサイクルタイムは、計画効率を測定するための主要なKPIです。 取得元 このイベントは、貨物オーダーまたは貨物ブッキング文書の作成に対応します。文書のステータス変更、例えば計画ステータスが「計画済み」に移行したことから推測することもできます。関連するテーブルは通常、ヘッダーデータ用の/SCMTMS/D_TORROTです。 取得 運送指図書または貨物予約書の作成タイムスタンプを使用します。 イベントタイプ explicit | |||
| 商品配送済み | このActivityは、最終目的地への出荷の到着と物理的な輸送の完了を表します。これは、運送会社が荷受人の場所で貨物が荷降ろしされたと報告したときに捕捉されます。 | ||
| その重要性 これは、オンタイム配送パフォーマンスと顧客満足度を測定するための最も重要なマイルストーンです。また、通常、請求および決済プロセスのトリガーとしても機能します。 取得元 これは、SAP TMにおいて「目的地到着」または「荷降ろし完了」実行イベントとして記録され、貨物オーダーの実行ステータスを更新します。データはしばしば運送会社から受領されます。 取得 運送指図の最終停留地における、報告された「目的地到着」実行イベントのタイムスタンプを使用します。 イベントタイプ explicit | |||
| 支払処理済み | この最終Activityは、運送会社が輸送サービスに対して支払いを受けたことを確認します。このイベントは通常、SAP TMから検証済み請求書が受領された後、接続されたERPシステムで発生します。 | ||
| その重要性 これは、エンドツーエンドの輸送ライフサイクルの最終段階を示すものです。プロセス全体の期間や期限内支払いに関するKPIを測定する上で不可欠となります。 取得元 この情報はERPシステム(例:S/4HANA Finance)に存在します。請求書番号を介して運賃決済文書にリンクし直すことができます。ステータス更新がSAP TMに送り返される場合や、BKPFやBSEGのようなERPテーブルからデータを取得する必要がある場合もあります。 取得 ERPシステムから支払いクリアリング日付を取得し、請求書参照を介して出荷にリンクします。 イベントタイプ explicit | |||
| 貨物引取済み | このActivityは、貨物の物理的な輸送の開始を示します。これは、運送会社が貨物が積載され、発送元から出発したと報告したときに捕捉されます。 | ||
| その重要性 これは、輸送中フェーズの開始を示す主要な実行マイルストーンです。オンタイムパフォーマンスの追跡と正確な出荷可視性の提供にとって不可欠です。 取得元 このイベントは通常、SAP TMと統合されているSAP Event Managementに「出発」または「積載完了」イベントとして記録されます。これにより、貨物オーダーの実行ステータスが更新されます。貨物オーダーに直接記録することも可能です。 取得 運送指図の出発地における、報告された「出発」実行イベントのタイムスタンプを使用します。 イベントタイプ explicit | |||
| 輸送依頼を受領 | このActivityは、輸送プロセスの開始を示し、輸送要件の作成を表します。SAP TMでは、これは通常、運送オーダー(FWO)またはオーダーベースの輸送要件(OTR)の作成によって捕捉されます。 | ||
| その重要性 これは、エンドツーエンドの出荷プロセスの主要な開始イベントです。このActivityから計画完了までの時間を分析することは、計画効率を測定するために不可欠です。 取得元 このイベントは、運送オーダー(文書タイプFWO)またはその他の輸送要件文書の作成時に記録されます。ヘッダーテーブル(例: /SCMTMS/D_TORROT)の作成タイムスタンプがイベント時間として機能します。 取得 フォワーディングオーダーまたは輸送要求文書の作成日時をキャプチャします。 イベントタイプ explicit | |||
| 運賃決済作成済み | このActivityは、運送会社に支払われる輸送コストを計算する運賃決済文書(FSD)の作成を示します。これは、債務計上および請求書検証に使用される主要な文書です。 | ||
| その重要性 これは輸送プロセスの財務決済フェーズを開始します。配送から決済作成までの時間を分析することは、財務処理におけるボトルネックを特定するのに役立ちます。 取得元 これは、運賃決済文書の作成によって捕捉される明示的なイベントです。この文書のヘッダーテーブル、/SCMTMS/D_SFIRHDに作成タイムスタンプが利用可能です。 取得 運送決済伝票の作成日時を使用します。 イベントタイプ explicit | |||
| 運送業者割り当て済み | このActivityは、特定の輸送サービスプロバイダー、すなわち運送会社が選択され、出荷に割り当てられたことを示します。これは、手動割り当て、自動計画、または入札プロセスを通じて発生する可能性があります。 | ||
| その重要性 運送業者の割り当ては、出荷が確認・実行される前の重要なステップです。これを追跡することで、運送業者選定プロセスを分析し、タイムリーなブッキングを確保するのに役立ちます。 取得元 これは、貨物オーダーまたは貨物ブッキングで運送会社フィールド(役割「運送会社」を持つ当事者)が設定されたときに捕捉されます。入札の場合、貨物見積依頼が落札されたときです。 取得 貨物オーダー内で運送会社パートナー機能が最初に設定または確認されたときのタイムスタンプを特定します。 イベントタイプ inferred | |||
| 配送証明受領済み | このActivityは、署名された配送証明(POD)文書が運送会社から受領され、システムに記録されたときに発生します。これにより、受取人による貨物の受領が確認されます。 | ||
| その重要性 POD(配送証明)の受領は、顧客への請求と運送会社への運賃決済における重要な前提条件です。ここでの遅延は、キャッシュ・トゥ・キャッシュサイクルに直接影響します。 取得元 これは通常、貨物オーダーのステータス変更、例えばPODステータスが「受領済み」に設定されることから推測されます。このステータスフィールドの変更が、Activityのタイムスタンプを提供します。 取得 貨物オーダーの配達証明ステータスが「受領済み」に更新されたときのタイムスタンプをキャプチャします。 イベントタイプ inferred | |||
| 出荷経路変更済み | このActivityは、出荷が確認された後の、ルートやスケジュールに対する計画外の変更を示します。これは、中断、顧客からの依頼、または物流上の問題による可能性があります。 | ||
| その重要性 経路変更は、コスト増と遅延につながることがよくあります。経路変更の頻度とその理由を特定することは、計画精度と運用安定性を向上させるのに役立ちます。 取得元 このイベントは、貨物オーダーの実行開始後に、その段階、場所、または日付に対する重大な変更を検出することによって推測されます。変更文書(CDHDRおよびCDPOSテーブル)はこの目的のために分析できます。 取得 「運送業者による出荷確認済み」イベント後における貨物オーダー文書の主要な経路指定フィールドへの変更を検出します。 イベントタイプ inferred | |||
| 請求書の検証完了 | このActivityは、運送会社の請求書が運賃決済文書と正常に照合され、支払いが承認されたことを示します。これは、ERPシステムで支払いプロセスが開始される前の最終ステップです。 | ||
| その重要性 このActivityは、運賃コストの監査および検証プロセスを完了します。この段階での遅延は、運送会社への支払い遅延につながり、関係を損なう可能性があります。 取得元 これは、運賃決済文書のステータス変更(例:「未収計上準備完了」や「転記済み」)から推測され、支払いのためにERPシステムに送信されたことを示します。 取得 FSDのライフサイクルステータスが、支払い準備完了または転記済みを示すように変更された際のタイムスタンプを追跡します。 イベントタイプ inferred | |||
| 通関済み | このActivityは、出荷が税関当局によって承認され、進行が許可されたことを示します。これは、大きな潜在的ボトルネックを取り除くため、国際物流にとって主要なマイルストーンとなります。 | ||
| その重要性 通関手続きは、グローバルサプライチェーンにおける主要な遅延の原因となることがよくあります。この活動の期間と成功率を追跡することは、国際輸送時間の改善に不可欠です。 取得元 これは、「通関」実行イベントとして捕捉され、通常、通関業者または外部可視性プロバイダーによって報告され、貨物オーダーの実行追跡で更新されます。 取得 運送指図に関連付けられた、報告された「通関」実行イベントのタイムスタンプを使用します。 イベントタイプ explicit | |||
| 通関申告済み | 国際輸送の場合、この活動は必要な税関書類を当局に提出することを意味します。これは、貨物の輸出または輸入許可を得るための前提条件です。 | ||
| その重要性 税関申告を期限内に行うことは、国境での遅延を防ぐ上で極めて重要です。この活動は、通関手続きの効率性を監視するのに役立ちます。 取得元 このイベントは、通関業者によって報告された、またはSAP GTSのような統合通関管理システムのステータス変更から、特定の実行イベントとして捕捉できます。貨物オーダーはそれに応じて更新されます。 取得 「通関申告済み」実行イベントまたは対応するステータス変更のタイムスタンプをキャプチャします。 イベントタイプ explicit | |||
| 運賃紛争作成済み | このイベントは、運送会社の請求書と運賃決済文書の計算済みコストとの間に不一致が発見されたことを示します。これにより紛争解決ワークフローがトリガーされます。 | ||
| その重要性 紛争は運送業者への支払いを遅らせ、解決のために管理作業を必要とします。この活動を追跡することで、誤った料金や付帯料金など、請求の不正確さの根本原因を特定するのに役立ちます。 取得元 これは、運賃決済文書のステータス変更、特に「紛争」ステータスが設定されたことから推測できます。個別の紛争ケース文書の作成を伴う場合もあります。 取得 運賃決済伝票に紛争ステータスが設定されたときのタイムスタンプをキャプチャします。 イベントタイプ inferred | |||
| 運送会社が出荷を承認済み | このイベントは、運送会社が計画どおりに輸送を実行することに同意したことを表します。確認は通常、EDIメッセージ、運送会社ポータル更新、または手動入力によって受領され、これにより貨物オーダーのステータスが更新されます。 | ||
| その重要性 運送業者による確認は、出荷計画へのコミットメントを提供し、不確実性を低減します。この確認の受領が遅れると、出荷スケジュール全体が危険にさらされる可能性があります。 取得元 これは、貨物オーダーまたは貨物ブッキングの確認ステータスフィールドの変更から推測されます。文書のステータス管理において、「確認済み」のような特定のステータス値が設定されます。 取得 運送指図書内の確認ステータスフィールドへの変更を追跡します。 イベントタイプ inferred | |||
抽出ガイド
ステップ
- CDSビューAPIの特定と有効化: SAP S/4HANAシステムにログインします。トランザクション
/IWFND/MAINT_SERVICEを使用して、主要なCDSビューに必要なODataサービスが有効になっていることを確認します。確認すべき主要サービスには、I_TransportationOrder、C_TranspOrdExecutionEvent、I_ForwardingOrder、I_FreightSettlementDocumentに関連するものが含まれます。有効でない場合は、SAP管理者と協力してバックエンドシステムから追加し有効化してください。 - API接続の確立: SAP管理者からODataサービスのルートURLを取得します。Pythonスクリプト(requestsライブラリを使用)、商用ETLツール、またはPostmanのようなツールなどのクライアントアプリケーションを設定して、APIに接続します。認証を設定する必要がありますが、通常はBasic認証(ユーザー名とパスワード)またはより安全な接続のためにOAuth 2.0を使用します。
- 抽出範囲の定義: データ抽出の範囲を決定します。例えば、過去6ヶ月間のように特定の日付範囲を定義します。分析するプロセスに関連するデータを確保するため、会社コードなどの関連する組織単位、または貨物オーダータイプなどの特定の文書タイプでフィルターする対象を特定します。
- ベース出荷クエリの構築: I_TransportationOrder CDSビューをクエリすることから始めます。このビューは、貨物オーダーまたは貨物ブッキングとしても知られる出荷の中心的なオブジェクトとして機能します。OData
$selectパラメーターを使用して、CarrierName、ModeOfTransport、RequestedDeliveryDateなどの推奨属性を含む必要な列を選択します。日付およびその他のスコープパラメーターでデータを制限するために$filterを適用します。 - 実行および輸送イベントのクエリ: C_TranspOrdExecutionEvent CDSビューを使用して、主要なロジスティクスイベントを抽出します。「貨物引取済み」(DEPARTURE)や「貨物配達済み」(ARRIVAL_AT_DESTINATION)などの活動に対応する特定の
EventCode値でこのビューをフィルターします。TransportationOrder UUIDを使用して、このデータをベース出荷データに結合します。 - 関連ビジネスオブジェクトのクエリ: 完全なプロセスを捕捉するには、他の関連するCDSビューをクエリする必要があります。I_ForwardingOrderを「輸送依頼受領」活動のためにクエリし、I_FreightSettlementDocumentを「貨物決済作成済み」、「貨物紛争作成済み」、「請求書確認済み」のような財務活動のためにクエリします。
- ステータスベースの活動の抽出: 多くの活動は個別のイベントではなく、主要文書のステータス変更です。「運送業者割り当て済み」、「運送業者による出荷確認済み」、「出荷キャンセル済み」のような活動については、I_TransportationOrderビューをクエリし、関連するステータスフィールドに関連付けられた
LastChangeDateTimeをイベント時間として使用します。これには、ステータスコードとビジネス活動の慎重なマッピングが必要です。 - データの統合と変換: すべてのソースから抽出されたデータを単一のイベントログ構造に統合します。抽出された各アクティビティについて、必要な列(ShipmentId、ActivityName、EventTime)を含む行を作成します。ベース出荷クエリからのすべての推奨属性がその出荷のすべての行に存在することを確認します。このステップは概念的にSQLの
UNION ALL操作に相当します。 - 複雑なイベントと外部イベントの処理: 「通関済み」や「支払処理済み」のような活動の場合、データは特定のフィールドまたは外部システムに存在する可能性があります。提供されているクエリロジックは標準フィールドをプロキシとして使用します。通関固有のCDSビューと結合したり、貨物決済伝票番号に基づいて支払いデータ用の別のERP抽出と関連付けたりするために、クエリを調整する必要があるかもしれません。
- ProcessMind向けにフォーマット: 最終的に統合されたデータセットをCSVファイルとして保存します。列ヘッダーがアップロード要件に一致していることを確認します。例えば、
ShipmentId列をツールの設定にあるCaseIdフィールドにマッピングします。タイムスタンプが一貫した形式、できればUTC (YYYY-MM-DDTHH:MM:SSZ) であることを確認します。
設定
- Core CDS Views: 抽出は主にI_TransportationOrder(貨物オーダー用)、C_TranspOrdExecutionEvent(実行イベント用)、I_ForwardingOrder(輸送依頼用)、I_FreightSettlementDocument(決済用)に依存します。
- 日付範囲フィルタリング: データ量を管理するために日付フィルターを適用することが重要です。I_TransportationOrder の
CreationDateTimeまたは C_TranspOrdExecutionEvent のActualBusinessDateTimeを使用します。最初の分析には3〜6ヶ月の範囲が推奨されます。 - 文書タイプフィルタリング: 分析に集中するため、
TransportationOrderTypeフィールドを使用して特定の文書タイプでフィルターします。これにより、標準出荷と在庫転送など、異なるロジスティクスシナリオを区別できます。 - 組織フィルター: 該当する場合、
PurchasingOrganizationやその他の組織レベルのフィールドでフィルターし、データを特定の事業単位または地域に限定します。 - APIページネーション: 大規模なデータセットの場合、ODataパラメーターの
$topと$skipを使用して、データをより小さなページで取得します。これにより、APIのタイムアウトを防ぎ、クライアント側のメモリ消費を削減できます。1000から5000行のページサイズがしばしば効果的です。 - 前提条件: 抽出を実行するユーザーまたはサービスアカウントは、基盤となるODataサービス(権限オブジェクト S_SERVICE)およびCDSビュー内のビジネスデータに対する権限が必要です。対応するサービスはSAP Gateway(
/IWFND/MAINT_SERVICE)で有効化されている必要があります。
a クエリ例 sql
WITH Shipments AS (
SELECT
TransportationOrder AS ShipmentId,
CarrierName,
TranspOrdExecutionBlockRsnCode,
TransportationMode AS ModeOfTransport,
ShippingType AS ShipmentType,
CreationDateTime AS ShipmentCreationTime,
LastChangeDateTime,
LifeCycleStatus,
ConfirmationStatus,
OverallExecutionStatus,
DeliveryOverallStatus,
PlannedDepDateTimeReqByCust AS RequestedDeliveryDate,
TotalChargesAmountInTransacCrcy AS TotalFreightCost
FROM I_TransportationOrder
WHERE
CreationDateTime >= '[START_DATE]' AND CreationDateTime <= '[END_DATE]'
-- AND TransportationOrderType IN ('[Your_Type_1]', '[Your_Type_2]')
)
SELECT
fwo.PurchasingDocument AS ShipmentId,
'Transportation Request Received' AS ActivityName,
fwo.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM I_ForwardingOrder AS fwo
LEFT JOIN Shipments s ON fwo.PurchasingDocument = s.ShipmentId
WHERE fwo.CreationDateTime >= '[START_DATE]' AND fwo.CreationDateTime <= '[END_DATE]'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Planned' AS ActivityName,
s.ShipmentCreationTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
UNION ALL
SELECT
s.ShipmentId,
'Carrier Assigned' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CarrierName IS NOT NULL
UNION ALL
SELECT
s.ShipmentId,
'Shipment Confirmed By Carrier' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.ConfirmationStatus = 'C' -- 'Confirmed'
UNION ALL
SELECT
s.ShipmentId,
'Goods Picked Up' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'DEPARTURE'
UNION ALL
SELECT
s.ShipmentId,
'Customs Declaration Filed' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsRelevance IS NOT NULL -- This is a proxy, system config dependent
UNION ALL
SELECT
s.ShipmentId,
'Customs Cleared' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsOverallStatus = '4' -- 'Customs Cleared'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Rerouted' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.TranspOrdExecutionBlockRsnCode = '[Your Rerouting Reason Code]'
UNION ALL
SELECT
s.ShipmentId,
'Goods Delivered' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'ARRIVAL_AT_DESTINATION'
UNION ALL
SELECT
s.ShipmentId,
'Proof Of Delivery Received' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.DeliveryOverallStatus = 'C' -- 'POD Received'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Settlement Created' AS ActivityName,
fsd.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Dispute Created' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.DisputeStatus = '1' -- 'In Dispute'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Invoice Verified' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.OverallLifeCycleStatus = '06' -- 'Posted for Accruals'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Cancelled' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.LifeCycleStatus = 'X' -- 'Cancelled'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Payment Processed' AS ActivityName,
fsd.LastChangeDateTime AS EventTime, -- Approximation, actual payment is in ERP
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.InvoiceProcessingStatus = 'C' -- 'Completely Invoiced' ステップ
- CDSビューAPIの特定と有効化: SAP S/4HANAシステムにログインします。トランザクション
/IWFND/MAINT_SERVICEを使用して、主要なCDSビューに必要なODataサービスが有効になっていることを確認します。確認すべき主要サービスには、I_TransportationOrder、C_TranspOrdExecutionEvent、I_ForwardingOrder、I_FreightSettlementDocumentに関連するものが含まれます。有効でない場合は、SAP管理者と協力してバックエンドシステムから追加し有効化してください。 - API接続の確立: SAP管理者からODataサービスのルートURLを取得します。Pythonスクリプト(requestsライブラリを使用)、商用ETLツール、またはPostmanのようなツールなどのクライアントアプリケーションを設定して、APIに接続します。認証を設定する必要がありますが、通常はBasic認証(ユーザー名とパスワード)またはより安全な接続のためにOAuth 2.0を使用します。
- 抽出範囲の定義: データ抽出の範囲を決定します。例えば、過去6ヶ月間のように特定の日付範囲を定義します。分析するプロセスに関連するデータを確保するため、会社コードなどの関連する組織単位、または貨物オーダータイプなどの特定の文書タイプでフィルターする対象を特定します。
- ベース出荷クエリの構築: I_TransportationOrder CDSビューをクエリすることから始めます。このビューは、貨物オーダーまたは貨物ブッキングとしても知られる出荷の中心的なオブジェクトとして機能します。OData
$selectパラメーターを使用して、CarrierName、ModeOfTransport、RequestedDeliveryDateなどの推奨属性を含む必要な列を選択します。日付およびその他のスコープパラメーターでデータを制限するために$filterを適用します。 - 実行および輸送イベントのクエリ: C_TranspOrdExecutionEvent CDSビューを使用して、主要なロジスティクスイベントを抽出します。「貨物引取済み」(DEPARTURE)や「貨物配達済み」(ARRIVAL_AT_DESTINATION)などの活動に対応する特定の
EventCode値でこのビューをフィルターします。TransportationOrder UUIDを使用して、このデータをベース出荷データに結合します。 - 関連ビジネスオブジェクトのクエリ: 完全なプロセスを捕捉するには、他の関連するCDSビューをクエリする必要があります。I_ForwardingOrderを「輸送依頼受領」活動のためにクエリし、I_FreightSettlementDocumentを「貨物決済作成済み」、「貨物紛争作成済み」、「請求書確認済み」のような財務活動のためにクエリします。
- ステータスベースの活動の抽出: 多くの活動は個別のイベントではなく、主要文書のステータス変更です。「運送業者割り当て済み」、「運送業者による出荷確認済み」、「出荷キャンセル済み」のような活動については、I_TransportationOrderビューをクエリし、関連するステータスフィールドに関連付けられた
LastChangeDateTimeをイベント時間として使用します。これには、ステータスコードとビジネス活動の慎重なマッピングが必要です。 - データの統合と変換: すべてのソースから抽出されたデータを単一のイベントログ構造に統合します。抽出された各アクティビティについて、必要な列(ShipmentId、ActivityName、EventTime)を含む行を作成します。ベース出荷クエリからのすべての推奨属性がその出荷のすべての行に存在することを確認します。このステップは概念的にSQLの
UNION ALL操作に相当します。 - 複雑なイベントと外部イベントの処理: 「通関済み」や「支払処理済み」のような活動の場合、データは特定のフィールドまたは外部システムに存在する可能性があります。提供されているクエリロジックは標準フィールドをプロキシとして使用します。通関固有のCDSビューと結合したり、貨物決済伝票番号に基づいて支払いデータ用の別のERP抽出と関連付けたりするために、クエリを調整する必要があるかもしれません。
- ProcessMind向けにフォーマット: 最終的に統合されたデータセットをCSVファイルとして保存します。列ヘッダーがアップロード要件に一致していることを確認します。例えば、
ShipmentId列をツールの設定にあるCaseIdフィールドにマッピングします。タイムスタンプが一貫した形式、できればUTC (YYYY-MM-DDTHH:MM:SSZ) であることを確認します。
設定
- Core CDS Views: 抽出は主にI_TransportationOrder(貨物オーダー用)、C_TranspOrdExecutionEvent(実行イベント用)、I_ForwardingOrder(輸送依頼用)、I_FreightSettlementDocument(決済用)に依存します。
- 日付範囲フィルタリング: データ量を管理するために日付フィルターを適用することが重要です。I_TransportationOrder の
CreationDateTimeまたは C_TranspOrdExecutionEvent のActualBusinessDateTimeを使用します。最初の分析には3〜6ヶ月の範囲が推奨されます。 - 文書タイプフィルタリング: 分析に集中するため、
TransportationOrderTypeフィールドを使用して特定の文書タイプでフィルターします。これにより、標準出荷と在庫転送など、異なるロジスティクスシナリオを区別できます。 - 組織フィルター: 該当する場合、
PurchasingOrganizationやその他の組織レベルのフィールドでフィルターし、データを特定の事業単位または地域に限定します。 - APIページネーション: 大規模なデータセットの場合、ODataパラメーターの
$topと$skipを使用して、データをより小さなページで取得します。これにより、APIのタイムアウトを防ぎ、クライアント側のメモリ消費を削減できます。1000から5000行のページサイズがしばしば効果的です。 - 前提条件: 抽出を実行するユーザーまたはサービスアカウントは、基盤となるODataサービス(権限オブジェクト S_SERVICE)およびCDSビュー内のビジネスデータに対する権限が必要です。対応するサービスはSAP Gateway(
/IWFND/MAINT_SERVICE)で有効化されている必要があります。
a クエリ例 sql
WITH Shipments AS (
SELECT
TransportationOrder AS ShipmentId,
CarrierName,
TranspOrdExecutionBlockRsnCode,
TransportationMode AS ModeOfTransport,
ShippingType AS ShipmentType,
CreationDateTime AS ShipmentCreationTime,
LastChangeDateTime,
LifeCycleStatus,
ConfirmationStatus,
OverallExecutionStatus,
DeliveryOverallStatus,
PlannedDepDateTimeReqByCust AS RequestedDeliveryDate,
TotalChargesAmountInTransacCrcy AS TotalFreightCost
FROM I_TransportationOrder
WHERE
CreationDateTime >= '[START_DATE]' AND CreationDateTime <= '[END_DATE]'
-- AND TransportationOrderType IN ('[Your_Type_1]', '[Your_Type_2]')
)
SELECT
fwo.PurchasingDocument AS ShipmentId,
'Transportation Request Received' AS ActivityName,
fwo.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM I_ForwardingOrder AS fwo
LEFT JOIN Shipments s ON fwo.PurchasingDocument = s.ShipmentId
WHERE fwo.CreationDateTime >= '[START_DATE]' AND fwo.CreationDateTime <= '[END_DATE]'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Planned' AS ActivityName,
s.ShipmentCreationTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
UNION ALL
SELECT
s.ShipmentId,
'Carrier Assigned' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CarrierName IS NOT NULL
UNION ALL
SELECT
s.ShipmentId,
'Shipment Confirmed By Carrier' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.ConfirmationStatus = 'C' -- 'Confirmed'
UNION ALL
SELECT
s.ShipmentId,
'Goods Picked Up' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'DEPARTURE'
UNION ALL
SELECT
s.ShipmentId,
'Customs Declaration Filed' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsRelevance IS NOT NULL -- This is a proxy, system config dependent
UNION ALL
SELECT
s.ShipmentId,
'Customs Cleared' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsOverallStatus = '4' -- 'Customs Cleared'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Rerouted' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.TranspOrdExecutionBlockRsnCode = '[Your Rerouting Reason Code]'
UNION ALL
SELECT
s.ShipmentId,
'Goods Delivered' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'ARRIVAL_AT_DESTINATION'
UNION ALL
SELECT
s.ShipmentId,
'Proof Of Delivery Received' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.DeliveryOverallStatus = 'C' -- 'POD Received'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Settlement Created' AS ActivityName,
fsd.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Dispute Created' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.DisputeStatus = '1' -- 'In Dispute'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Invoice Verified' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.OverallLifeCycleStatus = '06' -- 'Posted for Accruals'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Cancelled' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.LifeCycleStatus = 'X' -- 'Cancelled'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Payment Processed' AS ActivityName,
fsd.LastChangeDateTime AS EventTime, -- Approximation, actual payment is in ERP
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.InvoiceProcessingStatus = 'C' -- 'Completely Invoiced' ステップ
- データ要件の定義: 必要な15のアクティビティとすべての属性について、正確なロジックを確認することから始めます。これには、各アクティビティをSAP TMシステム内の特定のステータス変更、作成イベント、または文書リンクにマッピングすることが含まれます。例えば、「貨物引取済み」を示す正確な実行ステータスを特定します。
- ABAP開発環境へのアクセス: SAP GUIにログインし、トランザクションコード
SE38を使用してABAPエディターに移動します。新しいプログラム名(例:ZTM_PROCESS_EXTRACT)を入力し、「作成」をクリックします。タイトルを提供し、プログラムタイプを「実行可能プログラム」に設定します。 - 選択画面の作成: プログラムで、ユーザーが表示する選択画面を定義します。これには、貨物オーダー作成日 (
SO_CREDT) の日付範囲や、文書タイプ (SO_TYPE) または運送業者 (SO_CARR) の選択オプションなど、データをフィルタリングするためのパラメーターを含める必要があります。 - 出力構造の定義: 必要なイベントログ形式に一致する内部テーブル構造を定義します。この構造には、
ShipmentId、ActivityName、EventTime、EndTime、CarrierName、RequestedDeliveryDate、ModeOfTransport、TotalFreightCost、IsOnTimeDeliveryのフィールドを含める必要があります。 - データ選択ロジックの実装: 15のアクティビティそれぞれについてデータを抽出するメインのABAPロジックを記述します。これは通常、複数のSAP TMテーブルをクエリすることを含みます。まず、指定された日付範囲内で貨物オーダーなどの主要な出荷文書を選択することから始めます。
- 計画および実行イベントの抽出: 選択された各出荷文書(例:貨物オーダー)について、関連テーブルおよびビジネスオブジェクトをクエリして、異なるイベントのタイムスタンプを見つけます。
/SCMTMS/D_TORROTテーブルは、貨物オーダーの作成(「出荷計画済み」)、運送業者割り当て(「運送業者割り当て済み」)、および「貨物引取済み」と「貨物配達済み」に対応する実行ステータス変更に使用します。先行するフォワーディングオーダー (/SCMTMS/D_TRQROT) の作成は、「輸送依頼受領」を示すことができます。 - 運送業者確認と経路変更の抽出: 貨物オーダーに関連付けられたステータステーブルまたは変更文書(CDHDR/CDPOS)をクエリして、
CONFIRMATIONステータスが設定された時期を特定します。これは「運送業者による出荷確認済み」を捕捉します。同様に、経路情報の重要な変更を探して、「出荷経路変更済み」を捕捉します。 - 通関イベントの抽出: SAP Global Trade Services (GTS) または類似のモジュールを使用している場合、通関イベント(「通関申告済み」、「通関済み」)は、関連文書を介して追跡されることがよくあります。ロジックは、貨物オーダーの文書フロー (
/SCMTMS/D_TORDOC) を読み取り、これらの関連文書とその作成またはステータス変更時刻を見つける必要があります。 - 決済および紛争イベントの抽出: 貨物決済伝票ヘッダーテーブル (
/SCMTMS/D_SFIRHD) およびその関連項目とステータスをクエリして、「貨物決済作成済み」、「貨物紛争作成済み」、「請求書確認済み」イベントを捕捉します。これらを元のShipmentIdにリンクし直します。 - データ統合: 見つかった各イベントについて、最終的な内部テーブルに新しいレコードを作成します。
ActivityNameに対応するアクティビティ、EventTimeにイベントのタイムスタンプ、ShipmentIdに貨物オーダーまたは貨物ブッキングIDを入力します。ソース文書から他の属性を記入します。 - ファイルのフォーマットとエクスポート: 最終的な内部テーブルが完全に作成されたら、データをフラットファイルにフォーマットします。
OPEN DATASET、LOOP AT... TRANSFER...、CLOSE DATASETコマンドを使用して、内部テーブルの内容をSAPアプリケーションサーバー上のCSVまたはTXTファイルに書き込みます(トランザクションAL11経由でアクセス可能)。 - スケジュールと取得: ABAPプログラムは、バックグラウンドジョブ(トランザクションSM36)として実行するようにスケジュールでき、データを自動的に抽出します。生成されたファイルは、トランザクション
CG3Yを使用してアプリケーションサーバーからローカルマシンにダウンロードし、ProcessMindにアップロードできます。
設定
- 日付範囲: 選択画面には、主要な輸送文書(例:貨物オーダー)の作成日に対する必須の日付範囲を含める必要があります。最初の分析では、過剰なランタイムを発生させることなく、代表的なデータセットを確保するために3〜6ヶ月の範囲が推奨されます。
- 文書タイプフィルター: 輸送文書タイプ(例:貨物オーダー、貨物ブッキング)のフィルターを提供します。これは、陸上貨物輸送と海上貨物輸送のような特定のプロセスに分析を集中させるために重要です。
- 運送業者フィルター: ユーザーが特定の運送業者でフィルターできるようにします。これは、個々のロジスティクスパートナーのパフォーマンスを分析するのに役立ちます。
- 組織フィルター: 特定の事業領域に抽出を絞り込むために、購買組織や会社コードなどの関連する組織単位のフィルターを含めます。
- パフォーマンス最適化: 大規模なデータセットの場合、ABAPコードが
WHERE句でインデックス付きデータベースフィールドを使用し、可能な限りネストされたループを避け、メモリ消費を最小限に抑えるためにデータベースから必要なフィールドのみを選択するようにします。 - 前提条件: レポートを実行するユーザーはABAPプログラムを実行するための権限が必要です。開発者は
S_DEVELOP権限が必要です。プログラム自体は、アプリケーションサーバー上のファイルシステムアクセス(オブジェクトS_DATASET)および関連するTMデータベーステーブルとBOPFオブジェクトへのアクセスに対する権限が必要です。
a クエリ例 abap
REPORT ztm_process_extract.
*&---------------------------------------------------------------------*
*& Data Structures
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_s_event_log,
shipmentid TYPE /scmtms/tor_id,
activityname TYPE string,
eventtime TYPE timestamp,
endtime TYPE timestamp,
carriername TYPE string,
requesteddeliverydate TYPE timestamp,
modeoftransport TYPE /scmtms/mot,
totalfreightcost TYPE /scmtms/chargeable_weight,
isontimedelivery TYPE abap_bool,
END OF ty_s_event_log.
DATA: lt_event_log TYPE TABLE OF ty_s_event_log.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: so_credt FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: so_torid FOR /scmtms/d_torrot-tor_id.
SELECT-OPTIONS: so_carr FOR /scmtms/d_torrot-lsp_id.
*&---------------------------------------------------------------------*
*& Main Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
DATA: ls_event_log TYPE ty_s_event_log.
" Select base data: Freight Orders (Shipments)
SELECT tor_id, tor_cat, lsp_id, mot_code, cretd_tst, btd_tstmp_end
FROM /scmtms/d_torrot
INTO TABLE @DATA(lt_tor_root)
WHERE CAST( cretd_tst AS DATS ) IN @so_credt
AND tor_id IN @so_torid
AND lsp_id IN @so_carr.
IF lt_tor_root IS INITIAL.
MESSAGE 'No data found for the given selection.' TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
" Loop through each shipment to build the event log
LOOP AT lt_tor_root INTO DATA(ls_tor_root).
" 1. Transportation Request Received (Approximation from FWO creation)
SELECT SINGLE created_at_utc FROM /scmtms/d_trqrot
WHERE db_key IN ( SELECT trq_root_key FROM /scmtms/d_tordoc
WHERE parent_key = @ls_tor_root-db_key AND bo_node_cat = 'TRQ_ROOT' )
INTO @DATA(lv_trq_created_ts).
IF sy-subrc = 0.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Transportation Request Received'.
ls_event_log-eventtime = lv_trq_created_ts.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 2. Shipment Planned
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Planned'.
ls_event_log-eventtime = ls_tor_root-cretd_tst.
APPEND ls_event_log TO lt_event_log.
" 3. Carrier Assigned
IF ls_tor_root-lsp_id IS NOT INITIAL.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Carrier Assigned'.
ls_event_log-eventtime = ls_tor_root-cretd_tst. " Approximated with creation time
APPEND ls_event_log TO lt_event_log.
ENDIF.
" Get statuses from /SCMTMS/D_TORSTA
SELECT status, tstmp FROM /scmtms/d_torsta
INTO TABLE @DATA(lt_statuses)
WHERE parent_key = @ls_tor_root-db_key.
" 4. Shipment Confirmed By Carrier
READ TABLE lt_statuses WITH KEY status = 'CONFIRMED' INTO DATA(ls_conf_status).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Confirmed By Carrier'.
ls_event_log-eventtime = ls_conf_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 5. Goods Picked Up
READ TABLE lt_statuses WITH KEY status = 'LOADING_END' INTO DATA(ls_pickup_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Goods Picked Up'.
ls_event_log-eventtime = ls_pickup_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 6. Customs Declaration Filed (Placeholder logic)
" 7. Customs Cleared (Placeholder logic)
" 8. Shipment Rerouted (Placeholder logic, needs change documents)
" 9. Goods Delivered
READ TABLE lt_statuses WITH KEY status = 'UNLOADING_END' INTO DATA(ls_delivery_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Goods Delivered'.
ls_event_log-eventtime = ls_delivery_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 10. Proof Of Delivery Received
READ TABLE lt_statuses WITH KEY status = 'POD_RECEIVED' INTO DATA(ls_pod_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Proof Of Delivery Received'.
ls_event_log-eventtime = ls_pod_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 11. Freight Settlement Created
SELECT SINGLE created_at_utc FROM /scmtms/d_sfirhd
WHERE db_key IN ( SELECT sfir_root_key FROM /scmtms/d_tordoc
WHERE parent_key = @ls_tor_root-db_key AND bo_node_cat = 'SFIR_ROOT' )
INTO @DATA(lv_fsd_created_ts).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Freight Settlement Created'.
ls_event_log-eventtime = lv_fsd_created_ts.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 12. Freight Dispute Created (Needs logic based on dispute status in SFIR)
" 13. Invoice Verified (Needs logic based on invoice status in SFIR)
" 14. Shipment Cancelled
READ TABLE lt_statuses WITH KEY status = 'CANCELLED' INTO DATA(ls_cancel_status).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Cancelled'.
ls_event_log-eventtime = ls_cancel_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 15. Payment Processed (Data is typically in the ERP system, not TM)
ENDLOOP.
" Final step: Write lt_event_log to a file on the application server
DATA(lv_filepath) = '/usr/sap/trans/[YourInstance]/[YourFileName].csv'.
OPEN DATASET lv_filepath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
" Write header
DATA(lv_header) = 'ShipmentId,ActivityName,EventTime'.
TRANSFER lv_header TO lv_filepath.
" Write data
LOOP AT lt_event_log INTO ls_event_log.
DATA(lv_line) = |{ ls_event_log-shipmentid },{ ls_event_log-activityname },{ ls_event_log-eventtime }|.
TRANSFER lv_line TO lv_filepath.
ENDLOOP.
CLOSE DATASET lv_filepath.
ELSE.
MESSAGE 'Error opening file on application server.' TYPE 'E'.
ENDIF.
ENDFOR.