[SAP]バリアントコンフィギュレーションで実現するオプション管理

この記事は [chillSAP夏の自由研究2021](https://note.com/chillsap/n/n08ef5ec73b4c) の記事として執筆しています。

# はじめに
製造業等、作ったものを売っている企業の場合、"オプション"がある製品を販売しているということがよくあります。
例えばパソコンであれば、メモリ、HDD、CPU、マウスやOffice等の付属品等の有無等です。
仮にメモリが16GB, 32GB, 64GB、HDDが128GB, 256GB, 512GBの選択肢があるとします。
これらのオプションの組み合わせ毎にパソコンの品目マスタを作成すると、合計9通りの組み合わせになるので、9通りの品目マスタを登録しなければならないことになります。
価格以外の要素がほぼ同じであるにも関わらずです。
仮にパソコンの何らかの要素を変更することになれば、9つの品目マスタをメンテしなければならなくなります。
これではマスタ運用として効率が悪いので、バリアントコンフィギュレーションを使って受注する度にオプションを選択し、それにより価格を変更できるようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/5b87aebf-3270-1514-8e4c-567dd29fec05.png)

# やりたいこと
パソコンの本体価格が1,000USDで、オプションごとに価格が設定されています。
受注伝票を登録する時に、オプションとして32GBのメモリと256GBのHDDを選択し、全体の価格が1,040USDとなるようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/d024eada-5e88-a1f1-9ac2-40c1cbc607eb.png)

使うマスタは以下の通りです。

* Characteristics/特性
* Variant Class/バリアントクラス
* Material/品目コード
* Configuration profile/選定プロファイル
* Procedure/価格決定表
* Condition Records/条件レコード

それぞれのマスタの関係性はこんな感じです。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/87eb0da1-4863-4eb4-7d71-bffcbe6fe3df.png)


# 手順
## Characteristics/特性
TCODE:CT04
特性には、メモリやHDD等選択肢のまとまりを登録します。
特性の中の個々の選択肢(メモリ16GBやHDDを256GB)を、特性値と呼びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/c67aeff5-f6e7-1239-0946-907acedb057d.png)



今回の例では特性値に価格をリンクしたいので、まずはそれぞれの特性値と価格を紐付けるための特性(`ZPRIC`)を作成します。
こんな風に、価格をリンクさせたいすべての特性の特性値をValuesタブに入力します。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/8db1a01e-6f5f-5fb8-7cbe-cbf1297e372b.png)

Addnl Dataタブの入力は↓のようにして下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/d38beb70-5f2c-d5ee-9006-e4a4978e6316.png)

今度は、メモリの特性を定義します。
Basic dataタブでは、複数回答を許可しないなら"Single Value"を、複数回答を許可するなら"Multiple Values"を選択します。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/df679df7-4b08-c254-78a7-66276af820f0.png)

Valuesタブにメモリの特性値を入力します。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/9491501e-79f3-ff15-c5e2-49bbe6fa7fcc.png)

入力が終わったら、グレイアウトしている"O"の列(Object dependencies)をクリックするか、下記のメニューからEditorにアクセスします。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/274f0bfd-a83e-6236-706e-59e2bc4463f3.png)

そうするとエディタ画面が表示されるので、以下のように入力します。
天秤のマークを押すと、コードがチェックされます。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/4b37ba7a-872d-10bd-c65b-38092a76b442.png)

他の特性値やHDDの特性についても同じように入力します。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/c38cfc0f-3a6e-0a16-8cee-ee800a5ff59b.png)


## Variant Class/バリアントクラス
TCODE:CL01, CL02
バリアントクラスは特性を束ねたまとまりで、特性を品目マスタに割り当てるために使います。
厳密に言うとクラスというマスタにも様々な種類があり、バリアントはクラスのうちの1種類です。
下記のように、`ZPRIC,ZRAM, ZHDD`を`ZLAOTOP`に紐付けます。↓ 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/a886ae67-6521-2a3b-81d6-98c4185254dc.png)

LAPTOPという商品の種類には、これら3つの特性が紐づけるという意味合いになります。

## Material/品目コード
TCODE:MM01, MM02, MM03
パソコン本体のマスタを登録します。

* 注意点その1

品目タイプは`Configurable materials`を選択します。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/f9039113-4c2f-4816-41d6-f1a08cf39c5d.png)

またはBasic data2タブのClient-specific configurationの`Material is configurable`をONにしておきます。

* 注意点その2

Classificationタブで、先程つくったバリアントクラスを割り当てておきます。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/85dc4a23-0b6d-0bff-781e-2fd5948672ce.png)

* 注意点その3

Sales: sales org 2タブでは、Grouping termsのitem Category Groupを`0002`にしておきます。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/97782e6d-c7af-1619-4fe0-e5dfb2eee9bc.png)


## Configuration profile/選定プロファイル
TCODE:CU41, CU42, CU43

先程品目マスタのClassificationタブで品目マスタとクラスとの紐付けを行いましたが、ここでも行う必要があります。
TCODE:CU41で画面を開き、品目コードを入力します。

ここで選定プロファイルの名称を入力します。品目と同じでいいです。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/31737a10-4d01-0c4e-397e-18f0f9ec9a99.png)

Class Assignmentをクリックすると、品目マスタのClassificationタブの紐付けが確認出来ます。

## Procedure/価格決定表
TCODE:V/08
価格表を登録します。
次の2つのConditionTypeを使用します。

* PR00:Laptop本体の価格を登録します。
* VA00:オプションの価格を登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/e21b8dfa-e525-d375-abcf-7157f24171e9.png)

## Condition Records/条件レコード
TCODE:VK11, VK12, VK13
Laptop本体とそれぞれのオプションの価格を設定します。

まずはTCODE:`VK11`で本体の価格を登録しましょう。
Condition Typeは`PR00`を選択します。
Key conbinationはとりあえず一番単純なMaterial with release statusを選択します。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/363c98ff-fb95-8b5d-3dd6-4590684839c6.png)

Laptopの登録はこんな感じです↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/df485b31-a3c5-fb7b-323f-f84555655467.png)

次にオプションの(特性値ごとの)価格を登録します。
Condition Typeは`VA00`を選択します。
品目コードは、本体のコードを選択します。
オプションごとの価格を登録していきます。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/f7262538-f93c-8ae5-b973-f136bebfb0ec.png)


## Sales Order/受注
TCODE:VA01, VA02, VA03

マスタの準備が整ったので、受注伝票を登録します。
TCODE:VA01で伝票を登録します。
受注先を入力して、明細の品目コードに本体のコードを、それから数量を入力します。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/68b16cdc-510a-6ded-2ce6-dfc2ff438cab.png)

すると、オプションを開く画面が出てきます。
メモリとHDDのオプションを選択してEnterを押下します。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/87b49a08-2c77-5158-f2d1-220d40f91bc3.png)

NextスクリーンまたはキーボードのF8を押して前の画面に戻ります。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/6c8d7d74-efcd-5173-8898-3d4b442d528a.png)

明細行をクリックし、Conditionタブに遷移します。
選択したオプションに紐づく価格が積み上げられています。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378457/39be1c34-55da-a560-a236-6d6dc8c59c59.png)

以上

# 参考

https://www.youtube.com/watch?v=cLD9SY8d9Ec