# SAP Business One

Workist verbindet sich über den Service Layer von SAP Business One mit Ihrer Firmendatenbank. Workist liest Geschäftspartner und Artikel als Stammdaten und legt abgeschlossene Bestellungen als Kundenaufträge an. In SAP Business One wird nichts installiert.

Diese Seite gilt für SAP Business One. Für SAP ECC und SAP S/4HANA siehe [SAP-Konnektor](/docs/data-exchange/connectors/sap.md).

## Überblick

**Voraussetzungen**

- SAP Business One mit Service Layer. Workist muss den Service Layer über das Internet erreichen.
- Ein Service-Layer-Benutzer, der Geschäftspartner, Artikel und Katalognummern lesen sowie Kundenaufträge und Anlagen anlegen darf.
- Die Auftragsanlage ist derzeit auf eine bestimmte Feldstruktur in SAP Business One abgestimmt. Stimmen Sie die Einrichtung deshalb vorab mit Ihrer Ansprechperson bei Workist ab.

**Datenfluss**

| Richtung | Inhalt | Zeitpunkt |
| --- | --- | --- |
| SAP Business One → Workist | Geschäftspartner, Ansprechpartner, Adressen, Artikel, Katalognummern | täglich um 01:30 UTC und auf Knopfdruck |
| Workist → SAP Business One | Kundenauftrag mit Positionen und Anlagen | sobald eine Bestellung abgeschlossen ist |

## Was wir aus SAP Business One lesen

| Stammdaten in Workist | Quelle in SAP Business One |
| --- | --- |
| [Kunden](/docs/master-data/customers.md) | Geschäftspartner (Kunden) |
| [Kundenkontakte](/docs/master-data/customer-contacts.md) | Ansprechpartner der Geschäftspartner |
| [Lieferadressen](/docs/master-data/delivery-and-invoice-recipients.md) | Adressen der Geschäftspartner vom Typ Lieferadresse (`bo_ShipTo`) |
| [Rechnungsadressen](/docs/master-data/delivery-and-invoice-recipients.md) | Adressen der Geschäftspartner vom Typ Rechnungsadresse (`bo_BillTo`) |
| [Artikel](/docs/master-data/articles.md) | Artikel |
| [Kundenspezifische Artikelnummern](/docs/master-data/articles.md) | Katalognummern der Geschäftspartner (`AlternateCatNum`) |

- Mit den Filterabfragen der Integration grenzen Sie ein, welche Geschäftspartner und Artikel Workist liest. Ohne Filter liest Workist alle.
- Preise, Einheitenumrechnungen, Rahmenverträge und Angebote liest Workist nicht aus SAP Business One.
- Geschäftspartner ohne Automatisierungskennzeichen: Tragen Sie in der Integration eine Geschäftspartner-Eigenschaft ein (zum Beispiel `Properties50`) und einen Text. Geschäftspartner, bei denen diese Eigenschaft nicht gesetzt ist, erhalten den Text als interne Notiz in den Workist-Stammdaten. Ist die Prüfung „Kundeninterne Notiz“ im Kanal aktiv, gehen ihre Bestellungen in die manuelle Bearbeitung, siehe [Prüfungen](/docs/channel-configuration/document-processing/validation-checks.md).

