logo

Are you need IT Support Engineer? Free Consultant

SAP CPQ技術ブログ①: Involved Parties の Sold-To Party 名を…

  • By Sanjay
  • 28/05/2026
  • 14 Views


概要

SAP CPQ のデフォルトの Quote List には、Involved Parties で設定した Sold-To Party (受注先) の Business Partner 名が列として表示されません。 本記事では、Quote カスタムフィールドと Global Script を組み合わせることで、この情報を Quote List 上に表示する手順を解説します。

対象バージョン: SAP CPQ Quote 2.0 エンジン (CPQ 2605 以降で動作確認)

アーキテクチャ概要

実現方法の全体像は以下の通りです。

コンポーネント 役割

Quote カスタムフィールド SoldToPartyName Sold-To Party 名を格納する FreeForm フィールド
Quote List Settings 上記フィールドを列として Quote List に表示する設定
Global Script SoldToPartyName Involved Parties 変更時に Sold-To Party 名を読み取りカスタムフィールドへ書き込む IronPython スクリプト

図 1: 完成形 — Quote List の “Sold-To Party” 列に Business Partner 名 “Alpha Center” が表示されている

 

 

手順

Step 1: Quote カスタムフィールドを作成する

Setup > Quotes > Quote Fields を開き、「Custom Fields」タブで新規フィールドを作成します。

設定項目 値

Name SoldToPartyName
Type FreeForm
Default Label Sold-To Party
Calculations are run On Involved Parties Changed」にチェックを入れる
Formula (Implementation) 空欄のまま ※後述の Global Script で値を設定するため

 

図 2: カスタムフィールド設定画面 — Type: FreeForm、”On Involved Parties Changed” にチェック、Formula は空欄

 

Step 2: Quote List Settings に列を追加する

Setup > Quotes > Quote List Settings を開き、「Columns Layout」セクションで手順 1 で作成した SoldToPartyName フィールドを選択して追加します。

図 3: Quote List Settings の Columns Layout に “Sold-To Party” を追加した状態

 

ポイント: 列ラベルはフィールドの「Default Label」で設定した文字列 (Sold-To Party) が使われます。ユーザータイプ別にラベルを変えたい場合は「User Types By Labels」で設定してください。

Step 3: Global Script を作成する

Setup > Develop > Global Scripts を開き、「Add Script」で新規スクリプトを作成します。

設定項目 値

Name SoldToPartyName(任意)
System ID 一意な ID(例: SoldToPartyName_cpq)※自動設定
Active チェックを入れる

「Script Code」欄に以下のコードを入力し、Save してください。

# Sold-To Party の Business Partner 名を取得し、カスタムフィールドに書き込む
soldToName = ""
for party in context.Quote.GetInvolvedParties():
    if party.PartnerFunctionName == "Sold-to party":
        soldToName = party.Name or ""
        break
context.Quote["SoldToPartyName"] = soldToName

図 4: Global Script のコード入力画面 — Quote 2.0 API を使用したスクリプト

 

スクリプトの解説

コード 説明

context.Quote.GetInvolvedParties() Quote 2.0 API。Involved Parties に登録された全パーティを返す
party.PartnerFunctionName パートナー機能名(例: "Sold-to party"
party.Name Business Partner の名称(例: "Alpha Center"
context.Quote["SoldToPartyName"] Quote 2.0 でカスタムフィールドに値をセットする記法

 

Save 後、ページをリロードして Events タブを開きます。

図 5: Global Script の Events タブ — “On Involved Parties Changed” イベントにチェックを入れる

 

On Involved Parties Changed」にチェックを入れ、Save してください。これにより Involved Parties が変更されるたびにこのスクリプトが自動実行されます。

Step 4: 動作確認

  1. 任意の Quote を開き、「Involved parties」タブに遷移します。
  2. Sold-to party として任意の Business Partner を設定し、Save します。
  3. Quote List に戻ると、「Sold-To Party」列に Business Partner 名が表示されます。

図 6: Quote の Involved Parties タブ — ここで Sold-to party を設定することでスクリプトがトリガーされる

 

図 7: Quote List での確認結果 — Quote 02080027 の “Sold-To Party” 列に “Alpha Center” が表示されている

 

まとめ

本記事では、SAP CPQ Quote 2.0 環境において Involved Parties の Sold-To Party 名を Quote List に表示する方法を解説しました。要点は以下の 3 点です。

  1. FreeForm カスタムフィールドを作成し、Quote List の列に追加する
  2. Global Script に Quote 2.0 API (context.Quote.GetInvolvedParties()) を使ったスクリプトを記述する
  3. Global Script の Events タブで「On Involved Parties Changed」を有効化する

ポイント: 同じ手法を応用すれば、Ship-To Party や Bill-To Party など他のパートナー機能名を Quote List に表示することも可能です。party.PartnerFunctionName の比較文字列を変更するだけで対応できます。

参考リンク



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *