SAPのBOMを登録する:標準トランザクションからAPIまで

SAPのBOMを登録する方法

SAP ECCやS/4HANAなどのSAP ERPにおけるBOM(部品表)は、製造業において品目マスタと並び、大量にデータ登録するケースが多い。

本記事では、S/4HANAにおけるBOMの登録方法について、標準トランザクション、Fioriアプリ、BAPI、Web API まで、さまざまな手法を紹介する。

効率的なBOM登録の方法を検討している方にとって有益な情報となるため、ぜひ参考にしてほしい。

SAPのBOMを理解する

BOMの基礎知識、SAP ERPにおけるBOMの種類やデータ構造などを解説した前回の記事は以下。

目次

SAP S/4HANA でBOMを登録する方法

S/4HANAでBOMを登録するには、以下の方法がある。

標準トランザクション

標準トランザクション「品目BOM登録」

まずは標準トランザクション、「品目BOM登録」(T-Code: CS01)だ。

品目BOM登録とCS01の画面項目については、前回記事(以下)の「SAPにおけるBOMのデータ構造」で説明してあるので、そちらをご覧いただきたい。

メリットとデメリット

この標準トランザクションはECC以前のバージョンから存在するため、良い意味で枯れているという点がメリットだ。安定しており利用者も多い。その反面、古から存在するため、新しい種類のBOMを登録できないのがデメリットである。

メリットデメリット
安定の標準トランザクション
従来からあるUIなので、使い慣れているユーザー、SAPコンサルタントは多い。
バッチインプット可能。
バージョンBOM(PEO)のような最新のBOMは登録できない。
バッチインプット可能だが、大量の構成品(大量のBOM明細)には向かない。

Fiori

Fioriアプリ「部品表/配合表の更新」

部品表/配合表の更新」(Fiori ID: F1813)は、T-Code: CS01のFiori版である。CS01と同様に、様々な種類のBOMを登録できるだけでなく、CS01よりも多くの機能を備えている。

SAP GUIをベースとする標準トランザクションでは、BOMの登録・変更・照会にそれぞれ CS01・CS02・CS03 を使用し、目的に応じて異なるプログラムを使い分ける必要がある。一方、Fioriアプリ 「部品表/配合表の更新」 は、これらの機能が一つのプログラムに統合されており、登録・変更・照会をすべてカバーできる。

さらに、FioriならではのUI(ユーザーインターフェース)を活かし、BOM明細に構成品をコピー&ペーストできる。つまり、Excelなど表形式で保持している構成品のデータをコピーし、そのままBOM明細に貼り付けることができるのだ。CS01では、BOM明細は表形式ではあるものの、表形式のデータを貼り付けることはできないので、CS01よりも使い勝手は向上していると言える。

メリットとデメリット

FioriベースのUIによって、使い勝手は標準トランザクションよりも優れている。一方、Fioriアプリであるがゆえ、バッチインプットツールやRPAなど、簡便な一括登録手段を利用できない。

メリットデメリット
登録/変更/照会がひとつに統合されている。
PEOのバージョンBOMのような、最新のBOMも登録可能。
BOM明細をコピー&ペーストできるなど、UIの使い勝手が良い。
Webアプリなので、デスクトップアプリである標準トランザクションよりも動作が遅い。
バッチインプット不可。

BAPI(汎用モジュール)

大量のBOMを一括登録する場合、BAPI(汎用モジュール)を使用したカスタムプログラム開発(いわゆるアドオン)が有効である。あらかじめCSVファイルなどでBOMデータを作成し、開発したプログラムで読み込んだ後、BAPIを呼び出して一括登録を行う方法だ。CADやPDMと連携するインターフェースプログラムを開発する際も、BAPIを活用することになる。

BOMを登録できるBAPIは幾つか存在する。

CSAP_MAT_BOM_CREATE

古くからあるBOM登録用の汎用モジュール。ECCでは使用可能だったが、S/4HANAではバージョンによって「ブラックリスト(ブロックリスト)」に登録されており、使えない場合がある

ブラックリストとは、S/4HANAとの互換性がないために利用がブロックされているBAPIのリストであり、これに登録されているBAPIを使用すると実行時エラーが発生する。ブロックを解除する方法はあるものの、どのようなリスクがあるか判断が難しいため、利用は避けたほうが無難だ。

なお、BAPIの「ブラックリスト」に関する記事は以下。ブラックリストに登録されているBAPIの検索方法や、ブロック解除の方法を解説している。

メリットとデメリット

