SAP_PLM_VariantConfiguration解説

SAP Variant Configuration 解説

技術設定・依存関係・AVC・統合設計の詳細ガイド

2026年6月

はじめに:VCが必要な理由と全体アーキテクチャ

製造業において「顧客ごとに仕様が異なる製品」を効率的に管理することは、ERP設計の最難関テーマの一つです。SAP Variant Configuration(VC)はこの課題に対する解答として、「一つのコンフィギュラブル品目(KMAT)と製品モデル(特性・クラス・依存関係)から、受注時の顧客選択に応じてBOM・ルーティング・価格を動的に生成する」仕組みを提供します。

VCを正しく設計・実装するには「特性(CT04)・クラス(CL02)・コンフィギュラブル品目(KMAT)・スーパーBOM・スーパールーティング・依存関係(CU01〜CU04)・コンフィギュレーションプロファイル(CU41)」という七つのオブジェクトの関係と、各オブジェクトの詳細な技術設定を理解することが必要です。本稿ではそれらを設定手順・構文・制約事項まで含めて徹底的に解説します。

VCの全体オブジェクト関係図

1. 特性(Characteristic)の詳細設定 — CT04

特性の基本構造

特性(Characteristic)はVCにおける「選択肢の軸」です。CT04で作成・管理します。特性はDMS・Classification等の他SAPモジュールとも共用されますが、VC専用の設定項目が存在します。

データ型と技術パラメータ

文字型(CHAR)

文字型は「外装色・素材・製品グレード」等のカテゴリ値に使用します。

数値型(NUM)

数値型は「電圧・出力・重量・サイズ」等の量的な値に使用します。

日付型(DATE)・時刻型(TIME)

VC用途での使用は限定的ですが、「有効開始日・生産開始予定日」等の時間的な仕様軸が必要な場合に使用します。依存関係での日付比較には専用の関数(DATE_TO_DAYS等)を使用します。

VC固有の特性設定タブ

「Additional Values」の制御

「Chars」タブ(特性の追加属性)

特性の多言語設定

特性の「説明(Description)」と「固定値のテキスト」は多言語で設定できます。CT04の言語切替ボタンで日本語・英語等の説明を個別に入力します。コンフィギュレーション画面の表示言語はログインユーザーの言語設定に依存するため、使用するすべての言語でテキストを設定することが必須です。設定漏れがあると特定言語のユーザーに文字化けまたは空白が表示されます。

2. クラス(Class)の詳細設定 — CL02

クラスタイプ300(Configuration Class)の特性

VCで使用するクラスはクラスタイプ「300(Configuration Class)」です。クラスタイプ300は他のクラスタイプ(001:汎用・002:材質等)と異なり、VC専用の属性を持ちます。

クラス階層とクラスノード

VCの高度な機能として「クラスノード(Class Node)」があります。スーパーBOMの明細に品目ではなく「クラス」を配置し、コンフィギュレーション時にそのクラスに属する品目の中から動的に品目を選択する仕組みです。

3. コンフィギュラブル品目(KMAT)の設定 — MM01/MM02

品目タイプKMATの特性

コンフィギュラブル品目は品目タイプ「KMAT」で作成します。通常の完成品(FERT)と異なる重要な設定があります。

主要ビューと設定項目

基本データ2ビュー

MRP 2ビュー

販売:一般/プラントデータビュー

分類ビュー(Classification)

コンフィギュレーションプロファイル(CU41)の詳細

コンフィギュレーションプロファイルはKMATのVC動作を制御する設定レコードです。CU41(作成)/CU42(変更)/CU43(表示)で管理します。一つのKMATに対して複数のプロファイルを作成し、用途(見積・受注・製造指図)ごとにプロファイルを切り替えることも可能です。

プロファイルの主要設定項目

4. スーパーBOM:選択条件と数量式の技術詳細

スーパーBOMの設計思想

スーパーBOM(Super BOM)は「あらゆるバリアントで使用される可能性のある全部品を一つのBOMに列挙したもの」です。各明細に「選択条件(Selection Condition)」を付与し、特定の特性値組み合わせの場合のみその明細が有効となります。

スーパーBOMの設計原則として「常にすべてのバリアントに使用される部品」と「特定バリアントにのみ使用される部品」を混在させます。前者は選択条件なし(無条件有効)、後者に選択条件を付与します。

BOM明細の選択条件設定

CS01/CS02でBOM明細を選択し、「Extra → Conditions(条件)」メニューまたは明細タブ「Conditions」から選択条件を入力します。選択条件は依存関係構文で記述します。

選択条件の基本構文

