補充エンジンのコールの概要

このセクションでは、指定された開始期間から、指定された期間までの品目と場所の組合せに対する計画オーダーを生成するために、マクロを使用して補充エンジンを呼び出すプロセスについて説明します。

事前要件:

ユーザーは、現在のサイクルで定義されている補充エンジンに加えて、マクロへのアクセス権を持っている必要があります。そうでない場合、次のエラーが実行時にマクロにより表示されます。

「補充エンジン {0} は、ユーザー {1} にアクセスできません。」

データセキュリティルールは、計算のために補充エンジンに渡される品目および場所要素を決定するときに、マクロを実行する現在のユーザーに適用されます。次に例を示します。

  • CallReplenishmentEngine ("Brand A", "US", "", "")
  • 現在のユーザーのデータセキュリティで、「ブランド A」または品目階層で「ブランドA」にリンクされた基本品目を表示できない場合、選択内容はエンジンに渡されません。
  • ユーザーが「ブランド A」にリンクされている基本要素のサブセットにアクセスできる場合、スケジュールはこれらの品目についてのみ計算されます。
  • ユーザーのデータセキュリティにより場所階層の US または基本場所を表示できない場合、選択されたデータはエンジンに渡されません。
  • ユーザーが場所階層の US にリンクされた基本場所のサブセットにアクセスできる場合、スケジュールはこれらの場所についてのみ計算されます。

補充エンジンのコール

CallReplenishmentEngine マクロコマンドを使用して補充エンジンを呼び出すための基本的な順序は次のとおりです。

  • 現在のサイクルに定義されている補充エンジンを決定します。
  • スケジュールする品目と場所を決定します。
  • 他のマクロパラメーターを処理します。

