Integrationer / ERP / SAP Business One
Guide till SAP Business One-integration för produktionsplanering med SkyPlanner APS
Den här guiden visar SAP Business One-partner och IT-team hur de kopplar B1 till SkyPlanner APS. Den går igenom vilka API:er som ska användas, vilka objekt som överförs åt vilket håll och var B1-projekt brukar gå fel. SkyPlanner integreras med SAP Business One i båda riktningarna via Service Layer:
- Tillverkningsorder, steg i operationsföljden, resurser, artiklar och inköpsorder läses in.
- Planerade start- och slutdatum skrivs tillbaka till tillverkningsorderna.
- Operatörernas tidsregistreringar bokförs som Receipt and Issue for Production.
- SkyPlanners webhooks skickar planändringar direkt när de sker.
Artiklar, stycklistor, tillverkningsorder, lager och ekonomi ligger kvar i SAP Business One, och er tillverkningsmodul förblir oförändrad. SkyPlanner-teamet konfigurerar integrationen mot standardobjekt i B1 under införandet och ger support efter driftsättningen. Steg i operationsföljden, resursgrupper, användardefinierade fält och tillägg skiljer sig åt mellan företagsdatabaser. Konfigurationen mappar dessa skillnader.
Laboratory & Allied använder SkyPlanner med SAP Business One på HANA. Läs om affärsnyttan på sidan om produktionsplanering för SAP Business One.
Integrationsalternativ för SAP Business One
SAP Business One har tre integrationsgränssnitt. För ett molnbaserat planeringssystem är Service Layer standardvalet.
| Alternativ | Beskrivning | Lämplighet för APS-integration |
|---|---|---|
| Service Layer | REST/OData-API. /b1s/v1 använder OData v3, /b1s/v2 använder OData v4. Körs på SAP Business One version for SAP HANA och på Microsoft SQL Server sedan 10.0 PL01. | Förstahandsvalet. Använder HTTP och JSON och fungerar från en molntjänst. |
| DI API | COM-bibliotek för Windows. Produktionsorder representeras av objektet ProductionOrders och lagras i tabellen OWOR (objekttyp 202). | För äldre eller lokalt installerad mellanprogramvara. Kräver en Windows-värd. |
| Integration Framework (B1if) | SAP:s mellanprogramvara för integration på dokumentnivå. | Användbart om partnern redan kör B1if-scenarier. |
Autentisering
Service Layer använder sessionsbaserad autentisering. Du skickar POST /b1s/v1/Login med CompanyDB, UserName och Password och får en B1SESSION-cookie tillbaka (samt en valfri ROUTEID för lastbalanserade installationer). Standardvärdet för SessionTimeout är 30 minuters inaktivitet. Anropa Logout uttryckligen när en synkroniseringskörning är klar. Skapa en särskild integrationsanvändare i B1 så att varje ändring som skrivs från SkyPlanner går att spåra i ändringsloggen.
Service Layer-entiteter för produktionsplanering
| Data | Entitet i Service Layer |
|---|---|
| Artiklar och planeringsdata | Items |
| Stycklistor och steg i operationsföljden | ProductTrees (Lines, Stages) |
| Maskiner, personal och övriga resurser | Resources, ResourceGroups |
| Produktionsorder | ProductionOrders (Lines, Stages) |
| Lagersaldo per lager | Lagerdata från Items, Warehouses |
| Öppna inköpsorder och leveransdatum | PurchaseOrders (DocumentLines: återstående kvantitet, ShipDate) |
| Godsmottagningar mot inköpsorder | PurchaseDeliveryNotes (Goods Receipt PO, objekttyp 20) |
| Uttag till produktion | InventoryGenExits |
| Inleverans från produktion | InventoryGenEntries |
| Konfiguration av webhooks | EventSubscriptions, EventNotifications |
Sidstorleken är som standard 20 poster. Öka den med headern Prefer: odata.maxpagesize (eller PageSize i b1s.conf) och följ odata.nextLink. Använd $expand för att hämta produktionsorderns rader och steg i ett enda anrop, och batchanrop för att skriva tillbaka större datamängder.
Händelser och webhooks
Från SAP Business One 10.0 FP 2602 stöder Service Layer webhooks. De är avstängda som standard. Du aktiverar dem per företag med CompanyService_UpdateAdminInfo (EnableWebhook = tYES). Sedan skickar du POST EventSubscriptions med tre delar:
- en
WebhookURL - en
AuthenticationType: None, Basic, HMAC eller OAuth, med HMAC som standard - en
EventCollectionmed affärsobjekt och transaktionstyper
WebhookURL måste använda HTTPS med ett certifikat som stämmer överens med värdnamnet. EventSubscriptionsService_GetEventCatalog listar vad du kan prenumerera på. Webhook Messenger Service måste vara igång.
I äldre versioner använder du schemalagd pollning (se fallgropen med UpdateDate nedan). SBO_SP_TransactionNotification är en valideringshook på databasnivå, inte en kanal för att leverera händelser.
Datamappning: från SAP Business One till SkyPlanner
| SAP Business One (Service Layer) | Objekt i SkyPlanner | Riktning | Frekvens |
|---|---|---|---|
Items (tillverkningsartiklar, Procurement Method) | Produkter | B1 → SkyPlanner | Första inläsning, därefter schemalagt |
Lines i ProductTrees (artikelrader) | Produktmaterial | B1 → SkyPlanner | Första inläsning, därefter vid ändring |
Stages och resursrader i ProductTrees | Processteg och körtider | B1 → SkyPlanner | Första inläsning, därefter vid ändring |
Resources (Machine, Labor, Other) | Produktionsgrupper och personal | B1 → SkyPlanner | Första inläsning, därefter sällan ändringar |
ResourceGroups | Grupper av produktionsgrupper | B1 → SkyPlanner | Första inläsning |
ProductionOrders (Planned, Released) | Order och operationer | B1 → SkyPlanner | Webhook (FP 2602+) eller pollning med några minuters mellanrum |
Stages i ProductionOrders | Operationssteg med ordningsföljd | B1 → SkyPlanner | Tillsammans med ordern |
Lagersaldo för Items per Warehouses | Materialsaldo | B1 → SkyPlanner | Schemalagt, t.ex. varje timme |
Öppna rader med leveransdatum i PurchaseOrders (objekttyp 22) | Inköpsorder / inkommande material med förväntat leveransdatum | B1 → SkyPlanner | Schemalagt, t.ex. varje timme |
Rader i PurchaseDeliveryNotes (Goods Receipt PO) med BaseType 22 | Mottagen kvantitet på inköpsorderraden, uppdaterat lagersaldo | B1 → SkyPlanner | Schemalagt, t.ex. varje timme |
| Planerad start- och sluttid | PATCH ProductionOrders({DocEntry}): StartDate, DueDate samt StartDate och EndDate på resursraden | SkyPlanner → B1 | Webhook från SkyPlanner när planen ändras |
| Rapporterade kvantiteter | InventoryGenEntries (Receipt from Production) | SkyPlanner → B1 | Vid återrapportering eller i batch |
| Rapporterade timmar och materialförbrukning | InventoryGenExits (Issue for Production) | SkyPlanner → B1 | Vid återrapportering eller i batch |
Skiftkalendrar, personal och frånvaro hanteras i SkyPlanner. B1:s dagliga kapacitetsvärden ingår inte i dataflödet (se den första fallgropen nedan).
Integrationsmönster
1. Första inläsningen av grunddata. Hämta Resources, ResourceGroups, Items med Procurement Method satt till Make samt deras ProductTrees med steg. Mappa varje maskinresurs till en produktionsgrupp i SkyPlanner. Gå igenom listan med planerarna före den första ordersynkroniseringen.
2. Ordersynkronisering. Läs ProductionOrders med status Planned och Released och använd $expand för rader och steg. Produktionsorder i B1 innehåller steg i operationsföljden som hämtats från stycklistan, och planerarna kan ändra en order efter att den skapats. Använd stegen på ordern, inte stegen i stycklistan. En produktionsorder tillverkar en produkt, så en produkt med flera strukturnivåer hanteras med en produktionsorder per nivå. Länka dem så att SkyPlanner planerar in underprodukterna före den överordnade produkten.
Synkronisera även öppna rader i PurchaseOrders, med återstående kvantitet och leveransdatum, till SkyPlanners endpoints för inköpsorder. SkyPlanner räknar beställt material som tillgängligt på inköpsorderns leveransdatum. I B1 ändras lagersaldot när en godsmottagning mot inköpsorder, Goods Receipt PO (PurchaseDeliveryNotes), bokförs. Integrationen läser dessa mottagningar, markerar den mottagna kvantiteten som levererad i SkyPlanner och håller återstoden öppen. Delmottagningar räknas en gång, och materialkontrollerna omfattar både lagersaldo och inkommande leveranser.
3. Återskrivning av planen. SkyPlanners webhooks utlöses när planen ändras. Integrationen skickar PATCH /b1s/v1/ProductionOrders({DocEntry}) med nya StartDate och DueDate samt StartDate och EndDate på orderns resursrader (ProductionOrderLines), så att varje steg får sitt planerade tidsintervall. Anropskroppen innehåller bara de fält som SkyPlanner ansvarar för, och flera order skickas i ett enda $batch-anrop. B1-användarna ser sedan de planerade datumen på produktionsordern och i fönstret Resource Capacity. I installationer där Service Layer inte är tillgängligt görs samma uppdatering via objektet ProductionOrders i DI API (GetByKey, ange datum, Update) från en lokalt installerad tjänst.
4. Återrapportering från produktionen. Operatörerna rapporterar arbete i SkyPlanner med Mobile Confirmations eller Production Timer. Varje tidsregistrering omvandlas till ett POST /b1s/v1/InventoryGenEntries för färdig kvantitet (Receipt from Production) och ett POST /b1s/v1/InventoryGenExits för komponenter och resurstid (Issue for Production).
Varje dokumentrad har BaseType 202 och BaseEntry satt till produktionsorderns DocEntry. Uttagsraderna innehåller dessutom BaseLine för komponent- eller resursraden. Delkvantiteter bokförs i takt med att de rapporteras. Batch- och serienummer anges för artiklar som hanteras med sådan spårning, och ordern måste ha status Released.
ID:t för tidsregistreringen i SkyPlanner lagras i B1-dokumentet. Därför bokförs en händelse aldrig två gånger vid ett nytt försök. Om en bokföring misslyckas görs ett nytt försök och felet rapporteras i stället för att händelsen tappas bort.
5. Regler för dataägarskap och konflikter. Kom överens om dem innan ni börjar koda:
- B1 är styrande för artiklar, stycklistor, kvantiteter, lagerställen och skapande av order.
- SkyPlanner är styrande för körordning, start- och sluttider samt tilldelning av produktionsgrupper.
- Om en orders datum ändras i båda systemen gäller datumen från nästa planeringskörning i SkyPlanner, om inte planerarna har låst operationen i SkyPlanner.
- Order med status Closed eller Cancelled i B1 gör att operationen tas bort från planen.
Det här ingår i projektet
Implementeringen är normalt klar inom några veckor efter att införandet har påbörjats. Innan dess kan ni prova systemet kostnadsfritt i 30 dagar med era egna data. Exportera artiklar, resurser och öppna tillverkningsorder från B1 till CSV eller Excel och läs in dem med SkyPlanners dataimport. Planerarna får se en verklig produktionsplan innan någon skriver integrationskod.
Ett typiskt SAP Business One-projekt omfattar:
- Mappning av grunddata. Resurser och resursgrupper i B1 mappas till produktionsgrupper, steg i operationsföljden till processteg och artiklar av typen Make till produkter.
- Första inläsningen. Artiklar, Product Trees med steg och artikelrader, resurser samt lagersaldo per lagerställe.
- Synkronisering av tillverkningsorder och inköpsorder. Öppna tillverkningsorder med rader och steg samt öppna inköpsorder med leveransdatum.
- Återskrivning av planen. Planerade start- och förfallodatum till
ProductionOrders. - Återrapportering från produktionen. Receipt and Issue for Production bokförs utifrån tidsregistreringar i SkyPlanner.
- Testning parallellt med den nuvarande planen. Planerarna jämför SkyPlanners produktionsplan med hur de planerar i dag.
- Driftsättning. Produktionsplanen i SkyPlanner blir den gällande planen.
Välstädade resurser och steg i operationsföljden i B1 gör mappningen enkel. Hos Laboratory & Allied var integrationen en av projektets minst arbetskrävande delar. Företagets eget IT-team genomförde till stor del SAP Business One-integrationen på HANA på egen hand. SkyPlanner-teamet hjälpte till i de mest komplexa fallen, till exempel när produkter sammanförs i processer med flera steg.
Fallgropar i SAP Business One
Daglig kapacitet är inte en skiftmodell.
B1 lagrar Daily Internal Capacity och Single Run Capacity per resurs och dag: ”These capacities are defined on a daily basis,” (dessa kapaciteter definieras per dag) enligt SAP Learning. I SAP:s guide står det att beräkningen av Required Days förutsätter att ”a single production order can be produced on a single machine” (en enskild tillverkningsorder kan produceras på en enda maskin) (SAP:s praktiska guide). Använd inte dessa värden direkt som tillgänglig kapacitet vid finplanering. Definiera skift, personal och produktionsgruppernas effektivitet i SkyPlanner.
Operationsföljden ingår i stycklistan.
Det finns inga separata grunddata för operationsföljder. Rader av typen Route Stage i Product Tree anger ordningsföljden, och Waiting Days anges manuellt. Läs Stages i ProductTrees och ProductionOrders och kontrollera att varje resursrad hör till ett steg. Order utan steg ger inte planeringsverktyget någon operationsföljd.
Kvantiteter på resursrader måste räknas om.
Quantity på en stycklisterad anger vad som krävs för att producera kvantiteten i stycklistehuvudet, inte en enhet. Additional Quantity läggs till den planerade tiden ”regardless of the quantity of the parent item produced” (oavsett hur stor kvantitet av den överordnade artikeln som produceras) (SAP:s praktiska guide). Behandla den som en fast tid per order, till exempel ställtid. Dividera med kvantiteten i huvudet innan ni beräknar körtid per enhet, annars blir tiden för varje operation fel med motsvarande faktor.
Grunddata för resurser behöver oftast städas.
Resurser har typen Machine, Labor eller Other. Maskiner kan kopplas till anläggningstillgångar och arbetskraft till anställda. En resurs kan också ha en kopplad artikel som inte lagerförs, för inköp eller försäljning av resursen. Inget av detta visar vilka resurser som är verkliga maskiner som går att planera på. Städa resursgrupper och ta bort dubblerade resurser innan de blir er lista över produktionsgrupper.
Lagerregler kan stoppa återrapporteringen.
Inleveranser och uttag är lagerdokument. Vanliga fel är att blanda ihop InventoryGenEntries och InventoryGenExits, utelämna batch- eller serienummer för artiklar som kräver sådan spårning eller bokföra mot en order med status Planned.
Sessioner och paginering.
En utgången session returnerar ”Invalid session or session already timeout.” (Ogiltig session eller sessionen har redan löpt ut.) Logga in igen vid det felet. Standardinställningen med 20 poster per sida gör att synkroniseringar som ignorerar odata.nextLink kapas utan varning.
UpdateDate saknar klockslag.
I tabellen OWOR är UpdateDate ett datumfält. Klockslaget för uppdateringen lagras separat i UpdateTS. En pollning som enbart filtrerar på UpdateDate hämtar vid varje körning alla order som ändrats under dagen. Kombinera båda fälten eller ta bort dubbletter på din sida.
Webhooks levereras minst en gång.
Webhook Messenger gör upp till fem nya försök efter en misslyckad leverans (2, 4, 8, 16 och 32 sekunder) och markerar sedan leveransen som misslyckad. Nya försök kan skapa dubbletter, och ordningsföljden garanteras bara inom ett och samma företag. Gör händelsehanterarna idempotenta med hjälp av händelsens ID och behåll en nattlig avstämning via polling.
Vem sätter upp SAP Business One-integrationen?
Arbetet omfattar mappning av era steg i operationsföljden, resurser och B1-inställningar. Det omfattar också de begränsningar som B1 inte tar hänsyn till i planeringen: ställtidsmatris, verktyg, antal operatörer och alternativa resurser.
- SkyPlanner-teamet konfigurerar integrationen under införandet och ger support efter driftsättningen. Varje företag använder B1 på sitt sätt, och här kommer kunskapen om det till användning. Det här är standardalternativet.
- Er SAP Business One-partner kan delta. Partner som känner er företagsdatabas, era tillägg och användardefinierade fält kan bygga integrationen med Service Layer och SkyPlanners REST API (API-referens).
- Era egna utvecklare kan bygga integrationen. SkyPlanners REST API läser och skriver order, produkter, material, processteg, inköpsorder och tidsregistreringar. Det använder autentisering med JWT bearer-token och är dokumenterat i Swagger/OpenAPI. Offentlig dokumentation finns i SkyPlanners dokumentation. Webhooks skickar ändringar i plan och status i realtid. Ni behöver bara en API-nyckel till SkyPlanner för att börja bygga (integrationsguide), och SkyPlanner-teamet hjälper till vid behov. Det här alternativet valde det interna IT-teamet hos Laboratory & Allied.
Validera först produktionsplanen under den kostnadsfria provperioden på 30 dagar. Då utgår integrationen från en plan som redan passar fabriken.
Därför väljer tekniska team SkyPlanner för B1
- Välj SkyPlanner när ni vill ha en liten, tydligt avgränsad integration. Standardobjekt från B1 läses in (tillverkningsorder, Product Trees, Resources, Items), medan datum samt Issue and Receipt from Production skickas tillbaka. B1:s tillverkningsmodul ändras inte och ingen datamigrering krävs.
- Välj SkyPlanner när projektet måste visa sitt värde tidigt. Under den kostnadsfria provperioden på 30 dagar använder ni en CSV-export med upp till 20 produktionsgrupper. Inget kreditkort krävs. Verksamheten får se sin egen produktionsplan innan integrationen påbörjas.
- Välj SkyPlanner när produktionsplanen måste ta hänsyn till verkliga begränsningar. Omställningstider, gemensamma verktyg, operationer med flera operatörer, alternativa resurser, lagersaldo och öppna inköpsorder modelleras i SkyPlanner. Integrationen levererar bara data från B1.
- Välj SkyPlanner när ni vill ha ett gemensamt system för planerare och operatörer. Arcturus-motorn skapar produktionsplanen på några sekunder, och Autopilot planerar om automatiskt när produktionen ändras. Operatörerna registrerar arbetet på en mobil eller surfplatta, och er integration skriver tillbaka återrapporteringarna till B1.
- Välj SkyPlanner när kostnaden måste vara förutsägbar. Priset börjar på 199 € per månad med 5 produktionsgrupper inkluderade. Fakturering sker månadsvis och ni kan säga upp när som helst. Ni får en offert på integrationen utifrån era processer och behov, tillsammans med abonnemanget, så att ni ser hela kostnaden innan ni börjar.
Läs förklaringen av finplanering i SAP Business One för att förstå vad som saknas i planeringen. Andra ERP-system finns på översiktssidan för ERP-integrationer.
Tillverkningsföretagens omdömen om SkyPlanner
+90%produktionseffektivitet
”Effektiviteten i produktionen har ökat med 90%.”
Abdul Rucyinga, IT-chef
Laboratory & Allied · Läkemedelstillverkning
Produktionseffektiviteten har ökat med 90%, och det tar mindre än 30 minuter att skapa en optimerad plan för tre månader för alla produktionsgrupper.
2 hsparas varje vecka
”Med SkyPlanner har vår produktionsplanering gått från Excel-kalkylblad till produktionsoptimering i realtid.”
Kalle Kalliomäki, specialist inom försörjningskedjor
UTU · Elcentraler och ställverk
Produktionsplaneringen sparar 2 timmars arbetstid varje vecka, och en ny körplan når produktionslinjen på några sekunder.
6 månaderframåt kan säljarna se ledig kapacitet
”SkyPlanner ger en stabil och tillförlitlig grund för all produktionsplanering.”
Anu Järvinen, produktionschef
Fredman Operations · Livsmedelssäkert förpackningspapper
Säljarna ser ledig kapacitet sex månader framåt, och förfrågningar om planändringar som tidigare tog en timme eller mer besvaras nu på några sekunder.
99,2%leveransprecision
”SkyPlanner har gjort det lättare att upptäcka flaskhalsar och gett oss en tydligare produktionsstyrning.”
Toni Tuori, produktionschef
Piristeel · Taksäkerhet och takavvattningssystem
Leveransprecisionen nådde 99,2% i år, och produktionsplaneringen sparar upp till fyra timmars arbetstid per dag.
Vanliga frågor
Vem bygger integrationen med SAP Business One?
SkyPlanner-teamet konfigurerar tvåvägsintegrationen under införandet och ger support efter driftsättningen. Tillverkningsorder, operationssteg, resurser, inköpsorder och varumottagningar hämtas in. Planerade datum samt Issue and Receipt from Production skickas tillbaka. Er B1-partner eller era egna utvecklare kan också bygga integrationen med Service Layer och SkyPlanners REST API. Det räcker med en API-nyckel för att komma igång.
Hur lång tid tar det att införa SkyPlanner med SAP Business One?
Införandet är normalt klart inom några veckor från start. Teamet mappar resurser och operationssteg, ansluter tillverknings- och inköpsorder och testar den nya planen mot er nuvarande plan före driftsättningen.
Service Layer eller DI API?
Välj Service Layer för nya integrationer. Det är HTTP-baserat, körs på HANA och SQL Server och passar ett molnbaserat planeringssystem. Använd DI API bara där befintlig middleware redan är beroende av det.
Behöver jag SAP Business One 10.0 FP 2602?
Bara för webhooks. Tidigare 10.0-versioner integreras genom schemalagd polling.
Hur skrivs planerade datum tillbaka till SAP Business One?
Med PATCH /b1s/v1/ProductionOrders({DocEntry}), som anger StartDate och DueDate på ordern samt StartDate och EndDate på dess resursrader. Anropet utlöses av SkyPlanners webhook för planändringar. Producerad kvantitet och tid återförs som InventoryGenEntries och InventoryGenExits, länkade till ordern med BaseType 202 och BaseEntry.
Behöver vi ett tillverkningstillägg i B1?
Nej. Integrationen använder bara standardobjekt i B1: tillverkningsorder, Product Trees, Resources, Items, inköpsorder och lagerdokument. Inga data migreras till en ny datamodell för tillverkning.
Kan vi testa SkyPlanner med våra B1-data innan vi integrerar systemen?
Ja. Provperioden på 30 dagar omfattar upp till 20 produktionsgrupper med import från CSV eller Excel. Inget kreditkort behövs. Starta din kostnadsfria provperiod eller prata med oss på försäljning om er B1-miljö.