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 ERPにおいては、BOMをいきなり登録することはできない。BOMの登録に先立ち、品目マスタを登録しておく必要がある

ERPシステムとは別次元の話として、現実における製品設計とは、BOMを設計することを意味する。BOMを設計することによって、その製品を構成する部品が決まる。すなわち、現実世界では「BOMが先」であり、構成品=品目はBOMの結果として導き出されるのである。

しかし、ERPシステムにおいてはこの順序が逆転する。

現実世界では、BOMの設計を通じて品目を決定していくため、「まずBOM」という意識が自然にはたらく。だが、ERPシステム上では、マスタデータの登録手順として「まず品目マスタの登録」が必要である。

ERPにおけるBOMの登録では、親品目・子品目のいずれについても、あらかじめ登録された品目(品目コード)を指定しなければならない。すなわち、品目マスタが登録されていなければ、BOMの登録自体が不可能なのである。

下の自転車BOMの例であれば、「自転車」「フレーム」「タイヤ」「サドル「ペダル」「ブレーキ」を、品目マスタとして先に登録しておく。

親品目子品目数量
自転車フレーム1
自転車タイヤ2
自転車サドル1
自転車ペダル2
自転車ブレーキ2
自転車のBOM

BOM登録に必要な品目マスタの項目は?

BOMの主な用途は、MRPや、それに基づいて生成される購買発注や製造指図である。このため、一見すると「購買ビュー」や「MRPビュー」が必要と思われがちである。しかし、実際にBOMを登録する際に必要となる情報は、品目コードだけだ。上の例からも明らかなように、BOM登録において他のビューの情報は参照されない。

したがって、SAP ERPにおいてBOM登録のために最低限必要な品目マスタの項目(ビュー)は「基本1ビュー」のみということになる。

もっとも、実運用においては基本ビューだけでは業務を行えないため、他のビューの登録も不可欠だ。「基本1ビュー」というのは、あくまでBOM登録の技術的な最低要件に過ぎない。


品目マスタを一括登録する場合、カスタムプログラム(アドオン)開発が必要となる場合がある。効率良く品目マスタを一括登録したいならBAPIが有力な選択肢となるだろう。品目マスタを登録する BAPI_MATERIAL_SAVEDATA について、どこよりも詳しく解説した記事は以下。

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

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

SAPシステムの標準機能でBOMを登録する方法は、標準トランザクション(SAP GUI)を使う方法と、Fioriアプリを使う方法がある。

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

品目BOM登録」(T-Code: CS01) は、生産BOM/販売BOM/原価計算BOMなど、各種BOMを登録できる標準トランザクションである。また、登録済みBOMの変更ならCS02、照会ならCS03 を使用する。

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

CS01は古くからある標準トランザクションなので、PEOモジュールの「バージョンBOM」(PEO専用のBOM。BOM用途は’E’および’V’)ような、最新のBOMを登録することはできない。

メリットとデメリット

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

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

SAP社は、S/4HANAの新機能向けユーザーインターフェースとして、SAP GUIではなくFioriをベースとする方針を公表している。そのため、最新の機能に対応したBOMを登録する場合は、次に紹介するFioriアプリを使用する。

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

部品表/配合表の更新」(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よりも向上していると言える。

また、CS01ではサポートされていない PEOモジュール向けの 「バージョンBOM」 も、Fioriアプリ F1813 は対応している。

メリットとデメリット

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

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

BAPI(汎用モジュール)

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

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


「そもそもBAPIとは?」という方は、以下の記事を参考にしていただきたい。標準トランザクションと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の親品目の品目コードを設定すればよい。無関係な値を設定すれば混乱を招くので、何を設定するか迷うなら、単純に親品目の品目コードを設定するか、設定せず空白のままにしておく。

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

BAPI_MATERIAL_BOM_GROUP_CREATE には、標準トランザクションでは見かけない制御用のパラメータが繰り返し登場する。入力必須の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は削除できる

証跡を重視するSAPシステムでは、アーカイブを除き、データが物理的に削除されることはほとんどない。通常、多くのデータ削除は、テーブルのレコードに「削除フラグ」を設定することで管理される。

しかし、BOMデータの削除は例外であり、物理的な削除が行われる 削除操作を実行すると、レコードに削除フラグが設定されるのではなく、データテーブルから完全に削除される。また、この削除はMRP実行後でも可能である。

BOMを削除するには、「BOM変更」(T-Code: CS02)より、メニューから「削除」を選択し、保存するだけだ。

まとめ

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

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

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


BOM登録に不可欠な品目マスタの一覧および項目一覧を表示する方法について紹介した記事は以下。

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

コメント

コメントする

CAPTCHA

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

目次