古いBAPIなので、メリットとデメリットを語る以前に、利用すること自体が危ぶまれる。

メリットデメリット
古いBAPIなので特段のメリットはないS/4HANAのバージョンによってはブラックリストに登録されており、利用できない
実行結果がわかり難い

BAPI_MATERIAL_BOM_GROUP_CREATE

ChatGPTに「SAP S/4HANAでBOMを登録できるBAPIは?」と尋ねると、このBAPIが提案される。どうやら、生成AIはこのBAPIをBOM登録用の主要なBAPIとして認識しているようだ。

このBAPIには少々特殊である。名称の一部に「BOM_GROUP」が含まれているが、標準トランザクションの入力項目「BOMグループ」とは異なる、「BOM_GROUP_IDENTIFICATION(BOMグループID)」というパラメータが入力必須となっている。

BOM_GROUP_IDENTIFICATION」はこのBAPIの入力パラメータとして何度も登場するが、標準トランザクションの「BOMグループ」とは全くの別物である。その証拠に、標準トランザクションの入力項目「BOMグループ」は「BOM_GROUP」として別に用意されている。

この「BOM_GROUP_IDENTIFICATION」に設定する値は自由であり、システム内で一意である必要もない。同じ値を繰り返し使用してもエラーにはならない。このBAPIを実行した後にテーブルSTKOMASTを参照しても、設定した「BOM_GROUP_IDENTIFICATION」の値は見当たらない。つまり、このパラメータはBAPI実行時にのみ使用される、不可解な存在である。

さらに、「SUPER_OBJECT_ID」といった、標準トランザクションでは見かけない謎のパラメータも登場する。このように、冗長とも思えるほど入力パラメータが多く、設定の手間の大きいのが、このBAPIの特徴である。


BOMグループ」が登場したので、ここでBOMグループについて説明しておこう。

BOMグループとは

BOMグループとは、複数のBOMをまとめて管理するためのグループのことである。BOMを登録する際、BOMグループを指定してBOMを登録しておくと、T-Code:CS06(BOMグループ照会)を使い、同じBOMグループのBOMを一括で照会できる。複数のBOMを一つのグループとして定義し、管理しやすくするのだ。

BOMグループが機能するのは、CS06のような「照会画面」のみである。BOMグループはBOMを検索する時の検索条件を拡張するだけで、MRPや製造指図発行など、システムの動作には影響を与えない。

標準トランザクションにおけるBOMグループの入力

標準トランザクションCS01(登録)またはCS02(変更)では、BOMグループはヘッダデータのひとつとして入力する。入力は任意で、18文字以内であれば自由に入力できる。

BOMグループに設定する値は?

BOMグループの入力は任意であるが、設定する値を決めるには、次の二通りの考え方がある。

  • BOMが属する最終製品が判明している場合

通常は、最終製品の品目コードを指定するのが望ましい。つまり、そのBOMが属する最上位のBOMの親品目の品目コードを設定する。BOMグループが役に立つのは、T-Code: CS06を用いた一括照会のときなので、関連するBOM同士をまとめる必要がある。この場合、すべてのBOMの最上位品の品目コードをBOMグループとして設定しておけば、その製品に関するすべてのBOMを、指定したBOMグループで一括照会できる。

  1. BOMが属する最終製品が不明な場合

中間品のBOMなど、対象のBOMがどの製品で使用されているのか不明な場合は、そのBOMの親品目の品目コードを設定すればよい。無関係な値を設定すれば混乱を招くので、何を設定するか迷うなら、単純に親品目の品目コードを設定するか、設定せず空白のままにしておく。

主要な入力パラメータと設定する値

標準トランザクションでは見かけない制御用のパラメータが繰り返し登場する。入力必須のBOM_GROUP_IDENTIFICATIONに設定する値は自由であるが、迷ったら、BOMの親品目の品目コードと同じにしておけばよいだろう。

