外部システム連携 / ERP / SAP Business One
SAP Business One連携ガイド SkyPlanner APSによる生産スケジューリング
このガイドでは、SAP Business OneのパートナーとITチームに向けて、B1をSkyPlanner APSに接続する方法を解説します。使用するAPI、連携するオブジェクトとその送信先、B1の連携プロジェクトでつまずきやすい点を取り上げます。SkyPlannerはService Layerを通じて、SAP Business Oneと双方向に連携します。
- 製造指図、工順ステージ、リソース、品目、購買発注を取り込みます。
- 計画開始日と期日を製造指図に書き戻します。
- 作業者の時間記録をReceipt and Issue for Productionとして転記します。
- SkyPlannerのWebhookが、スケジュールの変更を発生時に通知します。
品目、BOM、製造指図、在庫、会計は引き続きSAP Business Oneで管理し、製造モジュールもそのまま使用します。SkyPlannerチームが導入支援の段階でB1の標準オブジェクトに合わせて連携を設定し、本稼働後もサポートします。工順ステージ、リソースグループ、ユーザー定義項目、アドオンは会社データベースごとに異なります。連携設定では、こうした違いを対応付けます。
Laboratory & Alliedは、HANA上のSAP Business OneとSkyPlannerを連携して運用しています。導入のメリットについては、SAP Business Oneの生産スケジューリングのページをご覧ください。
SAP Business Oneの連携方法
SAP Business Oneには三つの連携インターフェースがあります。クラウド型スケジューラとの連携には、Service Layerを標準として使用します。
| 連携方式 | 概要 | APS連携への適性 |
|---|---|---|
| Service Layer | REST/OData API。/b1s/v1はOData v3、/b1s/v2はOData v4に対応します。SAP Business One version for SAP HANAで動作し、10.0 PL01以降はMicrosoft SQL Serverでも動作します。 | 基本となる連携方式。HTTPとJSONを使用し、クラウドサービスから利用できます。 |
| DI API | Windows COMライブラリ。製造指図はProductionOrdersオブジェクトで扱い、OWORテーブルに保存されます(オブジェクトタイプ202)。 | 既存システムやオンプレミスのミドルウェア向け。Windowsホストが必要です。 |
| Integration Framework (B1if) | 伝票単位の連携シナリオに対応するSAPのミドルウェア。 | パートナーがすでにB1ifのシナリオを運用している場合に有用です。 |
認証
Service Layerはセッション認証を使用します。POST /b1s/v1/LoginのリクエストにCompanyDB、UserName、Passwordを指定すると、B1SESSION Cookieを受け取ります。負荷分散構成では、オプションでROUTEIDも返されます。デフォルトのSessionTimeoutは、操作がない状態で30分です。同期処理が終了したら、明示的にLogoutを呼び出してください。SkyPlannerから書き込まれた変更をすべて変更ログで追跡できるよう、B1に連携専用ユーザーを作成します。
生産スケジューリングに使用するService Layerのエンティティ
| データ | Service Layerのエンティティ |
|---|---|
| 品目と計画データ | Items |
| 部品表と工順のステージ | ProductTrees(Lines、Stages) |
| 機械、作業者、その他のリソース | Resources, ResourceGroups |
| 製造指図 | ProductionOrders(Lines、Stages) |
| 倉庫別在庫 | Itemsの在庫データ、Warehouses |
| 未完了の購買発注と納入日 | PurchaseOrders(DocumentLines:未入荷数量、ShipDate) |
| 購買発注に対する入庫 | PurchaseDeliveryNotes(購買発注入庫、オブジェクトタイプ20) |
| 製造出庫 | InventoryGenExits |
| 製造入庫 | InventoryGenEntries |
| Webhookの設定 | EventSubscriptions, EventNotifications |
デフォルトのページサイズは20レコードです。Prefer: odata.maxpagesizeヘッダー、またはPageSize設定(b1s.conf内)でサイズを増やし、odata.nextLinkをたどって取得してください。$expandを使えば、製造指図の明細とステージを一度の呼び出しで取得できます。大量のデータを書き戻す場合は、バッチリクエストを使用します。
イベントとWebhook
SAP Business One 10.0 FP 2602以降、Service LayerはWebhookに対応しています。デフォルトでは無効です。CompanyService_UpdateAdminInfoでEnableWebhook = tYESを指定し、会社ごとに有効化します。その後、次の三つの要素を指定してPOST EventSubscriptionsを実行します。
- 通知先の
WebhookURL - 認証方式を指定する
AuthenticationType:None、Basic、HMAC、OAuthから選択。デフォルトはHMAC - ビジネスオブジェクトとトランザクションタイプを指定する
EventCollection
WebhookURLには、ホスト名と一致する証明書を使ったHTTPSが必要です。購読できるイベントはEventSubscriptionsService_GetEventCatalogで確認できます。Webhook Messenger Serviceが稼働している必要があります。
旧バージョンでは定期ポーリングを使用してください(後述のUpdateDateに関する注意点を参照)。SBO_SP_TransactionNotificationはデータベースレベルの検証フックであり、通知を配信するための仕組みではありません。
データの対応付け:SAP Business OneからSkyPlannerへ
| SAP Business One (Service Layer) | SkyPlannerのオブジェクト | 連携方向 | 連携頻度 |
|---|---|---|---|
Items(内製品目、Procurement Method) | 製品 | B1 → SkyPlanner | 初回取り込み後、定期的に同期 |
ProductTreesのLines(品目明細) | 製品の構成材料 | B1 → SkyPlanner | 初回取り込み後、変更時に同期 |
ProductTreesのStagesとリソース明細 | 工程と加工時間 | B1 → SkyPlanner | 初回取り込み後、変更時に同期 |
Resources(Machine、Labor、Other) | リソースと人員 | B1 → SkyPlanner | 初回取り込み。以後の変更はまれ |
ResourceGroups | リソースグループ | B1 → SkyPlanner | 初回取り込み |
ProductionOrders(Planned、Released) | オーダーと作業 | B1 → SkyPlanner | Webhook(FP 2602+)、または数分おきのポーリング |
ProductionOrdersのStages | 作業工程と実行順序 | B1 → SkyPlanner | 製造指図と同時に同期 |
Itemsの在庫(Warehouses別) | 材料在庫 | B1 → SkyPlanner | 定期的に同期(例:毎時) |
PurchaseOrders(オブジェクトタイプ22)の未完了明細と納入日 | 購買発注/入荷予定の材料と納入予定日 | B1 → SkyPlanner | 定期的に同期(例:毎時) |
PurchaseDeliveryNotes(購買発注入庫)のうち、BaseTypeが22の明細 | 購買発注明細の入荷済み数量と在庫更新 | B1 → SkyPlanner | 定期的に同期(例:毎時) |
| 開始・終了予定 | PATCH ProductionOrders({DocEntry}):StartDate、DueDate、リソース明細のStartDateとEndDate | SkyPlanner → B1 | スケジュール変更時にSkyPlannerのWebhookで通知 |
| 数量実績 | InventoryGenEntries(製造入庫) | SkyPlanner → B1 | 実績報告時、またはバッチ処理 |
| 作業時間と材料使用量の実績 | InventoryGenExits(製造出庫) | SkyPlanner → B1 | 実績報告時、またはバッチ処理 |
シフトカレンダー、人員、欠勤はSkyPlannerで管理します。B1の日次能力値は連携対象に含めません(後述の注意点の最初の項目を参照)。
連携パターン
1. マスタデータの初回取り込み。Resources、ResourceGroups、Procurement MethodがMakeのItemsと、対応するProductTreesをステージも含めて取得します。機械リソースをそれぞれSkyPlannerのリソースに対応付けます。初回の製造指図同期を行う前に、生産計画担当者と一覧を確認してください。
2. 製造指図の同期。ステータスがPlannedとReleasedのProductionOrdersを、明細とステージに$expandを指定して読み取ります。B1の製造指図にはBOMから取得した工順のステージが含まれますが、計画担当者は指図の作成後に内容を変更できます。BOMではなく、製造指図のステージを使用してください。一つの製造指図で製造する製品は一つなので、多階層の製品では階層ごとに製造指図を作成します。SkyPlannerが親製品より先に子製品をスケジュールできるよう、これらの指図を関連付けます。
未完了のPurchaseOrders明細も、未入荷数量と納入日とともにSkyPlannerの購買発注エンドポイントへ同期します。SkyPlannerは、発注済みの材料を購買発注の納入日から使用可能として扱います。B1では、購買発注入庫(PurchaseDeliveryNotes)を転記すると在庫が変動します。連携処理はこの入庫を読み取り、SkyPlannerで入荷済み数量を納入済みに更新し、残数量は未完了のまま維持します。分割入荷は一度だけ計上され、材料の確認では在庫と入荷予定の両方を考慮します。
3. スケジュールの書き戻し。スケジュールが変更されると、SkyPlannerのWebhookが発火します。連携処理は、PATCH /b1s/v1/ProductionOrders({DocEntry})を送信し、製造指図に新しいStartDateとDueDateを設定します。また、各ステージに予定期間を設定するため、StartDateとEndDateを製造指図のリソース明細(ProductionOrderLines)に設定します。リクエスト本文に含めるのはSkyPlannerが管理するフィールドだけです。複数の指図を一つの$batchリクエストにまとめて送信します。B1ユーザーは、製造指図とResource Capacityウィンドウで予定日を確認できます。Service Layerを利用できない環境では、オンプレミスのサービスからDI APIのProductionOrdersオブジェクトを使い、同じ更新を実行します(GetByKeyで取得、日付を設定、Updateで更新)。
4. 製造現場からの実績報告。作業者は、SkyPlannerのMobile ConfirmationsまたはProduction Timerで作業を記録します。各作業時間ログから、完成数量を製造入庫として登録するPOST /b1s/v1/InventoryGenEntriesと、構成品およびリソースの使用時間を製造出庫として登録するPOST /b1s/v1/InventoryGenExitsを実行します。
各伝票明細では、BaseTypeに202を、BaseEntryに製造指図のDocEntryを設定します。出庫明細には、構成品またはリソース明細のBaseLineも指定します。分割して記録された数量は、その都度転記します。バッチ管理品目やシリアル管理品目には、バッチ番号またはシリアル番号を付けます。製造指図のステータスはReleasedである必要があります。
SkyPlannerの時間記録IDをB1の伝票に保存するため、イベントを再試行しても二重転記は発生しません。転記に失敗した場合も、処理を破棄せず、再試行して結果を報告します。
5. データの管理元と競合時のルール。実装前に、次の点について合意しておきます。
- 品目、BOM、数量、倉庫、指図の作成はB1で管理します。
- 作業順序、開始・終了時刻、リソースの割り当てはSkyPlannerで管理します。
- 両方のシステムで指図の日付を変更した場合、次回のSkyPlanner実行時の結果を優先します。ただし、計画担当者がSkyPlannerでその作業をロックしている場合は除きます。
- B1で指図がClosedまたはCancelledになると、該当する作業をスケジュールから削除します。
プロジェクトの作業内容
通常、導入は導入支援の開始から数週間で完了します。その前に、30日間の無料トライアルで自社のデータを使って試せます。B1から品目、リソース、未完了の製造指図をCSVまたはExcelにエクスポートし、SkyPlannerのデータインポート機能で読み込みます。連携コードを書く前に、計画担当者は実際のスケジュールを確認できます。
一般的なSAP Business One連携プロジェクトには、次の作業が含まれます。
- マスタデータの対応付け。B1のリソースとリソースグループをSkyPlannerのリソースに、工順ステージを工程に、Makeの品目を製品に対応付けます。
- 初期データの取り込み。品目、ステージと品目明細を含むProduct Trees、リソース、倉庫別在庫を取り込みます。
- 製造指図と購買発注の同期。未完了の製造指図を明細・ステージとともに同期し、未完了の購買発注も納入日とともに同期します。
- スケジュールの書き戻し。開始予定日と完了予定日を
ProductionOrdersに書き戻します。 - 現場実績の登録。SkyPlannerの時間記録からReceipt and Issue for Productionを転記します。
- 現行計画と並行した検証。計画担当者がSkyPlannerのスケジュールを現在の計画方法と比較します。
- 本稼働。SkyPlannerのスケジュールを正式な計画として使用します。
B1のリソースと工順ステージが整理されていれば、対応付けにかかる時間を短縮できます。Laboratory & Alliedでは、連携はプロジェクトの中でも特に負担の少ない作業でした。社内ITチームが、HANA上のSAP Business Oneとの連携をほぼ独力で実装しました。複数の工程を経て製品を組み合わせるケースなど、特に複雑な部分ではSkyPlannerチームが支援しました。
SAP Business One連携での注意点
日次能力値ではシフトを表現できません。
B1はリソースごとに、日単位でDaily Internal CapacityとSingle Run Capacityを保持します。SAP Learningにも”These capacities are defined on a daily basis,”(これらの能力値は日単位で定義されます)と記載されています。SAPのガイドによると、Required Daysの計算は”a single production order can be produced on a single machine”(一つの製造指図を一台の機械で生産できる)ことが前提です(SAP操作ガイド)。これらの数値を、実際の機械や人員の能力を考慮する生産スケジューリングの能力値としてそのまま転用しないでください。シフト、人員、リソースの効率はSkyPlannerで定義します。
工順はBOM内で管理されます。
独立した工順マスタはありません。実行順序はProduct Tree内のRoute Stage明細で保持し、Waiting Daysは手入力します。ProductTreesとProductionOrdersのStagesを読み取り、すべてのリソース明細がいずれかのステージに属していることを確認してください。ステージのない製造指図では、スケジューラが工程の実行順序を把握できません。
リソース明細の数量は換算が必要です。
BOM明細のQuantityは、一個を生産するためではなく、BOMヘッダに指定された数量を生産するために必要な量です。Additional Quantityは、”regardless of the quantity of the parent item produced”(親品目の生産数量にかかわらず)、計画時間に加算されます(SAP操作ガイド)。段取りと同様に、指図ごとに発生する固定時間として扱ってください。単位当たりの稼働時間を算出する際は、まずヘッダの数量で割る必要があります。そうしないと、すべての作業時間に倍率のずれが生じます。
リソースのマスタデータは、十分に整理されていないことがほとんどです。
リソースはMachine、Labor、Otherに分類されます。機械は固定資産に、労務は従業員に紐付けることができ、リソースの購買・販売用に非在庫品目を紐付けることもできます。ただし、これらの情報だけでは、どのリソースが実在するスケジューリング対象の機械なのかは判断できません。SkyPlannerのリソース一覧に取り込む前に、リソースグループと重複リソースを整理してください。
在庫ルールによって実績登録が失敗することがあります。
入庫と出庫は在庫伝票です。よくあるエラーは、InventoryGenEntriesとInventoryGenExitsの取り違え、管理対象品目のバッチ番号やシリアル番号の指定漏れ、ステータスがPlannedの製造指図に対する転記です。
セッションとページング。
セッションの有効期限が切れると、”Invalid session or session already timeout.”(セッションが無効か、すでにタイムアウトしています)というエラーが返されます。このエラーが発生したら、再ログインしてください。デフォルトではページサイズが20レコードのため、odata.nextLinkを処理しない同期では、通知されないまま取得結果が途中で切れてしまいます。
UpdateDateには時刻が含まれません。
OWORテーブルのUpdateDateは日付フィールドで、更新時刻は別のUpdateTSに格納されています。UpdateDateだけで絞り込むポーリングでは、その日に変更されたすべての製造指図を実行のたびに取得してしまいます。両方のフィールドを組み合わせるか、連携側で重複を除去してください。
Webhookの配信は少なくとも一回行われます。
Webhook Messengerは配信に失敗すると最大五回再試行し(2、4、8、16、32秒後)、それでも配信できなければ失敗として記録します。再試行によって重複が発生する可能性があり、配信順序が保証されるのは同一会社内だけです。イベントIDに基づいてハンドラの冪等性を確保し、毎晩の照合用ポーリングも継続してください。
SAP Business One連携の構築担当
作業では、工順ステージ、リソース、B1の設定を対応付けます。さらに、段取り時間マトリクス、工具、作業者数、代替リソースなど、B1のスケジューリングでは考慮されない制約も設定します。
- SkyPlannerチームが導入支援の段階で設定し、本稼働後もサポートします。B1の運用方法は会社ごとに異なり、その違いに対応するノウハウをここで活用します。これが標準の進め方です。
- お取引のあるSAP Business Oneパートナーも参加できます。貴社の会社データベース、アドオン、ユーザー定義項目を熟知したパートナーなら、Service LayerとSkyPlannerのREST APIを使って連携を構築できます(APIリファレンス)。
- 自社の開発者による構築も可能です。SkyPlannerのREST APIでは、指図、製品、資材、工程、購買発注、時間記録を読み書きできます。認証にはJWT Bearerトークンを使用します。API仕様はSwagger/OpenAPIで記述されており、公開ドキュメントはSkyPlannerドキュメントで確認できます。Webhookがスケジュールとステータスの変更をリアルタイムで通知します。SkyPlannerのAPIキーだけで開発を始められ(連携チュートリアル)、必要に応じてSkyPlannerチームが支援します。Laboratory & Alliedの社内ITチームも、この方法で構築しました。
まず30日間の無料トライアルでスケジュールを検証してください。工場の実情に合ったスケジュールを確認したうえで、連携を開始できます。
技術チームがB1連携にSkyPlannerを選ぶ理由
- 小規模で範囲が明確な連携には、SkyPlannerを。B1の標準オブジェクト(製造指図、Product Trees、Resources、Items)を取り込み、日付とIssue and Receipt from Productionを返す構成です。B1の製造モジュールの変更も、データ移行も不要です。
- 早い段階で導入効果を検証したいなら、SkyPlannerを。30日間の無料トライアルでは、CSVにエクスポートしたデータを使い、最大20のリソースで試せます。クレジットカードは不要です。連携を始める前に、自社のスケジュールを確認できます。
- 現場の制約を守るスケジュールが必要なら、SkyPlannerを。段取り替え時間、共用工具、複数の作業者を要する作業、代替リソース、在庫、未完了の購買発注は、すべてSkyPlannerでモデル化します。連携側はB1のデータを渡すだけです。
- 計画担当者と作業者が同じシステムを使うなら、SkyPlannerを。Arcturusエンジンが数秒でスケジュールを作成し、生産状況が変わるとAutopilotが自動で再スケジューリングします。作業者はスマートフォンやタブレットで作業を記録し、連携を通じてその実績をB1に書き戻します。
- 費用の見通しを立てたいなら、SkyPlannerを。料金は5リソース込みで月額199 €から。月単位の請求で、いつでも解約できます。連携費用は、貴社の工程と要件に合わせ、ご利用プランと併せて事前にお見積もりします。開始前に総費用を把握できます。
計画機能で補うべき点については、SAP Business Oneの生産スケジューリング解説をご覧ください。他のERPとの連携は、ERP連携一覧で確認できます。
製造業のSkyPlannerユーザーの声
+90%生産効率
「生産効率が90%向上しました。」
Abdul Rucyinga、IT部門責任者
Laboratory & Allied · 医薬品製造
生産効率が90%向上。全リソースを対象とした三か月分の最適化済み計画を、30分未満で作成できます。
2 h毎週の業務時間を削減
「SkyPlannerによって、Excelの表で行っていた生産計画から、リアルタイムで生産を最適化する運用へ移行できました。」
Kalle Kalliomäki、サプライチェーンスペシャリスト
UTU · 配電盤・開閉装置
生産計画にかかる業務時間を毎週2時間削減し、新しい作業待ちリストを数秒でラインに届けています。
6か月先まで営業部門が余力を把握
「SkyPlannerは、あらゆる生産計画の基盤となり、その信頼性を支えています。」
Anu Järvinen氏、生産管理責任者
Fredman Operations · 食品用包装紙
営業部門は六か月先までの余力を把握できるようになりました。以前は回答に一時間以上かかっていたスケジュール変更の依頼にも、数秒で回答できています。
99.2%の納期遵守率
「SkyPlannerによってボトルネックを特定しやすくなり、生産管理で把握すべきことが明確になりました。」
Toni Tuori氏、生産管理責任者
Piristeel · 屋根用安全設備・雨水排水システム
今年の納期遵守率は99.2%に達しました。スケジューリングにより、一日あたり最大四時間の業務時間を削減しています。
よくある質問
SAP Business Oneとの連携は誰が構築しますか?
SkyPlannerチームが導入支援の過程で双方向連携を設定し、本稼働後もサポートします。製造指図、工順の各工程、リソース、購買発注、入庫のデータをSkyPlannerに取り込みます。SAP Business Oneには、スケジューリングで決定した日程とIssue and Receipt from Productionのデータを書き戻します。B1パートナーや自社の開発者が、Service LayerとSkyPlannerのREST APIを使って連携を構築することもできます。APIキーがあれば着手できます。
SkyPlannerとSAP Business Oneの連携導入には、どのくらいの期間がかかりますか?
通常は、導入支援の開始から数週間で完了します。チームがリソースと工順の各工程を対応付け、製造指図と購買発注を連携させます。本稼働前には、現在の計画と照らし合わせてスケジュールを検証します。
Service LayerとDI APIのどちらを使うべきですか?
新規に構築する場合はService Layerを使用します。HTTPベースで、HANAとSQL Server上で動作し、クラウド型のスケジューラに適しています。DI APIを使用するのは、既存のミドルウェアがすでにDI APIに依存している場合に限ります。
SAP Business One 10.0 FP 2602は必要ですか?
必要なのはWebhookを使う場合だけです。それ以前の10.0バージョンでは、定期的なポーリングで連携します。
スケジューリングで決定した日程は、どのようにSAP Business Oneへ書き戻されますか?
SkyPlannerのスケジュール変更Webhookを起点に、PATCH /b1s/v1/ProductionOrders({DocEntry})を実行します。製造指図にStartDateとDueDateを、リソース明細にStartDateとEndDateを設定します。生産数量と作業時間の実績は、InventoryGenEntriesとInventoryGenExitsとして書き戻し、BaseTypeに202を指定し、BaseEntryとともに製造指図に関連付けます。
B1に製造用アドオンは必要ですか?
いいえ。連携で扱うのは、製造指図、Product Trees、Resources、Items、購買発注、在庫伝票というB1の標準オブジェクトだけです。新しい製造データモデルへの移行は一切行いません。
連携を構築する前に、自社のB1データでSkyPlannerを試せますか?
はい。30日間の無料トライアルでは、CSVまたはExcelでデータを取り込み、最大20リソースまで利用できます。クレジットカードは不要です。無料トライアルを開始するか、自社のB1環境について営業担当に相談してください。