技術設定・依存関係・AVC・統合設計の詳細ガイド
2026年6月
製造業において「顧客ごとに仕様が異なる製品」を効率的に管理することは、ERP設計の最難関テーマの一つです。SAP Variant Configuration(VC)はこの課題に対する解答として、「一つのコンフィギュラブル品目(KMAT)と製品モデル(特性・クラス・依存関係)から、受注時の顧客選択に応じてBOM・ルーティング・価格を動的に生成する」仕組みを提供します。
VCを正しく設計・実装するには「特性(CT04)・クラス(CL02)・コンフィギュラブル品目(KMAT)・スーパーBOM・スーパールーティング・依存関係(CU01〜CU04)・コンフィギュレーションプロファイル(CU41)」という七つのオブジェクトの関係と、各オブジェクトの詳細な技術設定を理解することが必要です。本稿ではそれらを設定手順・構文・制約事項まで含めて徹底的に解説します。
KMAT品目(MM01):VCの製品テンプレート。コンフィギュレーションクラス(タイプ300)を持つ。
特性(CT04):仕様軸(COLOR・ENGINE_TYPE・VOLTAGE等)を定義するマスタ。
クラス(CL02, タイプ300):特性を束ねるコンテナ。KMATに割り当て。
コンフィギュレーションプロファイル(CU41):KMAT上でVCの動作方式を制御する設定レコード。
スーパーBOM(CS01, 用途1または5):全バリアントの部品を網羅したBOM。各明細に選択条件を付与。
スーパールーティング(CA01):全バリアントの工程を網羅したルーティング。各工程に選択条件を付与。
依存関係(CU01〜CU04):特性値間のビジネスルールを記述するロジック。
バリアント条件(Variant Conditions):VCと価格設定(SD Condition Technique)を接続する価格ルール。
特性(Characteristic)はVCにおける「選択肢の軸」です。CT04で作成・管理します。特性はDMS・Classification等の他SAPモジュールとも共用されますが、VC専用の設定項目が存在します。
文字型は「外装色・素材・製品グレード」等のカテゴリ値に使用します。
フィールド長(Field Length):最大30文字。VCのコンフィギュレーション画面での表示幅に影響します。
大文字/小文字区別:「大文字のみ(Uppercase Only)」フラグを有効にすると、入力値が自動で大文字に変換されます。依存関係の比較式では大文字小文字が厳密に区別されるため、このフラグの設定は依存関係の動作に影響します。
固定値リスト(Allowed Values):CT04の「Values」タブで選択可能な値を定義します。値コード(Value)と説明(Description)の両方を各言語で設定します。VCでは基本的に全値を固定値として定義し「追加値の許可(Additional Values)」は無効にすることが推奨されます。
数値型は「電圧・出力・重量・サイズ」等の量的な値に使用します。
桁数・小数桁(Number of Chars / Decimal Places):整数部と小数部の桁数を定義します。例:電圧特性は「整数5桁・小数0桁」。
単位(Unit of Measurement):数値型特性には単位(kW・V・kg・mm等)を設定できます。単位付き特性値は依存関係の数値比較でも単位変換を考慮したロジックが必要です。
許容範囲(Interval Values):数値型では固定値の代わりに「最小値・最大値・増分(Increment)」で許容範囲を定義できます。例:電圧100〜240V・増分10V。増分設定により100V・110V・120V…240Vが選択可能値になります。
VC用途での使用は限定的ですが、「有効開始日・生産開始予定日」等の時間的な仕様軸が必要な場合に使用します。依存関係での日付比較には専用の関数(DATE_TO_DAYS等)を使用します。
「Additional Values(追加値の許可)」:ONにすると固定値リスト以外の任意入力が可能になります。VC設計では通常OFFにして選択肢を固定値に制限します。フリー入力が必要な特性(顧客固有の刻印文字列等)のみONにします。
「Entry Required(必須入力)」:このフラグをONにすると、コンフィギュレーション完了の判定時にこの特性への値入力が必須とみなされます。VCの「Complete Configuration」チェックに連動します。
「No Display(非表示)」:コンフィギュレーション画面で表示しない特性(依存関係のアクションで自動設定される内部特性)にはこのフラグをONにします。
「Not Ready for Input(入力禁止)」:アクションによって自動設定される特性にONにします。ユーザーが手動変更できないことを強制します。
「Reference Characteristic(参照特性)」:品目マスタ・受注・製造指図の特定フィールドを特性として参照する「参照特性」設定です。例:品目マスタのウェイト(MARA-NTGEW)を参照する参照特性を定義し、依存関係でウェイトに基づく選択条件を設定できます。
特性の「説明(Description)」と「固定値のテキスト」は多言語で設定できます。CT04の言語切替ボタンで日本語・英語等の説明を個別に入力します。コンフィギュレーション画面の表示言語はログインユーザーの言語設定に依存するため、使用するすべての言語でテキストを設定することが必須です。設定漏れがあると特定言語のユーザーに文字化けまたは空白が表示されます。
VCで使用するクラスはクラスタイプ「300(Configuration Class)」です。クラスタイプ300は他のクラスタイプ(001:汎用・002:材質等)と異なり、VC専用の属性を持ちます。
クラスの作成:CL02を起動→クラス名入力→クラスタイプ「300」を選択→基本データタブで説明入力→「Chars」タブで特性を追加。
クラスへの特性割り当て順序:「Chars」タブで特性を追加する際、順番がコンフィギュレーション画面での表示順に直接影響します。ユーザーが選択しやすい順序(重要度の高い特性を上部に配置)で設計します。
特性の必須設定(Required):クラス内で特定の特性を「必須(Required)」に設定できます。この設定はCT04の「Entry Required」フラグと連動します。
VCの高度な機能として「クラスノード(Class Node)」があります。スーパーBOMの明細に品目ではなく「クラス」を配置し、コンフィギュレーション時にそのクラスに属する品目の中から動的に品目を選択する仕組みです。
クラスノードの利用場面:例として「ギヤボックス」という明細にギヤボックス品目を直接配置するのでなく、クラス「GEARBOX_CLASS」をクラスノードとして配置します。GEARBOX_CLASSに属する品目(5速MT・6速MT・8速AT等)の中から、特性値に応じた品目が自動的に選択されます。
クラスノードの設定:CS01のBOM明細で品目タイプを「クラスノード(Class Node:D)」に選択し、クラス番号(CL02で作成したクラス)を入力します。クラスノードにも通常の明細と同様に選択条件が付与できます。
クラスノードの制約:クラスノードから選択される品目は、そのクラスに「配賦(Assignment)」されている品目でなければなりません。CL20Nで品目をクラスに配賦する作業が必要です。品目とクラスの管理が増えるため、クラスノードは本当に必要な場合に限定することを推奨します。
コンフィギュラブル品目は品目タイプ「KMAT」で作成します。通常の完成品(FERT)と異なる重要な設定があります。
「Configurable Material(コンフィギュラブル品目)」フラグ:このチェックボックスをONにすることで品目がVC対象であることを宣言します。このフラグがないとコンフィギュレーションプロファイル(CU41)を作成できません。
「Configuration Management(コンフィギュレーション管理)」:「Variant Configuration(バリアント構成)」を選択します。これにより製造指図・受注でのコンフィギュレーション画面が有効になります。
「Variable-Size Item(可変サイズ品目)」:寸法指定品(切断鋼材・電線等)でサイズをVC特性で指定する場合に使用するフラグです。通常のVC用途では不要です。
コンフィギュレーションクラスの割り当て:分類ビューでクラスタイプ300のクラスを品目に割り当てます。この割り当てによって、コンフィギュレーション画面にそのクラスの特性が表示されます。複数のクラスタイプ300クラスを一つのKMATに割り当てることも可能ですが、プロファイルでの制御が複雑になるため1クラスに集約する設計が推奨されます。
コンフィギュレーションプロファイルはKMATのVC動作を制御する設定レコードです。CU41(作成)/CU42(変更)/CU43(表示)で管理します。一つのKMATに対して複数のプロファイルを作成し、用途(見積・受注・製造指図)ごとにプロファイルを切り替えることも可能です。
「BOM Application(BOM用途)」:コンフィギュレーション時に使用するスーパーBOMの用途を指定します(例:用途1=設計BOM・用途5=販売BOM)。受注コンフィギュレーションと製造コンフィギュレーションで異なる用途のBOMを使用する場合、それぞれに対応するプロファイルを作成します。
「Configuration Type(コンフィギュレーションタイプ)」:「User Interface Configuration(UIコンフィギュレーション)」か「Background Configuration(バックグラウンドコンフィギュレーション)」を選択します。UIコンフィギュレーションは担当者がコンフィギュレーション画面で手動入力するモード。バックグラウンドは依存関係のアクションと参照特性のみで自動的に値が設定されるモード(自動コンフィギュレーション)。
「Class(クラス)」:プロファイルで使用するコンフィギュレーションクラスを明示的に指定します。分類ビューで割り当てたクラスと一致している必要があります。
「SCE Usage(SCEの使用)」:制約ネット(Constraint Net)を使用する場合に「Solution and Constraint Engine」を有効化するフラグです。SCEを使用しない場合はOFFにします(性能上のオーバーヘッドを避けるため)。
「Variant Matching(バリアントマッチング)」:コンフィギュレーション値が完全一致する既存の「バリアント(Variant:KMAT配下の個別品目)」が存在する場合、そのバリアントを自動的に選択するかどうかの設定。「Find Variants(バリアント検索)」ON時はマッチするバリアントが自動特定されます。
スーパーBOM(Super BOM)は「あらゆるバリアントで使用される可能性のある全部品を一つのBOMに列挙したもの」です。各明細に「選択条件(Selection Condition)」を付与し、特定の特性値組み合わせの場合のみその明細が有効となります。
スーパーBOMの設計原則として「常にすべてのバリアントに使用される部品」と「特定バリアントにのみ使用される部品」を混在させます。前者は選択条件なし(無条件有効)、後者に選択条件を付与します。
CS01/CS02でBOM明細を選択し、「Extra → Conditions(条件)」メニューまたは明細タブ「Conditions」から選択条件を入力します。選択条件は依存関係構文で記述します。
$self.COLOR = 'RED'
上記は「COLOR特性の値がREDの場合、この明細を有効にする」という選択条件です。$selfはコンフィギュレーション対象の品目自身を指す参照語です。
$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
数値型特性との比較には「>・<・>=・<=・=・<>(不等号)」が使用できます。
$self.COLOR IN ('RED', 'WHITE', 'SILVER')
INを使うと複数値のOR条件を簡潔に記述できます。
BOM明細の数量を固定値でなく、特性値に基づいた計算式で指定できます。数量欄の右側にある「Quantity Formula」フィールドに式を入力します。
$self.NUM_FLOORS * 4
例:ビル構造物で「フロア数(NUM_FLOORS)×4本」のボルトが必要な場合の数量式。
ROUND($self.WEIGHT / 10, 0)
例:重量(WEIGHT)を10で割った値を切り上げた数量。
IF $self.OPTION = 'HEAVY' THEN 8 ELSE 4
OPTIONがHEAVYなら数量8、それ以外は4を返す条件式。
スーパーBOMの明細には「有効期間(Valid From / Valid To)」を設定できます。選択条件と有効期間を組み合わせることで「2026年10月1日以降の受注で、かつCOLOR = REDの場合のみ有効」という精密な制御が可能です。ECM(エンジニアリング変更管理)と連動して、変更番号による有効化も設定できます。
スーパールーティング(Super Routing)はCA01でKMAT品目に対して作成します。通常のルーティングと同様に工程(Operation)を列挙しますが、各工程に選択条件を付与する点が異なります。
CA01/CA02でルーティングを開き、工程を選択し「Extras → Conditions」から選択条件を入力します。構文はBOM明細の選択条件と同一です。
例:工程「0020:表面処理(PAINT)」の選択条件 → $self.SURFACE = 'COATED'。塗装処理が選択された場合のみこの工程が製造指図に取り込まれます。
例:工程「0030:ターボ組付け(TURBO_ASSY)」の選択条件 → $self.TURBO = 'YES'。ターボオプションが選択された場合のみ実行されます。
スーパールーティング内で「参照作業手順(Reference Operation Set)」を使用することで、複数の製品で共通する工程(品質検査・梱包・洗浄等)を一元管理できます。スーパールーティングに参照工程をリンクし、参照工程自体に選択条件を付与します。参照工程の変更がすべての参照元スーパールーティングに即時反映されます。
依存関係(Dependencies)はCU01〜CU04のトランザクションで管理します。
CU01:前提条件(Precondition)の作成/変更
CU02:選択条件(Selection Condition)の作成/変更(ただし通常はBOM/Routing明細から直接入力する方が多い)
CU03:アクション/プロシージャ(Action / Procedure)の作成/変更
CU04:制約ネット(Constraint Net)の作成/変更
依存関係はKU01等(依存関係一覧)やCU05(依存関係の特性への割り当て)で管理します。依存関係は直接オブジェクト(BOM明細・特性の固定値)に埋め込むか、独立したオブジェクト(CU01〜CU04)として作成して参照する二つの方法があります。再利用性の高い依存関係は独立オブジェクトとして定義します。
$self:コンフィギュレーション対象品目自身への参照。$self.COLOR のように特性を参照します。
$parent:親アセンブリへの参照。サブアセンブリ品目のVCで親品目の特性値を参照する際に使用。
$root:製品階層の最上位品目への参照。深い階層構造のVCで最上位の特性を参照する場合。
TABLES:特性の「テーブル」形式(複数の特性値の組み合わせを表形式で定義する表条件)を参照する際の宣言。
= 不等号:<>
> >= < <=
AND OR NOT
IN ('A', 'B', 'C')
ABS(x):絶対値。
ROUND(x, n):小数点n桁で四捨五入。
TRUNC(x, n):小数点n桁で切り捨て。
SQRT(x):平方根。
LOG(x):自然対数。
SUBSTR(str, start, length):部分文字列抽出。
LENGTH(str):文字列長を返す。
CONTAINS(str, 'pattern'):パターン一致チェック(ワイルドカード「*」使用可)。
$INOB.MENGE:BOM明細数量への参照(数量式内で使用)。
$INOB.MEINH:BOM明細単位への参照。
前提条件は「特性の固定値が選択画面に表示される条件」を定義します。前提条件を満たさない場合、その固定値はコンフィギュレーション画面のドロップダウンに表示されません。
CT04で特性を開き、「Values」タブで固定値を選択→「Extras → Object Dependencies → Preconditions」で依存関係を入力します。
/* ターボ特性の値「YES」への前提条件 */
$self.ENGINE_OUTPUT > 150
ENGINE_OUTPUTが150kWを超えている場合のみ「ターボ=YES」が選択画面に表示されます。150kW以下のエンジンが選択された状態では「YES」は非表示となり、「NO(または空白)」のみ選択可能です。
アクションは「ある特性値が選択されたとき、他の特性値を自動設定する」処理です。CU03で独立オブジェクトとして定義するか、CT04の特性固定値に直接埋め込みます。
IF $self.COLOR = 'WHITE'
THEN
$self.INTERIOR = 'GREY'
END_IF
IF $self.GRADE = 'PREMIUM'
THEN
$self.WARRANTY = '5Y'
$self.SUPPORT = 'GOLD'
END_IF
一つのアクションで複数の特性値を設定できます。THEN句に複数の代入文を記述します。
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)は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が両方の整合性を検証します。
複雑な組み合わせルールをコードで書かずに「テーブル(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 Usage」をONにする必要があります。SCE有効時は全制約ネットがコンフィギュレーションセッション中に常に評価されます。制約ネットが多い・複雑な場合は応答性能に影響するため、制約ネットの数と複雑さを最小限に抑える設計が重要です。
CU50はVCモデルの設定テストツールです。実際の受注・製造指図を作成せずにコンフィギュレーションの動作を検証できます。
起動:CU50を実行→品目番号(KMAT)とコンフィギュレーションプロファイルを入力→「Execute(実行)」。
特性値の入力:コンフィギュレーション画面が表示されます。各特性に値を入力/選択します。依存関係(前提条件・アクション)の動作をリアルタイムで確認します。
BOM爆発確認:「Extras → Edit BOM(BOM編集)」でコンフィギュレーション結果のBOM明細(有効な明細のみ)を確認します。スーパーBOMから選択条件に合致した明細のみが表示されます。
ルーティング確認:「Extras → Edit Routing(ルーティング編集)」でコンフィギュレーション結果のルーティング(有効な工程のみ)を確認します。
価格確認:「Pricing(価格設定)」でコンフィギュレーション価格(バリアント条件による価格差額)の計算結果を確認します。
コンフィギュレーションが完了しているか(必須特性すべてに値が入力されているか)を判定するのが「完了チェック(Completeness Check)」です。
CT04の「Entry Required」フラグをONにした特性はすべて入力されている必要があります。
受注(VA01)やMTO製造指図でコンフィギュレーションが「不完全(Incomplete)」の場合、後続プロセス(スケジュール確認・出荷)がブロックされる場合があります。完了チェックロジックの設計は業務フローとの整合性確認が必要です。
依存関係が期待通りに動作しない場合のデバッグ方法を示します。
CU50の「Log(ログ)」表示:コンフィギュレーション実行中に評価された依存関係・前提条件・アクションの実行ログを確認できます。どの依存関係が評価されてどの値が自動設定されたかを追跡できます。
CU99(依存関係の一貫性チェック):VCモデル全体の依存関係の構文エラー・参照エラー(存在しない特性への参照等)を一括チェックするトランザクション。定期的に実行してモデルの整合性を維持します。
CU70(依存関係一覧表示):特定の特性・クラス・品目に割り当てられた全依存関係を一覧表示します。依存関係の割り当て漏れや重複の確認に使用します。
受注(VA01)でKMAT品目を入力すると、自動的にコンフィギュレーション画面が開きます。担当者が特性値を選択し、コンフィギュレーションが完了すると以下の処理が自動実行されます。
設定済みBOMの生成:スーパーBOMから選択条件に合致した明細のみを含む「設定済みBOM」が受注明細に格納されます。
コンフィギュレーション価格の計算:バリアント条件(SD Condition Technique)に基づくオプション価格差額が受注価格に自動加算されます。
コンフィギュレーション特性値の保存:受注明細のコンフィギュレーション(CUOV)テーブルに選択された全特性値が保存されます。
VCの価格設定はSD条件テクニック(Condition Technique)に基づきます。設定手順を示します。
IMG → 販売管理 → 基本機能 → 価格設定 → 価格設定管理 → 条件タイプの保守。標準の条件タイプ「VA00(バリアント価格差額)」を使用するか、カスタム条件タイプを作成します。
バリアント条件の条件テーブルには「コンフィギュラブル品目番号+特性+特性値」の組み合わせでキーが構成されます。IMG → 販売管理 → バリアント構成 → 価格設定 → バリアント価格設定の条件テーブルを作成します。VCの特性をキー項目として条件テーブルに追加するには「特性参照フィールド」の設定が必要です。
VK11でバリアント条件レコードを作成します。「KMATの品目番号・特性名・特性値・価格差額(Surcharge または Discount)」を入力します。
例:KMAT=ENGINE_V8・特性COLOR=RED → 価格差額 +50,000 JPY
例:KMAT=ENGINE_V8・特性TURBO=YES → 価格差額 +350,000 JPY
KMATの受注コンフィギュレーション後、MTO(受注生産)またはMTS(見込み生産)に応じてATP(Available to Promise)チェックが実行されます。
MTO(Make-to-Order)の場合:ATP量ではなく製造リードタイム(ルーティングの工程時間積み上げ)に基づく予定確認日が計算されます。設定済みルーティングの工程時間がリードタイム計算に直接影響します。
MTS(計画生産)の場合:設定済みBOMのコンポーネント在庫・計画入荷をMRPで計画します。KMATレベルでの在庫管理は行わず(KMATは在庫を持たない)、展開後の部品レベルで在庫管理します。
MTO生産では受注明細からコンフィギュレーションが製造指図に引き継がれます。受注のコンフィギュレーション値(特性値)が製造指図のコンフィギュレーション(CUOV)にコピーされ、製造指図のBOM爆発・ルーティング取込でスーパーBOM・スーパールーティングの選択条件評価に使用されます。
製造指図(CO01)作成時または計画指図(MD16/CO41)の指図変換時に、スーパーBOMが展開(爆発)されます。このとき「コンフィギュレーション値と選択条件の照合」が実行され、有効な明細のみが製造指図コンポーネント(AFKO/AFPO/RESB)に取り込まれます。
代替品目の解決:スーパーBOMに代替品目グループが設定されている場合、優先度に従って代替品目が解決されます。在庫量・MRP調達状況を考慮した代替品目の自動選択はS/4HANA 2020以降の機能拡張で改善されています。
製造指図作成時にスーパールーティングが取り込まれます。各工程の選択条件がコンフィギュレーション値と照合され、有効な工程のみが製造指図工程(AFVC)に取り込まれます。選択条件なしの工程は常に取り込まれます。
製造指図が作成済みの状態で仕様変更が発生した場合の「再コンフィギュレーション」に注意が必要です。CO02(製造指図変更)でコンフィギュレーション値を変更するとBOM爆発・ルーティング取込が再実行されます。ただし「すでに払出済みのコンポーネント」や「実績確認済みの工程」の取り扱いは個別の運用判断が必要です。原則として製造着手後のコンフィギュレーション変更は極力避け、変更が必要な場合は製造指図をキャンセルして新規作成することを推奨します。
AVC(Advanced Variant Configuration)はS/4HANA 1709(2017年)以降に提供された次世代VCエンジンです。データモデルは従来VCと共通ですが、処理エンジンとUIが刷新されています。
エンジンの違い:従来VCはABAP上のVC処理エンジン(LCU*/LVC*ファンクションモジュール)を使用します。AVCはHANAのインメモリ処理を最大限活用するCDS/HANAネイティブのエンジンで動作します。大規模な制約ネットや多数の特性を持つ複雑な製品モデルでの性能差が顕著です。
UIの違い:従来VCはSAP GUIベースのコンフィギュレーション画面。AVCはFioriベースの「Product Configuration UI(アプリID:F3483)」。
PMEVC:AVCの製品モデル管理はPMEVC(Product Modeling Environment for Variant Configuration)アプリ(Fiori)で行います。特性・クラス・依存関係・制約ネットの管理をGUIエディタで実施できます。
既存の従来VCシステムをAVCに移行するかどうかの判断ポイントを示します。
移行推奨ケース:制約ネットが大規模(100件超)・複雑なコンフィギュレーション計算で性能問題が発生している・Fiori UIでのコンフィギュレーション体験を顧客・担当者に提供したい。
移行不要または後回しケース:従来VCで性能問題がなく業務が安定稼働している・VCモデルが比較的シンプル(特性20件未満・依存関係50件未満)・S/4HANAバージョンが1709未満(AVCサポート外)。
移行時の留意点:データモデル自体(特性・クラス・スーパーBOM等)はAVC/従来VCで共通のため移行工数は比較的少ない。ただし依存関係の構文が一部異なる(AVCではProcedure構文の一部が非推奨・制約ネット構文の変更)ため、既存依存関係のAVC互換性確認と修正が必要です。AVCのCU99相当ツールで互換性チェックを実施します。
LKPMとはLokal Klassifizierung/Produktion Modeling(直訳)の略で、コンフィギュラブル製品の特性値を量産全体で一括変更・分析する機能です。
利用場面:特定の特性値(廃止になるオプション等)を持つ全受注・製造指図の一括特定と変更対応。マスデータのVCモデル変更後に既存オーダーへの影響を一括評価・処置する際に使用します。
IMGパス:「SAP NetWeaver → Application Server → Basis Services → Classification System → Settings」
SCEタイムアウト:制約ネットのSCE計算が完了するまでの最大時間(秒)を設定します。複雑なモデルでタイムアウトが発生する場合はこの値を増やしますが、応答性能とのバランスが必要です。デフォルト値は30秒。
SCE再帰深度:制約ネットの推論再帰回数の上限。無限ループ(循環参照制約)を防ぐガード値です。デフォルト値は100。
IMGパス:「Logistics – General → Variant Configuration」
「Basic Settings(基本設定)」:VCの基本パラメータ(価格設定方式・完了チェック方法・コンフィギュレーションのコピー動作)を設定します。
「Define Configuration Key(コンフィギュレーションキー定義)」:コンフィギュレーションの一意性を判定する「コンフィギュレーションキー(特性の組み合わせから生成されるハッシュ)」の生成方式を設定します。コンフィギュレーションキーが一致する受注・製造指図は同一コンフィギュレーションとみなされ、同一製造指図に集約できます。
IMGパス:「Sales and Distribution → Basic Functions → Pricing → Variant Configuration Pricing」
特性を条件テーブルのフィールドとして追加する「Characteristics for Conditions」設定が最重要。この設定なしにはVCの特性を価格条件キーとして使用できません。
手順:対象の特性(CT04)が「KLART(クラスタイプ)300に割り当て済み」であることを確認→「Assign Characteristic to Condition Table(条件テーブルへの特性割り当て)」→条件テーブルのフィールド名として特性名を登録→VK11での条件レコード入力で選択可能になります。
IMGパス:「Logistics – General → Classification System → Search Settings」
クラスタイプ300のオブジェクト数が多い場合の検索インデックス(Search Index)の設定。大規模環境ではインデックス再構築スケジュールの管理が必要です。
チェック1:依存関係が特性・固定値に正しく割り当てられているか(CU70で確認)。依存関係を「作成したが割り当てていない」ミスが最も多い。
チェック2:CU99で依存関係の構文エラーを確認する。構文エラーがあると依存関係は無効として扱われます。
チェック3:前提条件の場合、特性自体がコンフィギュレーションクラスに割り当てられているか(CL02で確認)。
チェック4:コンフィギュレーションプロファイル(CU41)に正しいクラスが指定されているか。
チェック1:BOM明細の選択条件の構文が正しいか(CU99で確認)。
チェック2:選択条件で参照している特性名のスペル・大文字小文字が正確か(特性名は完全一致)。
チェック3:BOM用途(Usage)がコンフィギュレーションプロファイルの「BOM Application」と一致しているか。用途が不一致だとスーパーBOMが参照されません。
チェック4:BOMのプラントが製造指図/受注の生産プラントと一致しているか。
チェック1:VK11でバリアント条件レコードが作成されているか。
チェック2:条件タイプ(VA00等)が受注タイプの価格手続きに組み込まれているか(OVKK/V/08)。
チェック3:「特性参照フィールド(Characteristics for Conditions)」のIMG設定で対象特性がマッピングされているか。
症状:コンフィギュレーション時に「SCE computation timed out」エラー。
対処1:SCEタイムアウト値を増やす(IMG設定)。
対処2:制約ネットの数・複雑さを見直す。不要な制約・循環参照制約を削除。
対処3:制約ネット内のCONDITION句を適切に設定し、不要な制約評価をスキップさせる。
対処4:CU50の「Log」モードで処理時間のかかっている制約を特定して最適化。
チェック1:クラスノードで指定したクラスに候補品目が配賦(CL20N)されているか。
チェック2:候補品目の特性値(分類)が選択条件に合致しているか。クラスノードの品目選択は「候補品目の分類特性値が$parentの特性値と一致するもの」を自動選択します。
VCモデル(特性・クラス・依存関係・スーパーBOM・スーパールーティング)は製品設計の変化とともに継続的に更新されます。モデルのドキュメント管理と変更管理は大規模VCの安定運用に不可欠です。
依存関係カタログ:全依存関係(前提条件・アクション・制約ネット)の一覧・目的・関連特性をExcelまたはConfluence等で管理します。SAPシステム内の依存関係テキストにも適切なコメント(/* */で記述可能)を残します。
テストシナリオ一覧:有効なコンフィギュレーションの代表的な組み合わせと期待BOM・ルーティング・価格を記録した「VCテストシナリオ一覧」を作成します。VCモデル変更後のリグレッションテストに使用します。
変更プロセス:VCモデル変更は必ず「開発テナント→品質保証テナント→本番」のトランスポート経路を通過させます。依存関係・スーパーBOM変更の本番直接入力は絶対禁止です。トランスポートにはCustomizingトランスポート(S/4HANAのトランスポートマネジメント)を使用します。
長期稼働のシステムでは受注・製造指図のコンフィギュレーションデータ(CUOV等のテーブル)が蓄積します。
アーカイブ:SAP Data Archiving(SARA)でコンフィギュレーション関連テーブルをアーカイブします。受注・製造指図のアーカイブと連動してVCデータも削除されます。
孤立コンフィギュレーションのクリーンアップ:受注・製造指図が削除されても対応するVCデータが残存するケースがあります。定期的なデータ品質確認(カスタムABAPレポートまたはSAP標準クリーンアッププログラム)が推奨されます。
以上