$self.COLOR = 'RED'

上記は「COLOR特性の値がREDの場合、この明細を有効にする」という選択条件です。$selfはコンフィギュレーション対象の品目自身を指す参照語です。

複合条件(AND / OR)

$self.COLOR = 'RED' AND $self.GRADE = 'PREMIUM'

$self.COLOR = 'RED' OR $self.COLOR = 'WHITE'

ANDとORの組み合わせには括弧を使用して優先順位を明示します。

($self.COLOR = 'RED' OR $self.COLOR = 'WHITE') AND $self.GRADE = 'PREMIUM'

数値比較演算子

$self.ENGINE_OUTPUT > 200

$self.ENGINE_OUTPUT >= 150 AND $self.ENGINE_OUTPUT <= 250

数値型特性との比較には「>・<・>=・<=・=・<>(不等号)」が使用できます。

IN演算子(複数値の一括指定)

$self.COLOR IN ('RED', 'WHITE', 'SILVER')

INを使うと複数値のOR条件を簡潔に記述できます。

数量式(Quantity Formulas)

BOM明細の数量を固定値でなく、特性値に基づいた計算式で指定できます。数量欄の右側にある「Quantity Formula」フィールドに式を入力します。

数量式の基本構文

$self.NUM_FLOORS * 4

例:ビル構造物で「フロア数(NUM_FLOORS)×4本」のボルトが必要な場合の数量式。

ROUND($self.WEIGHT / 10, 0)

例:重量(WEIGHT)を10で割った値を切り上げた数量。

条件付き数量(IF式)

IF $self.OPTION = 'HEAVY' THEN 8 ELSE 4

OPTIONがHEAVYなら数量8、それ以外は4を返す条件式。

BOM明細の有効期間とVCの組み合わせ

スーパーBOMの明細には「有効期間(Valid From / Valid To)」を設定できます。選択条件と有効期間を組み合わせることで「2026年10月1日以降の受注で、かつCOLOR = REDの場合のみ有効」という精密な制御が可能です。ECM(エンジニアリング変更管理)と連動して、変更番号による有効化も設定できます。

5. スーパールーティング:工程選択条件の設定

スーパールーティングの構造

スーパールーティング(Super Routing)はCA01でKMAT品目に対して作成します。通常のルーティングと同様に工程(Operation)を列挙しますが、各工程に選択条件を付与する点が異なります。

工程への選択条件付与

CA01/CA02でルーティングを開き、工程を選択し「Extras → Conditions」から選択条件を入力します。構文はBOM明細の選択条件と同一です。

参照工程との組み合わせ

スーパールーティング内で「参照作業手順(Reference Operation Set)」を使用することで、複数の製品で共通する工程(品質検査・梱包・洗浄等)を一元管理できます。スーパールーティングに参照工程をリンクし、参照工程自体に選択条件を付与します。参照工程の変更がすべての参照元スーパールーティングに即時反映されます。

6. 依存関係:完全技術リファレンス

依存関係オブジェクトの種類とトランザクション

依存関係(Dependencies)はCU01〜CU04のトランザクションで管理します。

依存関係はKU01等(依存関係一覧)やCU05(依存関係の特性への割り当て)で管理します。依存関係は直接オブジェクト(BOM明細・特性の固定値)に埋め込むか、独立したオブジェクト(CU01〜CU04)として作成して参照する二つの方法があります。再利用性の高い依存関係は独立オブジェクトとして定義します。

依存関係の構文:完全リファレンス

変数と参照語

基本演算子

= 不等号:<>

> >= < <=

AND OR NOT

IN ('A', 'B', 'C')

数値関数

文字列関数

特殊変数

前提条件(Precondition)の詳細

前提条件は「特性の固定値が選択画面に表示される条件」を定義します。前提条件を満たさない場合、その固定値はコンフィギュレーション画面のドロップダウンに表示されません。

前提条件の割り当て方法

CT04で特性を開き、「Values」タブで固定値を選択→「Extras → Object Dependencies → Preconditions」で依存関係を入力します。

設定例:エンジン出力に応じたターボ選択肢制御

/* ターボ特性の値「YES」への前提条件 */

$self.ENGINE_OUTPUT > 150

ENGINE_OUTPUTが150kWを超えている場合のみ「ターボ=YES」が選択画面に表示されます。150kW以下のエンジンが選択された状態では「YES」は非表示となり、「NO(または空白)」のみ選択可能です。

アクション(Action / Procedure)の詳細

アクションは「ある特性値が選択されたとき、他の特性値を自動設定する」処理です。CU03で独立オブジェクトとして定義するか、CT04の特性固定値に直接埋め込みます。