Welche Felder Workist im Einzelnen übernimmt, steht in der [Feldreferenz](#feldreferenz).

## Was wir in SAP Business One schreiben

Für jede abgeschlossene Bestellung legt Workist einen Kundenauftrag an:

- **Kopf**: Kunde, Bestellnummer, Bestelldatum, Lieferdatum, Kundenkontakt, Hinweistext und die Liefer- und Rechnungsadresse.
- **Positionen**: Artikelnummer und Menge. Den Preis setzt SAP Business One. Ausnahmen: Ist beim Geschäftspartner die Eigenschaft 51 gesetzt, übernimmt Workist den Einzelpreis aus dem Dokument. Ist „Preise bei Auftragserstellung mit der API berechnen?“ aktiv, fragt Workist Preis und Rabatt bei der Preisfindung von SAP Business One ab und schreibt sie in die Position.
- **Adressen**: Hat Workist die Adresse einer Adress-ID aus den Stammdaten zugeordnet, verweist der Auftrag auf diese Adresse. Sonst überträgt Workist die Adresse als Text in den Auftrag. Enthält das Dokument keine Adresse, nimmt Workist die Standardadresse des Geschäftspartners.
- **Anlagen**: Auf Wunsch hängt Workist das Bestelldokument an den Auftrag. Die Original-E-Mail und einen mitgeschickten Lieferschein hängt Workist an, wenn Sie dafür einen Dokumentennamen eintragen.
- Der Auftrag wird als nicht bestätigt angelegt.

Als Referenz am Beleg in der Workbench speichert Workist den internen Schlüssel des Kundenauftrags (`DocEntry`), nicht die in SAP Business One angezeigte Belegnummer.

Workist legt nur neue Kundenaufträge an und ändert keine bestehenden Belege.

## Einrichtung in der Workbench

1. Öffnen Sie **Einstellungen** → **Geschäftssysteme (ERP)** → **Integrationen** und klicken Sie bei SAP Business One auf **Verbinden**.
2. Tragen Sie die Verbindung ein:

   | Feld | Inhalt |
   | --- | --- |
   | Name der Integration | frei wählbar |
   | Service Layer URL | Adresse Ihres Service Layers |
   | SAP Business One Firmen-DB | Name der Firmendatenbank |
   | Service Layer Benutzer, Service Layer Passwort | Zugang des Service-Layer-Benutzers |
   | Bestellungskanäle | Kanäle, deren Bestellungen als Kundenaufträge angelegt werden |

3. Optional:

   | Feld | Wirkung |
   | --- | --- |
   | Filterabfrage, um die zu synchronisierenden Kunden zu filtern | Filter für die Geschäftspartner, die Workist liest |
   | Filterabfrage, um die zu synchronisierenden Artikel zu filtern | Filter für die Artikel, die Workist liest |
   | Liefertermine in der Vergangenheit vermeiden | fehlt das Lieferdatum oder liegt es in der Vergangenheit, setzt Workist den nächsten Tag |
   | Preise bei Auftragserstellung mit der API berechnen? | Workist fragt beim Anlegen für jede Position Preis und Rabatt aus der Preisfindung von SAP Business One ab |
   | Standardversandmethode für den Positionseintrag überschreiben | Versandart, die Workist in jede Position schreibt |
   | Geschäftspartner-Eigenschaft und Text für nicht automatisierte Geschäftspartner | siehe [Was wir aus SAP Business One lesen](#was-wir-aus-sap-business-one-lesen) |
   | Originalbestellung zu Business One hochladen? | hängt das Bestelldokument an den Auftrag |
   | Benutzerdefinierter Dokumentenname für E-Mails bzw. für Lieferscheine zum Hochladen | hängt zusätzlich die Original-E-Mail bzw. einen mitgeschickten Lieferschein an |
   | Benutzerdefiniertes Dokumententyp-Feld in Business One | schreibt den jeweiligen Dokumentennamen (Bestellung, E-Mail, Lieferschein) in dieses Feld der Anlage |

4. Klicken Sie auf **Erstellen**. Mit **Stammdaten Update starten** laden Sie die Stammdaten sofort.

Wie die Stammdaten in den Kanälen ankommen und wie Workist die Kanäle umstellt, steht unter [Was alle Konnektoren gemeinsam haben](/docs/data-exchange/connectors.md#common-behaviour).

## Fehlerbehandlung

Lehnt SAP Business One den Kundenauftrag ab, erscheint die Bestellung wieder unter den offenen Belegen, mit der Meldung des Service Layers. Workist versucht es nicht automatisch erneut. Beheben Sie die Ursache und schließen Sie die Bestellung nach **Erneut assistieren** wieder ab.

Kann Workist die Preisfindung beim Anlegen nicht abfragen, legt Workist den Auftrag trotzdem an. Den Preis setzt dann SAP Business One.

## Einschränkungen

- Workist überträgt nur Bestellungen. Anfragen, Rechnungen und andere Belegarten unterstützt der Konnektor nicht.
- Workist prüft vor dem Anlegen nicht, ob es zur Bestellung schon einen Kundenauftrag gibt. Wird eine Bestellung erneut abgeschlossen, entsteht ein weiterer Kundenauftrag.

## Feldreferenz

### Gelesene Felder

#### Kunden

| Workist-Spalte | Aus SAP Business One |
| --- | --- |
| `client_id1` | `CardCode` |
| `internal_note` | Text aus der Einstellung für nicht automatisierte Geschäftspartner, wenn die dort genannte Eigenschaft beim Geschäftspartner nicht gesetzt ist |
| `client_contact_person1` | `MailAddress` |
| `company_name` | `CardName` |
| `address1` | `Address` |
| `address2` | `MailAddress` |
| `zip_code` | `ZipCode` |
| `city` | `City` |
| `country_subdivision` | `County` |
| `country` | `Country` |
| `extra_data` | benutzerdefinierte Felder (`U_…`), Standard-Rechnungsadresse (`BilltoDefault`), Standard-Lieferadresse (`ShipToDefault`), Eigenschaften 11, 51 und 52 |

#### Kundenkontakte

| Workist-Spalte | Aus SAP Business One |
| --- | --- |
| `partition_id` | `CardCode` |
| `contact_id` | `InternalCode` |
| `first_name` | `FirstName` |
| `last_name` | `LastName` |
| `phone` | `Phone1` |
| `email` | `E_Mail` |

#### Liefer- und Rechnungsadressen

Beide Adressarten haben dieselben Felder.

| Workist-Spalte | Aus SAP Business One |
| --- | --- |
| `partition_id` | `BPCode` |
| `address_id1` | `AddressName` |
| `address_id2` | `GlobalLocationNumber` |
| `name` | `AddressName2` |
| `address1` | `Street` + `StreetNo` |
| `zip_code` | `ZipCode` |
| `city` | `City` |
| `country_subdivision` | `County` |
| `country` | `Country` |
| `misc` | `BuildingFloorRoom` |

#### Artikel

| Workist-Spalte | Aus SAP Business One |
| --- | --- |
| `article_id1` | `ItemCode` |
| `description` | `ItemName` + `User_Text` |
| `description_boosted` | `User_Text` – sonst `ItemName` |
| `order_units` | `SalesUnit` |
| `sales_units` | `SalesUnit` |
| `extra_data` | benutzerdefinierte Felder (`U_…`), Eigenschaft 12 |

#### Kundenspezifische Artikelnummern

| Workist-Spalte | Aus SAP Business One |
| --- | --- |
| `partition_id` | `CardCode` |
| `article_id1` | `ItemCode` |
| `article_id2` | `Substitute` |
| `description` | `ItemName` + `User_Text` |
| `description_boosted` | `ItemName` |
| `order_units` | `SalesUnit` |
| `sales_units` | `SalesUnit` |
| `extra_data` | benutzerdefinierte Felder (`U_…`), Eigenschaft 12 |

### Geschriebene Felder

Aufgeführt sind die Felder, die Workist befüllt. Belegnummer, Preise ohne Preisfindung, Summen und Steuern setzt SAP Business One selbst.

#### Kundenauftrag – Kopf

| Feld im Kundenauftrag | Inhalt |
| --- | --- |
| `AttachmentEntry` | Anlage mit dem Bestelldokument (nur wenn „Originalbestellung zu Business One hochladen?“ aktiv ist); Original-E-Mail und mitgeschickter Lieferschein, wenn dafür ein Dokumentenname eingetragen ist |
| `DocDate` | Bestelldatum |
| `TaxDate` | Eingangsdatum des Dokuments in Workist |
| `DocDueDate` | Lieferdatum. Mit „Liefertermine in der Vergangenheit vermeiden“: der nächste Tag, wenn das Lieferdatum fehlt oder in der Vergangenheit liegt |
| `CardCode` | Kunde (Kundennummer) |
| `NumAtCard` | Bestellnummer |
| `ContactPersonCode` | Kundenkontakt, wenn zugeordnet |
| `Confirmed` | fest: `N` (nicht bestätigt) |
| `Comments` | Hinweis Text, wenn vorhanden |
| `BillToCode` | Standard-Rechnungsadresse des Geschäftspartners, wenn das Dokument keine Rechnungsadresse enthält |
| `PayToCode` | Rechnungsadresse (Adress-ID aus den Stammdaten) – sonst die Standard-Rechnungsadresse des Geschäftspartners |
| `ShipToCode` | Lieferadresse (Adress-ID aus den Stammdaten) – sonst die Standard-Lieferadresse des Geschäftspartners |

#### Kundenauftrag – Positionen

| Feld in der Position | Inhalt |
| --- | --- |
| `LineNum` | Position (fortlaufend ab 0) |
| `ItemCode` | Artikelnummer |
| `Quantity` | Menge |
| `UnitPrice` | Einzelpreis aus dem Dokument, wenn beim Geschäftspartner die Eigenschaft 51 gesetzt ist – sonst Preis aus der Preisfindung von SAP Business One (nur mit „Preise bei Auftragserstellung mit der API berechnen?“) – sonst setzt SAP Business One den Preis |
| `DiscountPercent` | Rabatt aus derselben Preisfindung |
| `ShippingMethod` | Wert aus „Standardversandmethode für den Positionseintrag überschreiben“, wenn gesetzt |

#### Kundenauftrag – Adresse als Text

Nur wenn die Adresse im Dokument keiner Adress-ID aus den Stammdaten zugeordnet ist.

| Feld | Inhalt |
| --- | --- |
| `BillToStreet` / `ShipToStreet` | Straße und Hausnummer |
| `BillToCity` / `ShipToCity` | Ort |
| `BillToZipCode` / `ShipToZipCode` | Postleitzahl |
| `BillToCountry` / `ShipToCountry` | Land |
| `BillToAddress2` / `ShipToAddress2` | Firmenname |
| `BillToAddress3` / `ShipToAddress3` | Name |