Parameter
パラメータ
Description
説明
ABAP/4
Data Type
NTLEN
内部長
Decimal
小数点以下桁数
設定値
BOMGROUPBOM グループ CREATE-/CHANGE BAPI 品目 BOM
BOM_GROUP_IDENTIFICATIONID、BOM グループC32BOMグループID
値は自由
※「BOMグループ」とは別物
OBJECT_TYPEBOM グループ内のオブジェクトのタイプC3‘BGR’
OBJECT_IDBOM グループ内のオブジェクトの IDC32任意のID
BOM_USAGEBOM 用途C1
CREATED_IN_PLANTBOM または代替/派系の登録プラントC4
MATERIALRELATIONS品目割当 CREATE-/CHANGE BAPI 品目 BOM
BOM_GROUP_IDENTIFICATIONID、BOM グループC32BOMGROUPのBOM_GROUP_IDENTIFICATIONと同じ値
MATERIAL品目コード (18 桁)C18親品目の品目コード
PLANTプラントC4
BOM_USAGEBOM 用途C1
ALTERNATIVE_BOM代替 BOMC2
VARIANTS代替/バリアント CREATE-/CHANGE BAPI 品目 BOM
BOM_GROUP_IDENTIFICATIONID、BOM グループC32BOMGROUPのBOM_GROUP_IDENTIFICATIONと同じ値
OBJECT_TYPEBOM グループ内のオブジェクトのタイプC3‘BOM’
OBJECT_IDBOM グループ内のオブジェクトの IDC32BOMGROUPのOBJECT_IDと同じ値
ALTERNATIVE_BOM代替 BOMC2
BASE_QTY基本数量P133
VALID_FROM_DATE有効開始日D8
CHANGE_NO変更番号C12
FUNCTION機能C3‘NEW’
ITEMASSIGNMENTS割当 CREATE-/CHANGE BAPI ITM/BOM 品目 BOM
BOM_GROUP_IDENTIFICATIONID、BOM グループC32BOMGROUPのBOM_GROUP_IDENTIFICATIONと同じ値
SUB_OBJECT_TYPE下位オブジェクトのタイプ、BOMC3‘ITM’
SUB_OBJECT_IDオブジェクト ID、下位オブジェクト、BOMC32任意のID
構成品の品目コードと同じ値でよい
SUPER_OBJECT_TYPEスーパーオブジェクトのタイプ、BOMC3‘BOM’
SUPER_OBJECT_IDオブジェクト ID、スーパーオブジェクト、BOMC32BOMGROUPのBOM_GROUP_IDENTIFICATIONと同じ値
VALID_FROM_DATE有効開始日D8
CHANGE_NO変更番号C12
FUNCTION機能C3‘NEW’
ITEMS構成品目 CREATE-/CHANGE BAPI 品目 BOM
BOM_GROUP_IDENTIFICATIONID、BOM グループC32BOMGROUPのBOM_GROUP_IDENTIFICATIONと同じ値
OBJECT_TYPEBOM グループ内のオブジェクトのタイプC3‘ITM’
OBJECT_IDBOM グループ内のオブジェクトの IDC32任意のID
構成品の品目コードと同じ値でよい
ITEM_NOBOM 明細番号C4
ITEM_CAT明細カテゴリC1
COMPONENTBOM 構成品目C18子品目の品目コード
COMP_QTY構成品目数量P133

メリットとデメリット

メリットデメリット
ブラックリストに登録されていない。入力パラメータが多く、設定の手間が大きい。
標準トランザクションでは見ないパラメータが多く、難解。

BAPI_BOM_UPLOAD_SAVE

このBAPIは、指定したBOMを「洗い替え」で登録する。つまり、既にBOMが登録されている場合、そのBOMは削除された後、直ちに新しいBOMが登録される。この際、BOMが登録済みであることを警告したり、登録済みであれば更新を中止したりするような制御は行われない。

BOMは毎回上書きされるが、それが運用上望ましい場合、このBAPIは有用である。前述のBAPI_MATERIAL_BOM_GROUP_CREATEよりも設定すべきパラメータが少ないため、扱いやすいBAPIと言える。

主要な入力パラメータと設定値

「機能」には一律’009’を設定する。「機能」以外のパラメータは、標準トランザクションから入力する値と同じ値を設定する。

Parameter
パラメータ
Description
説明
ABAP/4
Data Type
NTLEN
内部長
Decimal
小数点以下桁数
設定値
IS_MAST通信構造 MAST
OPERATION機能C3‘009’
MATERIAL品目コード (18 桁)C18親品目の品目コード
PLANTプラントC4
BOM_USAGEBOM 用途C1
ALT_BOM代替 BOMC2
IS_STZU通信構造 STZU
OPERATION機能C3‘009’
BOM_CATEGOBOM カテゴリC1‘L’
BOM_USAGEBOM 用途C1
IT_STAS通信構造 STAS のテーブル
OPERATION機能C3‘009’
BOM_CATEGOBOM カテゴリC1‘L’
ALT_BOM代替 BOMC2
VALID_FROM有効開始日D8
IT_STKO通信構造 STKO のテーブル
OPERATION機能C3‘009’
BOM_CATEGOBOM カテゴリC1‘L’
ALT_BOM代替 BOMC2
VALID_FROM有効開始日D8
UNBASEBOM の基本数量単位C3
BASE_QTY基本数量P133
BOM_STATUSBOM ステータスN2
IT_STPO通信構造 STPO のテーブル
OPERATION機能C3‘009’
BOM_CATEGOBOM カテゴリC1‘L’
VALID_FROM有効開始日D8
COMPONENTBOM 構成品目C18子品目の品目コード
ITEM_CAT明細カテゴリ (部品表/配合表)C1
BOM_ITM_NOBOM 明細番号C4
UNCOMP構成品目数量単位C3
COMPON_QTY構成品目数量P133