アクション構文(IF-THEN-ELSE)

IF $self.COLOR = 'WHITE'

THEN

$self.INTERIOR = 'GREY'

END_IF

IF $self.GRADE = 'PREMIUM'

THEN

$self.WARRANTY = '5Y'

$self.SUPPORT = 'GOLD'

END_IF

一つのアクションで複数の特性値を設定できます。THEN句に複数の代入文を記述します。

ELSEIF構文

IF $self.ENGINE_OUTPUT > 300

THEN

$self.COOLING = 'WATER_RACE'

ELSEIF $self.ENGINE_OUTPUT > 150

THEN

$self.COOLING = 'WATER_STD'

ELSE

$self.COOLING = 'AIR'

END_IF

アクションの割り当て方法

アクションはCT04の「Values」タブで固定値を選択→「Extras → Object Dependencies → Actions」で紐付けます。「この値が選択されたときに実行するアクション」という意味付けです。あるいは特性自体にアクションを紐付けることで「この特性に値が入力されたとき(どの値でも)実行する」処理を定義できます。

制約ネット(Constraint Net)の詳細設計

制約ネットのアーキテクチャ

制約ネット(Constraint Net)はSCE(Solution and Constraint Engine)が処理する宣言的ルール群です。通常の依存関係(IF-THEN型)と異なり「双方向推論(Bidirectional Inference)」をサポートします。一組の特性間の関係を一度だけ記述すれば、どちらの特性が確定しても他方が自動的に推論されます。

制約の構文

制約ネット内の個々の制約(Constraint)は以下の構文で記述します。

CONSTRAINT constraint_name

CONDITION

<前提条件式(この制約が適用される条件)>

RESTRICTIONS

<制限式(等式・不等式・集合条件)>

制約ネットの例:エンジン出力と燃料タイプの整合性

CONSTRAINT ENGINE_FUEL_COMPAT

CONDITION

$self.ENGINE_OUTPUT IS NOT INITIAL

AND $self.FUEL_TYPE IS NOT INITIAL

RESTRICTIONS

( $self.FUEL_TYPE = 'DIESEL'

AND $self.ENGINE_OUTPUT >= 100 )

OR

( $self.FUEL_TYPE = 'GASOLINE'

AND $self.ENGINE_OUTPUT IN [80, 100, 120, 150, 200] )

この制約ネットは「ディーゼルなら出力100kW以上・ガソリンなら80/100/120/150/200kWのみ」という制約を双方向で強制します。FUEL_TYPEが先に選択されたときも、ENGINE_OUTPUTが先に選択されたときも、SCEが両方の整合性を検証します。

制約ネットの表条件(Table Condition)

複雑な組み合わせルールをコードで書かずに「テーブル(Characteristics Table)」として定義することで可読性を大幅に高める機能です。

CONSTRAINT VALID_COMBINATIONS

RESTRICTIONS

TABLE (

$self.VOLTAGE, $self.FREQ, $self.REGION

100, 50, 'JAPAN'

100, 60, 'US'

220, 50, 'EUROPE'

240, 50, 'UK'

)

この表条件は「電圧・周波数・地域」の有効な組み合わせを一覧で定義します。SCEはこの表に存在しない組み合わせを自動的に無効とします。

制約ネットの有効化(CU41でSCE有効化)

制約ネットを機能させるには、コンフィギュレーションプロファイル(CU41)で「SCE Usage」をONにする必要があります。SCE有効時は全制約ネットがコンフィギュレーションセッション中に常に評価されます。制約ネットが多い・複雑な場合は応答性能に影響するため、制約ネットの数と複雑さを最小限に抑える設計が重要です。

7. コンフィギュレーションのシミュレーションと検証

CU50:コンフィギュレーションシミュレーター

CU50はVCモデルの設定テストツールです。実際の受注・製造指図を作成せずにコンフィギュレーションの動作を検証できます。

CU50の操作手順

完了チェック(Completeness Check)

コンフィギュレーションが完了しているか(必須特性すべてに値が入力されているか)を判定するのが「完了チェック(Completeness Check)」です。

依存関係のデバッグ

依存関係が期待通りに動作しない場合のデバッグ方法を示します。

8. VCとSD(受注処理)の統合

受注コンフィギュレーション(VA01)のフロー

受注(VA01)でKMAT品目を入力すると、自動的にコンフィギュレーション画面が開きます。担当者が特性値を選択し、コンフィギュレーションが完了すると以下の処理が自動実行されます。

バリアント価格(Variant Pricing)の設定

