SAP Business One 接続:注文と顧客を取り込み、在庫を確認
接尾辞 /b1s/v2 を付けない Service Layer URL、CompanyDB、B1 のユーザー名とパスワードを入力し、テスト・マッピング・有効化を行うと、注文と顧客を取り込み、在庫を確認できます。
SAP Business One コネクタはセッションログインで B1 Service Layer にサインインし、注文と顧客をシステムに取り込み、SAP Business One の在庫を確認できます。在庫をこちらから SAP Business One に戻すことはまだできないため、この接続は注文と顧客の取込と在庫確認に使います。1 接続は 1 つの CompanyDB を指します。
前提条件#
- Service Layer が利用可能な SAP Business One システムがあり、そのアドレス(例:https://b1server:50000)を知っていること。
- 接続先の会社データベースの正確な名前、つまり CompanyDB(例:SBODemoUS)を知っていること。
- その CompanyDB 内の B1 ユーザーで、API アクセス権限があり、そのパスワードを知っていること。
- 別途申請する開発者キーはありません。認証情報はこの B1 ユーザーアカウント自体です。
認証情報の取得#
- SAP Business One 管理者に Service Layer のアドレスを確認してください。https://b1server:50000 のようにホストとポートまでです。/b1s/v2 の接尾辞は付けないでください。その部分は Service Layer を呼ぶときにシステムが自動で付けます。
- 同じ管理者に CompanyDB を確認してください。これは Service Layer の Login で使う会社データベース名で、例は SBODemoUS です。
- その CompanyDB の B1 ユーザー名とパスワード(例:ユーザー manager)を用意してください。そのユーザーには API アクセス権限が必要です。ないとログインもその後の読み取りも通りません。
Integration への入力#
- Integration → コネクタマーケットプレイス → SAP Business One → 新規接続を開きます。
- base_url、必須、Service Layer URL:Service Layer のアドレス(例:https://b1server:50000)を貼ります。base_url フィールドに入力し、ホストとポートまでとし、/b1s/v2 の接尾辞は付けません。
- company_db、必須、CompanyDB:会社データベース名(例:SBODemoUS)を入力します。company_db フィールドに、管理者から受け取ったとおり正確に入力してください。
- username、必須、Username:その CompanyDB の B1 ユーザー名(例:manager)を入力します。username フィールドに入力してください。
- password、必須、Password:その B1 ユーザーのパスワードを入力します。password フィールドに入力してください。パスワードフィールドなので入力内容はマスクされ、後でフォームに再表示されることはありません。
接続テスト#
接続テストをクリックします。テストはまずこちら側で 4 項目を確認します。company_db が空だと MISSING_CONFIG、username または password が空だと MISSING_CREDENTIALS が返ります。その後、実際にログインします。CompanyDB、UserName、Password を Service Layer の Login に送り、応答の SessionId を取得し、そのセッションで Orders を $top=1、$select=DocEntry で 1 件読み、ログインできるだけでなく伝票も読めることを確認します。
これはセッションログインなので、手動で更新するトークンはありません。その後の読み取りで 401 が返った場合、システムが自動でもう一度ログインして再試行します。テストは 12 秒でタイムアウトするため、タイムアウトは通常、Service Layer のアドレスに届かない、または時間内に応答がないことを意味します。まずアドレスを確認してから再テストしてください。
Mapping / テンプレート選択#
取り込んだ注文には SAP Business One のテンプレートを選び、各 B1 注文が標準注文として入るようにします。有効化前に実注文 1 件でプレビューを開き、伝票・明細・数量が SAP Business One の内容と一致するか確認してください。B1 から取り込んだ顧客記録と在庫確認は SAP Business One の値をそのまま使うため、B1 の名称とコードは、こちらで使う製品と揃えておいてください。
有効化#
有効化後、Integration は設定した頻度で SAP Business One から新しい注文と顧客を取得し、SAP Business One の在庫もこちらから確認できます。在庫をこちらから SAP Business One に戻すことはまだできないため、在庫の書き戻しが必要な場合は SAP Business One 側で別途行ってください。最初に取り込んだ数件の注文は Runs / Logs で確認してから、無人運用にしてください。
よくある質問#
テストが 401 で失敗する(INVALID_CREDENTIALS)
Service Layer が Login に 401 を返しました。これは CompanyDB、ユーザー名、パスワードのいずれかが無効という意味で、少なくとも 1 つが SAP Business One のそのデータベースの記録と一致していません。
3 つの値を 1 つずつ確認してください。company_db が管理者から受け取った正確な CompanyDB であること、username と password が同じ CompanyDB のものであることを確認し、パスワードを入力し直して再テストしてください。
テストが MISSING_CONFIG または MISSING_CREDENTIALS を返す
必須フィールドが空で、テストはログインを試す前に止まっています。MISSING_CONFIG は company_db が空、MISSING_CREDENTIALS は username または password が空という意味です。
必須の 4 項目、base_url、company_db、username、password をすべて入力し、接続を保存してから再テストしてください。
URL が /b1s/v2 で終わるとログインに失敗する
貼り付けた base_url が /b1s/v2 を含む Service Layer の完全なアドレスになっています。その部分はシステムが自動で付けるため、フィールドに入っているとアドレスに 2 回現れ、Login の呼び出しが誤ったパスに行きます。
base_url をホストとポートだけ(例:https://b1server:50000)に短くし、保存して再テストしてください。
テストが失敗し、セッションが返らない(AUTH_FAILED)
Login の呼び出しが SessionId なしで戻ったため、B1SESSION セッションが作成されず、ログイン後に続く注文の読み取りが実行できません。詰まっているのはログインのステップ自体です。
まず base_url が Service Layer のルートアドレスで、ホストとポートまでで余分なパスがないか確認してください。次に SAP Business One 管理者に、その CompanyDB とユーザーで Service Layer が Login に応答するか確認してもらい、確認が取れてから再テストしてください。