メリットとデメリット

メリットデメリット
BOMを登録する他のBAPIと比べて、入力パラメータが少ない。
新規登録と変更を意識する必要がない。
登録済みのBOMは警告なしに上書きされる。

MPE_VERSNBOM_CREATE_INITIAL

PEO(Production Engineering and Operations)モジュールを導入すると利用可能になるBAPIであり、「バージョンBOM」(BOM用途’E’または’V’)の登録に特化している。入力パラメータに「BOM用途」はあるものの、設定可能な値は’E‘(E-BOM)または’V’(M-BOM)のみである。

Fioriアプリや T-Code: VMP_MAINTAIN などの標準画面では、バージョンBOMを登録する際、BOMバージョン番号は自動採番されるため、BOMバージョン番号を指定することはできない。しかし、このBAPIでは、任意のBOMバージョン番号を指定できる

ただし、このBAPIではBOMバージョン番号のチェックは行われないため、不整合のあるBOMバージョン番号を登録できてしまう。たとえば、バージョン「0001」のバージョンBOMが登録されている状態で、本来は次のバージョン「0002」を指定すべきところを「0003」としても、エラーや警告なく「0003」のバージョンBOMが登録されてしまう(既に登録されている場合はエラーとなる)。また、バージョン番号に全角文字を含めた「0002」を指定しても、そのまま登録されてしまう。

したがって、このBAPIを使用してバージョンBOMを登録するプログラムを開発する場合、事前にBOMバージョン番号の整合性をチェックする処理が不可欠である。

主要な入力パラメータと設定値

パラメータに設定する値は、Fioriアプリ「部品表/配合表の更新」から入力する値と同じなので、入力に迷うことはあまりいはずだ。BOM構成品目の設定は「T_BOM_ITEMS_IN」に対して行う。

メリットとデメリット

パラメータが標準トランザクションの入力項目とほぼ同じなので、設定に戸惑うことがなく、使いやすいBAPIである。バージョンBOMしか登録できないのがとても残念だ。

メリットデメリット
バージョンBOMを登録できる。
任意のBOMバージョン番号を指定できる
パラメータがわかりやすい。
バージョンBOM以外のBOMを登録できない。
BOMバージョン番号の整合性はチェックされないため、不整合のあるバージョン番号を登録できてしまう。

Web API

SAP S/4HANAなら、Web APIを使ってBOMの操作が行える。

SAP Business Accelerator Hub を使えば、APIのJsonスキーマなどを参照することが可能だ。BOMを操作するAPIは、Accelerator Hubを「Bills of Material」で検索すれば見つかる。

Accelerator Hub の以下のリンクが「Bills of Material」のリファレンスとなっている。

SAP S/4HANA Cloud Private Edtion

https://api.sap.com/api/OP_API_BILL_OF_MATERIAL_SRV_0002/resource/Bill_of_Material

SAP S/4HANA Cloud Public Edtion

https://api.sap.com/api/API_BILL_OF_MATERIAL_SRV_0002/resource/Bill_of_Material

APIにはPost、Get、Deleteなどメソッドが揃っているので、BOMの登録、変更、照会など、一通りのことができる。

まとめ

製造業において、BOMの登録は、品目コードと並んで大量のデータを扱う代表的な業務である。生産計画や部材調達を迅速に進めるには、BOMを正確かつ効率的に登録することが重要だ。

しかし、手作業でのBOM登録は非効率であるため、CADやPDMと連携するインターフェースの開発や、CSVやExcelファイルを一括アップロードするカスタムプログラムの導入など、工夫が求められる。その際、BAPI(汎用モジュール)やWeb API を活用することで、開発の効率化が可能となる。

本記事で紹介した入力画面やBAPIの特徴を理解し、それらを活用して効率的なBOM登録の仕組みを構築してほしい。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次