VCの価格設定はSD条件テクニック(Condition Technique)に基づきます。設定手順を示します。

ステップ1:バリアント条件タイプの定義(V/VC)

IMG → 販売管理 → 基本機能 → 価格設定 → 価格設定管理 → 条件タイプの保守。標準の条件タイプ「VA00(バリアント価格差額)」を使用するか、カスタム条件タイプを作成します。

ステップ2:条件テーブルの設定

バリアント条件の条件テーブルには「コンフィギュラブル品目番号+特性+特性値」の組み合わせでキーが構成されます。IMG → 販売管理 → バリアント構成 → 価格設定 → バリアント価格設定の条件テーブルを作成します。VCの特性をキー項目として条件テーブルに追加するには「特性参照フィールド」の設定が必要です。

ステップ3:条件レコードの作成(VK11/VK12)

VK11でバリアント条件レコードを作成します。「KMATの品目番号・特性名・特性値・価格差額(Surcharge または Discount)」を入力します。

コンフィギュレーションとATP(納期回答)

KMATの受注コンフィギュレーション後、MTO(受注生産)またはMTS(見込み生産)に応じてATP(Available to Promise)チェックが実行されます。

9. VCとPP(製造)の統合

製造指図でのコンフィギュレーション

MTO生産では受注明細からコンフィギュレーションが製造指図に引き継がれます。受注のコンフィギュレーション値(特性値)が製造指図のコンフィギュレーション(CUOV)にコピーされ、製造指図のBOM爆発・ルーティング取込でスーパーBOM・スーパールーティングの選択条件評価に使用されます。

BOM爆発(CO01/CO41)でのVC動作

製造指図(CO01)作成時または計画指図(MD16/CO41)の指図変換時に、スーパーBOMが展開(爆発)されます。このとき「コンフィギュレーション値と選択条件の照合」が実行され、有効な明細のみが製造指図コンポーネント(AFKO/AFPO/RESB)に取り込まれます。

ルーティング取込でのVC動作

製造指図作成時にスーパールーティングが取り込まれます。各工程の選択条件がコンフィギュレーション値と照合され、有効な工程のみが製造指図工程(AFVC)に取り込まれます。選択条件なしの工程は常に取り込まれます。

製造指図での再コンフィギュレーション

製造指図が作成済みの状態で仕様変更が発生した場合の「再コンフィギュレーション」に注意が必要です。CO02(製造指図変更)でコンフィギュレーション値を変更するとBOM爆発・ルーティング取込が再実行されます。ただし「すでに払出済みのコンポーネント」や「実績確認済みの工程」の取り扱いは個別の運用判断が必要です。原則として製造着手後のコンフィギュレーション変更は極力避け、変更が必要な場合は製造指図をキャンセルして新規作成することを推奨します。

10. AVC(Advanced Variant Configuration):技術詳細

AVCと従来VCのアーキテクチャ比較

AVC(Advanced Variant Configuration)はS/4HANA 1709(2017年)以降に提供された次世代VCエンジンです。データモデルは従来VCと共通ですが、処理エンジンとUIが刷新されています。

AVCへの移行判断

既存の従来VCシステムをAVCに移行するかどうかの判断ポイントを示します。

LKPMとグローバル特性変更管理

LKPMとはLokal Klassifizierung/Produktion Modeling(直訳)の略で、コンフィギュラブル製品の特性値を量産全体で一括変更・分析する機能です。

11. VCのCustomizing設定(SPRO詳細)

SCEパラメータの設定

IMGパス:「SAP NetWeaver → Application Server → Basis Services → Classification System → Settings」

バリアント構成のコア設定

IMGパス:「Logistics – General → Variant Configuration」

コンフィギュレーション有効フラグの設定

バリアント価格設定の統合

クラス検索の設定

IMGパス:「Logistics – General → Classification System → Search Settings」

12. よくある設定ミスとトラブルシューティング

依存関係が動作しない

BOM明細が選択されない/常に選択される

コンフィギュレーション価格が計算されない

SCEタイムアウトエラー

クラスノードで品目が選択されない

13. 大規模VCモデルの運用設計

VCモデルのドキュメント管理

VCモデル(特性・クラス・依存関係・スーパーBOM・スーパールーティング)は製品設計の変化とともに継続的に更新されます。モデルのドキュメント管理と変更管理は大規模VCの安定運用に不可欠です。

大量コンフィギュレーションデータのクリーンアップ

長期稼働のシステムでは受注・製造指図のコンフィギュレーションデータ(CUOV等のテーブル)が蓄積します。

以上