Integrationer / ERP / SAP Business One
Guide til integration af SAP Business One med SkyPlanner APS til detailplanlægning
Denne guide viser SAP Business One-partnere og IT-teams, hvordan de forbinder B1 med SkyPlanner APS. Den gennemgår, hvilke API’er der skal bruges, hvilke objekter der overføres hvorhen, og hvor B1-projekter går galt. SkyPlanner integreres med SAP Business One i begge retninger via Service Layer:
- Produktionsordrer, rutetrin, ressourcer, varer og indkøbsordrer overføres til SkyPlanner.
- Planlagte startdatoer og leveringsdatoer skrives tilbage til produktionsordrerne.
- Operatørernes tidsregistreringer bogføres som Receipt og Issue for Production.
- SkyPlanner-webhooks sender ændringer i planen, så snart de sker.
SAP Business One håndterer fortsat varer, styklister, produktionsordrer, lager og økonomi, og jeres produktionsmodul forbliver uændret. SkyPlanner-teamet konfigurerer integrationen med B1-standardobjekter under opstarten og yder support efter idriftsættelsen. Rutetrin, ressourcegrupper, brugerdefinerede felter og tilføjelsesmoduler varierer fra firmadatabase til firmadatabase. Konfigurationen tilpasser mappingen til disse forskelle.
Laboratory & Allied bruger SkyPlanner sammen med SAP Business One på HANA. Læs om de forretningsmæssige gevinster på siden om detailplanlægning til SAP Business One.
Integrationsmuligheder i SAP Business One
SAP Business One har tre integrationsgrænseflader. Service Layer er standardvalget til et cloudbaseret planlægningssystem.
| Mulighed | Beskrivelse | Egnethed til APS-integration |
|---|---|---|
| Service Layer | REST/OData-API. /b1s/v1 bruger OData v3, og /b1s/v2 bruger OData v4. Kører på SAP Business One version for SAP HANA og på Microsoft SQL Server fra 10.0 PL01. | Den primære integrationsvej. Bruger HTTP og JSON og fungerer fra en cloudtjeneste. |
| DI API | COM-bibliotek til Windows. Produktionsordrer repræsenteres af objektet ProductionOrders og gemmes i tabellen OWOR (objekttype 202). | Til ældre eller lokalt installeret middleware. Kræver en Windows-vært. |
| Integration Framework (B1if) | SAPs middleware til integration på dokumentniveau. | Relevant, hvis partneren allerede kører B1if-scenarier. |
Autentificering
Service Layer bruger sessionsbaseret autentificering. Send POST /b1s/v1/Login med CompanyDB, UserName og Password. Du modtager en B1SESSION-cookie og eventuelt en ROUTEID ved opsætninger med belastningsfordeling. Som standard er SessionTimeout 30 minutters inaktivitet. Kald Logout eksplicit, når en synkroniseringskørsel er afsluttet. Opret en særskilt B1-bruger til integrationen, så alle ændringer fra SkyPlanner kan spores i ændringsloggen.
Service Layer-entiteter til detailplanlægning
| Data | Entitet i Service Layer |
|---|---|
| Varer og planlægningsdata | Items |
| Styklister og rutetrin | ProductTrees (Lines, Stages) |
| Maskiner, arbejdskraft og øvrige ressourcer | Resources, ResourceGroups |
| Produktionsordrer | ProductionOrders (Lines, Stages) |
| Beholdning pr. lager | Lagerdata i Items, Warehouses |
| Åbne indkøbsordrer og leveringsdatoer | PurchaseOrders (DocumentLines: åben mængde, ShipDate) |
| Varemodtagelser på indkøbsordrer | PurchaseDeliveryNotes (Goods Receipt PO, objekttype 20) |
| Afgang til produktion | InventoryGenExits |
| Tilgang fra produktion | InventoryGenEntries |
| Opsætning af webhooks | EventSubscriptions, EventNotifications |
Sidestørrelsen er som standard 20 poster. Øg den med headeren Prefer: odata.maxpagesize eller med PageSize i b1s.conf, og følg odata.nextLink. Brug $expand til at hente produktionsordrens linjer og trin i ét kald, og brug batchanmodninger, når mange poster skal skrives tilbage.
Hændelser og webhooks
Fra SAP Business One 10.0 FP 2602 understøtter Service Layer webhooks. De er som standard slået fra. Aktivér dem for hvert firma med CompanyService_UpdateAdminInfo (EnableWebhook = tYES). Send derefter POST EventSubscriptions med tre dele:
- en
WebhookURL - en
AuthenticationType: None, Basic, HMAC eller OAuth, med HMAC som standard - en
EventCollectionmed forretningsobjekter og transaktionstyper
WebhookURL skal bruge HTTPS med et certifikat, der matcher værten. EventSubscriptionsService_GetEventCatalog viser, hvad du kan abonnere på. Webhook Messenger Service skal køre.
Brug polling med faste intervaller på ældre versioner (se faldgruben ved UpdateDate nedenfor). SBO_SP_TransactionNotification er et hook til validering på databaseniveau, ikke en kanal til levering af hændelser.
Datamapping fra SAP Business One til SkyPlanner
| SAP Business One (Service Layer) | Objekt i SkyPlanner | Retning | Hyppighed |
|---|---|---|---|
Items (egenproducerede varer, Procurement Method) | Produkter | B1 → SkyPlanner | Indledende indlæsning, derefter med faste intervaller |
Lines i ProductTrees (varelinjer) | Materialer til produkter | B1 → SkyPlanner | Indledende indlæsning, derefter ved ændringer |
Stages og ressourcelinjer i ProductTrees | Procestrin og køretider | B1 → SkyPlanner | Indledende indlæsning, derefter ved ændringer |
Resources (Machine, Labor, Other) | Arbejdsstationer og personale | B1 → SkyPlanner | Indledende indlæsning, sjældne ændringer |
ResourceGroups | Grupper af arbejdsstationer | B1 → SkyPlanner | Indledende indlæsning |
ProductionOrders (Planned, Released) | Ordrer og opgaver | B1 → SkyPlanner | Webhook (FP 2602+) eller polling med få minutters mellemrum |
Stages i ProductionOrders | Opgavetrin i den angivne rækkefølge | B1 → SkyPlanner | Sammen med ordren |
Beholdning i Items fordelt på Warehouses | Materialebeholdning | B1 → SkyPlanner | Med faste intervaller, f.eks. hver time |
Åbne linjer i PurchaseOrders (objekttype 22) med leveringsdato | Indkøbsordrer / indgående materialer med forventet leveringsdato | B1 → SkyPlanner | Med faste intervaller, f.eks. hver time |
Linjer i PurchaseDeliveryNotes (Goods Receipt PO) med BaseType 22 | Modtaget mængde på indkøbsordrelinjen, opdateret beholdning | B1 → SkyPlanner | Med faste intervaller, f.eks. hver time |
| Planlagt start og slut | PATCH ProductionOrders({DocEntry}): StartDate, DueDate samt StartDate og EndDate på ressourcelinjen | SkyPlanner → B1 | Webhook fra SkyPlanner ved ændringer i planen |
| Registrerede mængder | InventoryGenEntries (tilgang fra produktion) | SkyPlanner → B1 | Ved tilbagemelding eller samlet i batches |
| Registrerede timer og materialeforbrug | InventoryGenExits (afgang til produktion) | SkyPlanner → B1 | Ved tilbagemelding eller samlet i batches |
Skiftkalendere, personale og fravær håndteres i SkyPlanner. B1’s daglige kapacitetstal indgår ikke i dataoverførslen (se den første faldgrube nedenfor).
Integrationsmønstre
1. Indledende indlæsning af stamdata. Hent Resources, ResourceGroups, Items med Procurement Method sat til Make samt deres ProductTrees med trin. Knyt hver maskinressource til en arbejdsstation i SkyPlanner. Gennemgå listen med planlæggerne før den første ordresynkronisering.
2. Ordresynkronisering. Læs ProductionOrders med status Planned og Released, og brug $expand til linjer og trin. Produktionsordrer i B1 indeholder rutetrin fra styklisten, og planlæggerne kan ændre en ordre, efter at den er oprettet. Brug ordrens trin, ikke styklisternes. En produktionsordre fremstiller ét produkt, så et produkt med flere niveauer kræver en produktionsordre pr. niveau. Knyt dem sammen, så SkyPlanner planlægger delprodukterne før det overordnede produkt.
Synkronisér også åbne linjer i PurchaseOrders med deres åbne mængde og leveringsdato til SkyPlanners endpoints til indkøbsordrer. SkyPlanner regner bestilte materialer som tilgængelige på indkøbsordrens leveringsdato. I B1 ændres beholdningen, når en varemodtagelse på indkøbsordre, Goods Receipt PO (PurchaseDeliveryNotes), bogføres. Integrationen læser disse modtagelser, markerer den modtagne mængde som leveret i SkyPlanner og holder restmængden åben. Delmodtagelser tælles kun én gang, og materialekontrollen omfatter både lagerbeholdning og indgående leverancer.
3. Tilbageskrivning af planen. SkyPlanners webhooks udløses, når planen ændres. Integrationen sender PATCH /b1s/v1/ProductionOrders({DocEntry}) med de nye værdier for StartDate og DueDate samt StartDate og EndDate på ordrens ressourcelinjer (ProductionOrderLines). Dermed får hvert trin sit planlagte tidsrum. Anmodningens body indeholder kun felter, som SkyPlanner ejer, og flere ordrer sendes i én $batch-anmodning. B1-brugerne kan derefter se de planlagte datoer på produktionsordren og i vinduet Resource Capacity. På installationer uden Service Layer udføres den samme opdatering fra en lokal tjeneste via objektet ProductionOrders i DI API: GetByKey, angiv datoer, Update.
4. Tilbagemeldinger fra produktionen. Operatørerne registrerer arbejde i SkyPlanner med Mobile Confirmations eller Production Timer. Hver tidsregistrering bliver til en POST /b1s/v1/InventoryGenEntries for færdigproduceret mængde (tilgang fra produktion) og en POST /b1s/v1/InventoryGenExits for komponenter og ressourcetid (afgang til produktion).
Hver dokumentlinje har BaseType 202 og BaseEntry sat til produktionsordrens DocEntry. Afgangslinjer har desuden BaseLine for komponent- eller ressourcelinjen. Delmængder bogføres, efterhånden som de registreres. Batch- og serienumre angives på varer, der styres med disse, og ordren skal have status Released.
ID’et for SkyPlanners tidsregistrering gemmes på B1-dokumentet, så en hændelse aldrig bogføres to gange ved et nyt forsøg. Hvis en bogføring fejler, forsøges den igen, og fejlen rapporteres i stedet for at blive ignoreret.
5. Dataansvar og regler for konflikter. Aftal dem, før I begynder at kode:
- B1 er styrende for varer, styklister, mængder, lagre og oprettelse af ordrer.
- SkyPlanner er styrende for rækkefølge, start- og sluttidspunkter samt tildeling af arbejdsstationer.
- Hvis begge systemer ændrer en ordres datoer, gælder datoerne fra næste planlægningskørsel i SkyPlanner, medmindre planlæggerne har låst opgaven i SkyPlanner.
- Når en ordre har status Closed eller Cancelled i B1, fjernes opgaven fra planen.
Det omfatter projektet
Implementeringen er normalt færdig inden for få uger efter opstartsforløbets begyndelse. Inden da kan I bruge jeres egne data i den gratis prøveperiode på 30 dage. Eksportér varer, ressourcer og åbne produktionsordrer fra B1 til CSV eller Excel, og indlæs dem med SkyPlanners dataimport. Planlæggerne ser en reel produktionsplan, før nogen skriver integrationskode.
Et typisk SAP Business One-projekt omfatter:
- Mapping af stamdata. B1-ressourcer og ressourcegrupper mappes til arbejdsstationer, rutetrin til procestrin og varer med Make til produkter.
- Første indlæsning. Varer, Product Trees med trin og varelinjer, ressourcer samt lagerbeholdning pr. lager.
- Synkronisering af produktions- og indkøbsordrer. Åbne produktionsordrer med linjer og trin samt åbne indkøbsordrer med leveringsdatoer.
- Tilbageskrivning af planen. Planlagte start- og forfaldsdatoer til
ProductionOrders. - Tilbagemeldinger fra produktionen. Receipt og Issue for Production bogføres ud fra tidsregistreringer i SkyPlanner.
- Test parallelt med den nuværende plan. Planlæggerne sammenligner SkyPlanners plan med deres nuværende planlægning.
- Idriftsættelse. SkyPlanners plan bliver den gældende produktionsplan.
Velstrukturerede ressourcer og rutetrin i B1 gør mappingen enkel. Hos Laboratory & Allied var integrationen en af de mindst krævende dele af projektet. Virksomhedens eget IT-team stod i vid udstrækning selv for integrationen med SAP Business One på HANA. SkyPlanner-teamet hjalp med de mest komplekse tilfælde, blandt andet produkter, der kombineres på tværs af processer med flere trin.
Faldgruber i SAP Business One
Daglig kapacitet er ikke en skiftmodel.
B1 gemmer Daily Internal Capacity og Single Run Capacity pr. ressource pr. dag (“These capacities are defined on a daily basis,” (disse kapaciteter defineres på dagsbasis) ifølge SAP Learning). SAP’s vejledning angiver, at beregningen af Required Days forudsætter, at “a single production order can be produced on a single machine” (en enkelt produktionsordre kan produceres på en enkelt maskine) (SAP’s praktiske vejledning). Brug ikke disse tal direkte som kapacitetsgrundlag for produktionsplanlægning, hvor planen skal tage højde for den reelle maskin- og personalekapacitet. Definér skift, personale og arbejdsstationernes effektivitet i SkyPlanner.
Ruten ligger i styklisten.
Der findes ingen særskilte rutestamdata. Linjerne Route Stage i Product Tree angiver rækkefølgen, og Waiting Days indtastes manuelt. Læs Stages i ProductTrees og ProductionOrders, og kontrollér, at hver ressourcelinje tilhører et trin. Ordrer uden trin giver ikke planlægningssystemet nogen operationsrækkefølge.
Mængder på ressourcelinjer skal omregnes.
Quantity på en styklistelinje er det, der kræves for at producere mængden i styklistens hoved, ikke én enhed. Additional Quantity lægges til den planlagte tid “regardless of the quantity of the parent item produced” (uanset den producerede mængde af den overordnede vare) (SAP’s praktiske vejledning). Behandl den som en fast tid pr. ordre, ligesom en opstilling. Dividér med mængden i styklistens hoved, før I beregner køretiden pr. enhed. Ellers bliver varigheden af hver opgave forkert med en tilsvarende faktor.
Ressourcernes stamdata er sjældent fejlfri.
Ressourcer har typen Machine, Labor eller Other. Maskiner kan være knyttet til anlægsaktiver og arbejdskraft til medarbejdere. En ressource kan også være knyttet til en ikke-lagerført vare, så den kan købes eller sælges. Intet af dette fortæller, hvilke ressourcer der er faktiske maskiner, som kan indgå i planen. Ryd op i ressourcegrupper og dublerede ressourcer, før de bliver til jeres liste over arbejdsstationer.
Lagerregler kan få tilbagemeldinger til at fejle.
Tilgange og afgange er lagerdokumenter. De typiske fejl er at forveksle InventoryGenEntries og InventoryGenExits, at mangle batch- eller serienumre på varer, der styres med disse, eller at bogføre på en ordre med status Planned.
Sessioner og sideinddeling.
En udløbet session returnerer “Invalid session or session already timeout.” (Ugyldig session, eller sessionen er udløbet). Log ind igen ved denne fejl. Standardsidestørrelsen på 20 poster betyder, at synkroniseringer, der ignorerer odata.nextLink, afkortes uden advarsel.
UpdateDate indeholder ikke et klokkeslæt.
I tabellen OWOR er UpdateDate et datofelt. Opdateringstidspunktet ligger separat i UpdateTS. Polling, der kun filtrerer på UpdateDate, henter ved hver kørsel alle ordrer, der er ændret i dag. Kombinér begge felter, eller fjern dubletter i integrationen.
Webhooks leveres mindst én gang.
Webhook Messenger gentager en mislykket levering op til fem gange (2, 4, 8, 16 og 32 sekunder) og markerer den derefter som fejlet. Gentagne forsøg kan give dubletter, og rækkefølgen er kun garanteret inden for samme firma. Gør hændelseshåndteringen idempotent ud fra hændelsens ID, og behold en natlig afstemning via polling.
Hvem opsætter integrationen med SAP Business One?
Arbejdet omfatter mapping af jeres rutetrin, ressourcer og B1-opsætning samt de begrænsninger, B1 ikke tager højde for i planlægningen: matrix for opstillings- og omstillingstider, værktøjer, antal operatører og alternative ressourcer.
- SkyPlanner-teamet konfigurerer integrationen under opstarten og yder support efter idriftsættelsen. Alle virksomheder bruger B1 forskelligt, og den viden indarbejdes her. Dette er standardforløbet.
- Jeres SAP Business One-partner kan deltage. Partnere, der kender jeres firmadatabase, tilføjelsesmoduler og brugerdefinerede felter, kan udvikle integrationen med Service Layer og SkyPlanners REST API (API-reference).
- Jeres egne udviklere kan bygge integrationen. SkyPlanners REST API læser og skriver ordrer, produkter, materialer, procestrin, indkøbsordrer og tidsregistreringer. Det bruger autentificering med JWT bearer token og er dokumenteret i Swagger/OpenAPI. Den offentlige dokumentation findes i SkyPlanners dokumentation. Webhooks sender ændringer i plan og status i realtid. I behøver kun en API-nøgle til SkyPlanner for at begynde at udvikle (integrationsvejledning), og SkyPlanner-teamet hjælper efter behov. Det var denne vej, Laboratory & Allieds eget IT-team valgte.
Afprøv først planen i den gratis prøveperiode på 30 dage, så integrationen tager udgangspunkt i en plan, der allerede passer til fabrikken.
Derfor vælger tekniske teams SkyPlanner til B1
- Vælg SkyPlanner, når I ønsker en lille, klart afgrænset integration. B1-standardobjekter overføres til SkyPlanner (produktionsordrer, Product Trees, Resources, Items), mens datoer samt Issue og Receipt from Production sendes tilbage. B1’s produktionsmodul ændres ikke, og der er ingen datamigrering.
- Vælg SkyPlanner, når projektet skal bevise sin værdi tidligt. Den gratis prøveperiode på 30 dage bruger en CSV-eksport med op til 20 arbejdsstationer og kræver intet kreditkort. Virksomheden ser sin egen produktionsplan, før integrationen begynder.
- Vælg SkyPlanner, når planen skal tage højde for de faktiske begrænsninger. Omstillingstider, fælles værktøjer, opgaver med flere operatører, alternative ressourcer, lagerbeholdning og åbne indkøbsordrer modelleres alle i SkyPlanner. Integrationen leverer kun data fra B1.
- Vælg SkyPlanner, når I ønsker ét system til planlæggere og operatører. Arcturus-motoren udarbejder planen på få sekunder, og Autopilot omplanlægger automatisk, når produktionen ændrer sig. Operatørerne registrerer arbejdet på telefon eller tablet, og integrationen skriver tilbagemeldingerne tilbage til B1.
- Vælg SkyPlanner, når omkostningerne skal være forudsigelige. Prisen starter ved 199 € om måneden med 5 arbejdsstationer inkluderet. Der faktureres månedligt, og I kan opsige når som helst. I får på forhånd et tilbud på integrationen, tilpasset jeres processer og behov, sammen med abonnementet. Dermed kender I den samlede pris, før I går i gang.
Læs artiklen om produktionsplanlægning i SAP Business One for at forstå, hvad der mangler i planlægningen. Emnet er her planlægning, der tager højde for den reelt tilgængelige kapacitet hos både maskiner og medarbejdere. Se oversigten over ERP-integrationer for andre ERP-systemer.
Produktionsvirksomheders erfaringer med SkyPlanner
+90%produktionseffektivitet
“Effektiviteten i produktionen er steget med 90%.”
Abdul Rucyinga, IT-chef
Laboratory & Allied · Lægemiddelproduktion
Produktionseffektiviteten er steget med 90%, og det tager under 30 minutter at lave en optimeret plan for tre måneder på tværs af alle arbejdsstationer.
2 hsparet hver uge
“Med SkyPlanner er vores produktionsplanlægning gået fra Excel-ark til optimering af produktionen i realtid.”
Kalle Kalliomäki, specialist i forsyningskæder
UTU · Eltavler og koblingsanlæg
Produktionsplanlægningen sparer 2 timers arbejdstid hver uge, og en ny opgavekø når ud til produktionslinjen på få sekunder.
6 månederfrem kan salgsafdelingen se ledig kapacitet
“SkyPlanner skaber et solidt og pålideligt grundlag for al produktionsplanlægning.”
Anu Järvinen, produktionschef
Fredman Operations · Fødevaresikkert emballagepapir
Salgsafdelingen kan se den ledige kapacitet seks måneder frem, og forespørgsler om ændringer i planen, som før tog en time eller mere at besvare, bliver nu besvaret på få sekunder.
99,2%leveringssikkerhed
“SkyPlanner har gjort det lettere at identificere flaskehalse og gjort produktionsstyringen mere overskuelig.”
Toni Tuori, produktionschef
Piristeel · Tagsikkerhed og regnvandssystemer
Leveringssikkerheden nåede op på 99,2% i år, og detailplanlægningen sparer op til fire timers arbejdstid om dagen.
Ofte stillede spørgsmål
Hvem bygger integrationen til SAP Business One?
SkyPlanner-teamet konfigurerer tovejsintegrationen under opstarten og yder support efter idriftsættelsen. Produktionsordrer, rutetrin, ressourcer, indkøbsordrer og varemodtagelser overføres til SkyPlanner. Planlagte datoer samt Issue and Receipt from Production sendes tilbage. Jeres B1-partner eller egne udviklere kan også bygge integrationen med Service Layer og SkyPlanners REST API. En API-nøgle er nok til at komme i gang.
Hvor lang tid tager det at implementere SkyPlanner sammen med SAP Business One?
Implementeringen er normalt færdig inden for få uger efter opstarten. Teamet mapper ressourcer og rutetrin, tilslutter produktions- og indkøbsordrer og tester den beregnede plan op mod jeres nuværende plan før idriftsættelsen.
Service Layer eller DI API?
Vælg Service Layer til nye integrationer. Det er HTTP-baseret, kører på HANA og SQL Server og egner sig til et cloudbaseret system til detailplanlægning. Brug kun DI API, hvis eksisterende middleware allerede er afhængig af det.
Har vi brug for SAP Business One 10.0 FP 2602?
Kun til webhooks. Tidligere 10.0-versioner integreres via polling med faste intervaller.
Hvordan skrives planlagte datoer tilbage til SAP Business One?
Via PATCH /b1s/v1/ProductionOrders({DocEntry}), som sætter StartDate og DueDate på ordren samt StartDate og EndDate på dens ressourcelinjer. Det udløses af SkyPlanners webhook ved ændringer i planen. Producerede mængder og tidsforbrug sendes tilbage som InventoryGenEntries og InventoryGenExits, der knyttes til ordren med BaseType 202 og BaseEntry.
Har vi brug for en produktionsudvidelse i B1?
Nej. Integrationen bruger kun standardobjekter i B1: produktionsordrer, Product Trees, Resources, Items, indkøbsordrer og lagerbilag. Ingen data migreres til en ny datamodel for produktionen.
Kan vi teste SkyPlanner med vores B1-data, før vi integrerer systemerne?
Ja. Prøveperioden på 30 dage omfatter op til 20 arbejdsstationer med import fra CSV eller Excel og kræver ikke kreditkort. Start din gratis prøveperiode, eller tal med salgsafdelingen om jeres B1-opsætning.