補充エンジンを呼び出すには、次の手順を実行します。

  1. [設定] > [サイクル] > [マクロ] の順に選択します。 [マクロ] ページが表示されます。
  2. 新しいマクロコマンド CallReplenishmentEngine を作成します。「マクロの作成」を参照してください。
  3. エンジン構成の供給割り当てマッピングメジャーと属性を管理します。
    注: すべての供給割り当てマッピングは必須で、正しい属性が選択されていることを検証する必要があります。
  4. 補充エンジンの品目および場所メジャーマッピングを使用して、スケジュールされるすべての品目と場所の組合せについて、スケジュールルールを取得します。補充エンジンは、スケジュールルールが表示されているマクロコールのすべての品目および場所の組合せを処理します。
  5. スケジュールするすべての品目と場所の組合せの順序 ID を取得します。品目と場所の組合せは、順序 ID の昇順でエンジンに順序付けられて渡されます。このプロセスでは、すべての品目および場所の組合せが供給ネットワークを介して最新の所要量を渡すように処理されます。たとえば、エンジンによって生成された倉庫の計画オーダーは所要量として製造ファシリティに渡されます。
    注: 
    • 順序 ID に基づき、各品目の補充エンジンへのロケーションコールを準備および順序付けします。
    • 順序 ID が定義されていない場合、品目と場所の組合せが順番に順序付けられます。結合された品目と場所の組合せが順番に順序付されていない場合、予期しない結果が生じることがあります。
  6. 現在の品目および場所のデフォルトソースメソッドを検証します。
    • マップされたデフォルトソースメソッド値が 1、2 または 3 ではない場合、品目と場所の組合せは考慮されません。次のエラーメッセージがエンジン破棄ログに書き込まれます。
      ソースメソッド {1} は無効です。値は 1、2 または 3 でなければなりません。
  7. 現在の品目および場所の増分を検証します。
    • このパラメーターは、対応する供給割り当てまたはデフォルトソースメソッドにリンクされたメジャーマッピングにマッピングされます。
      • 1 (転送) = 転送元メジャーのマッピング
      • 2 (購入) = 購入メジャーのマッピング
      • 3 (生産、製造) = プロセスメジャーのマッピング
      注: マップされた増分値が null または </= 0 の場合、品目および場所の組合せは考慮されず、次のエラーメッセージがエンジン破棄ログに書き込まれます。
      増分 {1} は無効です。値は 0 より大きくなければなりません。
  8. 現在の品目および場所の受入カレンダー ID を検証します。次のようなシナリオがあります。
    • 現在のエンジンのエンジンカレンダーのマッピングにマップされた ID が定義されていない場合、品目および場所の組合せは考慮されず、次のエラーメッセージがエンジン破棄ログに書き込まれます。
      受入カレンダー ID {1} が見つかりません。
    • 受入カレンダー ID メジャーに対して値がマッピングされていない場合、現在のエンジンのエンジンカレンダーのマッピングのデフォルトのカレンダーが使用されます。
    • デフォルトのカレンダーが定義されていない場合、品目と場所の組合せは考慮されず、次のエラーメッセージがエンジン処理破棄ログに書き込まれます。
      受入カレンダー ID {1} が見つかりません。
  9. 現在の品目および場所のスケジュールルールを検証します。ルール 1 または 2 の場合は、次のとおりです。
    1. 生産プロセスの取得:
      1. 品目が工順またはプロセス ID を伴うアウトフロー係数である生産プロセスの配列を作成します。
        • Formula_item = 現在の品目、かつ Formula_location = 現在の場所であるときに、マップされたアウトフロー係数および Formula_measure がゼロ以外の値であることを確認します。
        • Process_location = 現在の場所、かつ Process_routing = 現在のアウトフロー工順であるときに、配列内の各アウトフロープロセスに対する割り当てが見つかった場合、Process_measure が TUPLE、ゼロ以外の値であることを確認します。
        • 割り当てが見つからない場合は、配列からアウトフロープロセスを削除します。
      2. 品目が工順またはプロセス ID を伴うインフロー係数である生産プロセスの配列を作成します。
        • Formula_item = 現在の品目、かつ Formula_location = 現在の場所であるときに、マップされたインフロー係数および Formula_measure がゼロ以外の値であることを確認します。
        • Process_location = 現在の場所、プロセス工順 = 現在のインフロー工順であるときに、配列内の各インフロープロセス対する割り当てが見つかった場合、Process_measure が TUPLE、ゼロ以外の値であることを確認します。
        • 割り当てが見つからない場合は、配列からインフロープロセスを削除します。
    2. 既存の計画オーダーを削除します。
      • 「計画」タイプに対しエンジンのオーダーマッピングにマップされた定義の、オーダーデータレコードを削除します。
        • TransferIn_Item = 現在の品目、かつ TransferIn_Destination = 現在のインフロー工順であるときに、計画転送オーダーを削除します。
        • Purchases_item = 現在の品目、かつ Purchases_location = 現在の場所であるときに、計画購入オーダーを削除します。
      • 現在の品目および場所のアウトフロープロセスが存在するかどうかを確認します。ステップ 9.a を参照してください。
      • アウトフロープロセス数の各プロセスについて、次を実行します。
        • Process_location = 現在の場所、および Process_routing = 現在の Outflow_process 工順であるときに、計画製造オーダーを削除します。
        • オーダー開始オフセット > 0 の場合、データレコードの納入日 >= 現在の計画期間の開始日 + オーダー開始オフセット (日数) であるレコードを削除します。それ以外の場合は、すべての日付のマッピングされたオーダーを削除します。
    3. 指定されたデフォルトのソースメソッドの、デフォルトのオーダー要素を取得します。次のシナリオがあります。
      • ソースメソッド = 1 (転送):
        • TransferIn_Item = 現在の品目、TransferIn_Destination = 現在の場所、Transfer_Source = TransferIn_Source の値のときに、TransferIn_measure が TUPLE、ゼロ以外の値であることを確認します。
        • TransferOut_Item = 現在の品目、TransferOut_Destination = 現在の場所、TranferOut_Source = Transfer Source であるときに、TransferOut_measure が TUPLE、ゼロ以外の値であることを確認します。
        • オーダー品目 = Transfer In_TUPLE 品目要素、Order_destination = Transfers In_TUPLE 場所要素、Order_source = Transfers Out_TUPLE 場所要素です。
      • ソースメソッド = 2 (購入):
        • Purchase_item = 現在の品目、Purchase_location = 現在の場所、Order_item = Purchases_TUPLE 品目要素、Order Destination = Purchases_TUPLE 場所要素、Order_source = Purchases_TUPLE 場所要素であるときに、Purchase_measure が TUPLE、ゼロ以外の値であることを確認します。
      • ソースメソッド = 3 (製造):
        • アウトフロープロセス数が 0 より大きいときに、Order_Item = ICONST、Order_destination = 最初のアウトフロープロセスの場所要素、Order_Source = 最初のアウトフロープロセスの場所要素です。ステップ 9.c を参照してください。
        • 指定されたソースメソッドにデフォルトの TUPLE が定義されていない場合、品目および場所の組合せは考慮されず、次のエラーがエンジン処理破棄ログに書き込まれます。
          ソースメソッド {1} のソース場所が見つかりません。
    注: 
    • ルール = 1 の場合、品目と場所の組合せの標準のスケジュールロジックに基づいてエンジンをコールします。
    • ルール = 2 の場合、ROP スケジュールロジックの品目および場所の組合せに基づいてエンジンをコールします。
    • ルールが 0、1、または 2 以外の場合、品目および場所の組合せはスキップされ、次のエラーがエンジンプロセス破棄ログに登録されます。
      スケジュールルール {1} は無効です。値は 0、1 または 2 でなければなりません。 
  10. 補充エンジンオーダーマッピングに基づいて補充エンジンの結果セットから必要な結果を取得し、その結果をオーダー (トランザクションデータ) 値に適用します。
    • 対応するシナリオ値が計画オーダーマッピングと同期されます。
    • エンジンの結果は、オーダーデータに基づいて、サイクル期間の将来の期間 (対応するオーダー日に基づく) の期間に書き込まれます。
    • ユーザーがアクセスしたエンジンに、将来の期間全体へのアクセスを制限するような期間ディメンションのデータセキュリティルールがある場合は、許可されたオーダーのみの結果が保存されます。
  11. 補充エンジンの結果セットから必要な結果を取得し、その結果をシナリオ値 (マップされた他の品目場所の出力結果) に補充エンジンのメジャーマッピングデータに基づいて適用します。マップされたメジャーに基づくエンジンの結果は、定数として PCONST に書き込まれます。
  12. 補充エンジンへのコールの結果は、次のようにジョブマネージャーおよび監査ログに出力されます。
    • 補充エンジンコールがエラーで完了すると、監査ログメッセージに破棄ログが添付されます。
    • 有効な組合せの処理は、個別の品目、場所エラーによって妨げられません。
    • スケジュール準備の無効な品目と場所の組合せ、またはエラーコードを含むエンジンルールロジックからの戻り値は、エラーの詳細とともに破棄ログに書き込まれます。