Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

SAP B1 + Google Sheets: rensade valutakurser

Rickard Andersson Partner, Nodenordic.se

Att ladda upp valutakurser i SAP Business One låter enkelt tills det blir en veckovis brandövning. Ett felaktigt datumformat, en saknad kurs eller en import som “lyckas” med dålig data – och du fastnar i att dubbelkolla allt en gång till.

Ekonomichefer märker det när månadsbokslutet blir tajt. Driftansvariga märker det när team börjar bygga egna “hjälparkalkylark”. Och om du driver en byrå eller konsultverksamhet som stöttar SAP B1-kunder är det här en typisk SAP B1-automatisering som tyst bränner timmar och förtroende.

Det här arbetsflödet tar valutakurser från Google Sheets (eller andra källor) och skickar dem till SAP B1:s Service Layer med konsekventa datum, valfri AI-validering och en tydlig logg i Sheets. Du får se vad det gör, vad du behöver och vilka resultat du kan förvänta dig.

Så fungerar automatiseringen

Hela n8n-flödet, från trigger till slutresultat:

n8n Workflow Template: SAP B1 + Google Sheets: rensade valutakurser

Problemet: valutakurser är “små” tills de får allt att haverera

Valutakurser ser inte ut som en stor process. Det är oftast ett kalkylark, ett datum och en siffra. Sedan underkänner SAP uppladdningen för att RateDate inte är i exakt formatet yyyyMMdd, eller för att någon klistrar in en tidsstämpel, eller för att arket har ett extra mellanslag som gör att en siffra blir text. Värst är osäkerheten. Du fixar inte bara den ena kursen – du omgranskar hela batchen eftersom du inte kan bevisa vad som skickades, när det skickades och vad SAP faktiskt accepterade.

Det summerar snabbt. Här är var det brukar fallera i verkliga team.

  • Manuella importer blir en återkommande uppgift som stjäl ungefär en timme varje vecka, särskilt om du räknar in kontroll, dubbelkontroll och jakten på “rätt” fil.
  • Datumformatering är en konstant fälla, eftersom SAP B1 är strikt och människor inte är det.
  • När en uppladdning misslyckas har du sällan en tydlig spårbarhet av payloads och svar, så felsökningen blir gissningslek.
  • Team börjar improvisera egna arbetssätt, vilket ger inkonsekventa kurser mellan system och röriga revisioner senare.

Lösningen: automatiserade uppladdningar med validering och loggar

Det här n8n-arbetsflödet automatiserar uppladdning av valutakurser till SAP Business One via Service Layer, och är byggt för verkligheten där kurser kommer från olika håll. Det börjar med en webhook som tar emot ett enkelt “origen”-värde (JSON, SQL, GoogleSheets eller Manual). Sedan loggar det in i SAP B1, hämtar sessionscookien och routar flödet baserat på din källa. Om indata är stökig kan valfria AI-steg normalisera strukturen och standardisera RateDate till exakt det format SAP kräver. Till sist postas varje kurs till SAP, och varje lyckat eller misslyckat försök skrivs till en Google Sheets-logg så att du kan bevisa vad som hände.

Arbetsflödet startar när du skickar data till webhook-endpointen. Det autentiserar en gång och behandlar sedan kurser från vald källa i en kontrollerad sekvens. Efter varje post till SAP B1 lägger det till en rad i ditt LOGS_N8N-ark med metod, URL, payload, statuskod och meddelande.

Det du får: automatisering vs. resultat

Exempel: så här ser det ut i praktiken

Säg att du laddar upp 15 valutakurser varje måndag. Manuellt kan du lägga cirka 3 minuter per kurs på att exportera, formatera datumet, importera och sedan fixa 2–3 som felar – vilket landar på ungefär en timme. Med det här arbetsflödet uppdaterar du Google-arket (eller skickar JSON) och triggar webhooken en gång, vilket tar runt 5 minuter. Automatiseringen postar sedan varje kurs och loggar utfallen. Du granskar fortfarande loggen, men du granskar bevis – inte gissningar.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • SAP Business One Service Layer för att posta valutakurser via API
  • Google Sheets för indata och LOGS_N8N-revisionslogg
  • OpenAI API-nyckel (hämta den i din OpenAI-dashboard)

Kompetensnivå: Medel. Du klistrar in inloggningsuppgifter, mappar några fält och testar med exempeldata, men du behöver inte skriva kod.

Vill du inte sätta upp detta själv? Prata med en automationsspecialist (gratis 15-minuters konsultation).

Så fungerar det

En webhook tar emot din kursbegäran. Du skickar en HTTP POST till arbetsflödets endpoint med “origen” (JSON, SQL, GoogleSheets eller Manual) och den data som behövs för den vägen.

Autentisering mot SAP B1 sker direkt. Arbetsflödet anropar SAP B1 Login-endpointen, fångar B1SESSION-cookien och använder den för alla postningar av valutakurser så att du inte behöver autentisera om för varje rad.

Din valda källa bearbetas och städas upp. Google Sheets hämtar rader från RATE-arket, SQL kör en fråga mot Microsoft SQL Server och JSON normaliseras till en förutsägbar lista. Om datumen är tveksamma skriver AI-valideringssteget om RateDate till yyyyMMdd så att SAP godkänner det.

Varje kurs postas och loggas. Varje request mot /SBOBobService_SetCurrencyRate avslutas med att en rad för lyckat eller misslyckat skrivs till LOGS_N8N, inklusive payload och detaljer från SAP-svaret.

Du kan enkelt justera reglerna för indatakällor för att införa extra kontroller (som tillåtna valutor eller maxförändring i kurs) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: konfigurera webhook-triggern

Konfigurera den inkommande webhooken som startar arbetsflödet och skickar källdata vidare till efterföljande routning och bearbetning.

  1. Lägg till och öppna Incoming Webhook Trigger.
  2. Ställ in HTTP MethodPOST.
  3. Ställ in Pathb81a1fa5-2138-4b70-80ee-945fa44e69ce.
  4. Skicka en test-POST-payload som innehåller body.origen och relevanta datafält för JSON-, SQL-, GoogleSheets- eller Manual-vägarna.

Tips: Se till att test-payloaden är i linje med reglerna i Route by Source (värden som JSON, SQL, GoogleSheets, Manual) så att switchen routar korrekt.

Steg 2: anslut Google Sheets- och SQL-datakällor

Konfigurera åtkomst till datakällor för att läsa kurser från Google Sheets och köra SQL-frågor, och routa sedan anrop baserat på webhook-payloaden.

  1. Öppna Route by Source och bekräfta att varje regel använder uttrycket {{ $('Incoming Webhook Trigger').item.json.body.origen }} med rätt värden JSON, SQL, GoogleSheets och Manual.
  2. Öppna Extract SQL Statement och ställ in select_sql{{ $('Incoming Webhook Trigger').item.json.body.sql }}.
  3. Öppna SQL Server Query och ställ in Query{{ $json.select_sql }}.
  4. Inloggningsuppgifter krävs: Anslut era microsoftSql-inloggningsuppgifter i SQL Server Query.
  5. Öppna Read Sheet Rates, ställ in Document ID1xFcJSzQyhPOaC-zeX2dJ7LaUxpg-vxiN3EAOBxLTQ4g och Sheet NameHoja 1 (gid 0).
  6. Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Read Sheet Rates och alla Google Sheets-loggnoder (det finns totalt 9 Google Sheets-noder för läsning och loggning).

⚠️ Vanlig fallgrop: Om värdena i Route by Source inte matchar den inkommande body.origen-strängen exakt (skiftlägeskänsligt), kommer flödet inte att nå Extract SQL Statement, Read Sheet Rates eller Post SAP Rate Manual.

Steg 3: sätt upp AI-bearbetning och normalisering

Använd AI för att normalisera JSON-payloads och validera datumformatet för kursdatum innan ni postar till SAP.

  1. Öppna Normalize JSON via AI och låt JSON Output vara aktiverat.
  2. Bekräfta att meddelandet använder JSON-inmatningsuttrycket {{ $('Incoming Webhook Trigger').item.json.body.json }}.
  3. Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter i Normalize JSON via AI.
  4. Öppna Split Rate Items och ställ in Field to Split Outmessage.content.rate.
  5. Öppna Validate Rate Date och låt JSON Output vara aktiverat för att normalisera RateDate till yyyyMMdd.
  6. Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter i Validate Rate Date.

Tips: AI-noderna använder modellen gpt-4o-mini som standard; säkerställ att ert OpenAI-konto har åtkomst till den modellen.

Steg 4: konfigurera utdata och noder för SAP-postning

Logga in i SAP och posta sedan kurser till SAP för varje källtyp (JSON, SQL, Google Sheets eller Manual).

  1. Öppna SAP Login Session och ställ in URL{{ $vars.url_sap }}Login med JSON-body som använder {{ $vars.user_sap }}, {{ $vars.password_sap }} och {{ $vars.company_db }}.
  2. Öppna Post SAP Rate JSON och ställ in URL{{ $vars.url_sap }}SBOBobService_SetCurrencyRate med JSON-body som mappar {{ $json.Currency }}, {{ $json.Rate }} och {{ $json.RateDate }}.
  3. Säkerställ att Post SAP Rate JSON inkluderar headern Cookie =B1SESSION={{ $('SAP Login Session').item.json.SessionId }}.
  4. Öppna Post SAP Rate SQL och mappa värden från {{ $json.message.content.Currency }}, {{ $json.message.content.Rate }} och {{ $json.message.content.RateDate }}.
  5. Öppna Post SAP Rate Sheet och mappa värden från {{ $json.Currency }}, {{ $json.Rate }} och {{ $json.RateDate }}.
  6. Öppna Post SAP Rate Manual och mappa värden från {{ $('Incoming Webhook Trigger').item.json.body.currency }}, {{ $('Incoming Webhook Trigger').item.json.body.rate }} och {{ $('Incoming Webhook Trigger').item.json.body.rateDate }}.
  7. Bekräfta att Limit Batch Size är inställd på Max Items 10 för att strypa SQL-resultat innan AI-validering.

Steg 5: lägg till felhantering och loggning

Logga lyckade och misslyckade körningar för varje postningsväg till Google Sheets för att behålla en komplett revisionsspårning.

  1. Verifiera att varje SAP-postningsnod skickar vidare till sina loggnoder: Post SAP Rate JSONLog Success JSON och Log Failure JSON, Post SAP Rate SQLLog Success SQL och Log Failure SQL, Post SAP Rate SheetLog Success Sheet och Log Failure Sheet, Post SAP Rate ManualLog Success Manual och Log Failure Manual.
  2. Bekräfta att varje loggnod använder Operation append för att skriva en ny rad till logg-kalkylarket.
  3. Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter till Log Success JSON, Log Failure JSON, Log Success SQL, Log Failure SQL, Log Success Sheet, Log Failure Sheet, Log Success Manual och Log Failure Manual.

Steg 6: testa och aktivera ert arbetsflöde

Kör end-to-end-tester för varje källtyp för att verifiera routning, bearbetning och SAP-postning.

  1. Klicka på Execute Workflow och skicka en test-webhook-payload med origen satt till JSON, SQL, GoogleSheets eller Manual.
  2. Bekräfta att SAP Login Session returnerar ett session-id och att motsvarande SAP-postningsnod tar emot det.
  3. Kontrollera att en rad för lyckad körning visas i rätt loggnod (till exempel Log Success JSON efter Post SAP Rate JSON).
  4. Om fel uppstår, verifiera att felrader visas i motsvarande fel-loggblad.
  5. När testerna lyckas, slå på arbetsflödet till Active för användning i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Inloggningsuppgifter för SAP Business One Service Layer kan gå ut eller kräva specifika behörigheter. Om det strular: kontrollera först svaret från Login-endpointen och ditt CompanyDB-värde.
  • Om du använder Wait-noder eller extern rendering kan processtiderna variera. Öka väntetiden om efterföljande noder fallerar på tomma svar.
  • OpenAI-prompter som fungerar “i allmänhet” kan ändå ge konstiga datumkonverteringar. Lägg in dina föredragna format och exempel i valideringsprompten tidigt – annars kommer du fortsätta punktfixa specialfall.

Vanliga frågor

Hur lång tid tar det att sätta upp den här SAP B1-automatiseringen?

Cirka 30 minuter om dina SAP- och Google-uppgifter är klara.

Behöver jag kunna koda för att automatisera SAP B1?

Nej. Du kopplar mest konton och mappar fält. Flödeslogiken är redan byggd.

Är n8n gratis att använda för det här SAP B1-automatiseringsflödet?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna med kostnader för OpenAI API, som oftast är några cent per batch beroende på hur många rader du validerar.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här SAP B1-automatiseringsflödet för godkännanden innan det postas till SAP?

Ja, och det är en vanlig justering. Du kan lägga in ett godkännandesteg efter “Validate Rate Date” (för SQL) eller efter “Read Sheet Rates” (för Google Sheets) innan HTTP Request som postar till SAP. Vissa team skickar väntande poster till Telegram för ett snabbt ja/nej, andra skriver dem till ett separat “APPROVAL”-ark och postar bara godkända rader.

Varför misslyckas min SAP Business One-anslutning i det här flödet?

Oftast beror det på ett ogiltigt Login-svar eller en saknad/utgången sessionscookie. Bekräfta SAP-URL:en (inklusive /b1s/v1/), CompanyDB-värdet och att Login-endpointen returnerar en B1SESSION-cookie som n8n kan återanvända. Om det fungerar en gång och sedan fallerar i skov kan det bero på miljöskillnader (test vs prod) eller SSL-/certifikatdetaljer på SAP-servern.

Hur många kurser kan den här SAP B1-automatiseringen hantera?

Tillräckligt för typiska ekonomibatcher, och den inbyggda noden “Limit Batch Size” hjälper till att hålla körningen stabil.

Är den här SAP B1-automatiseringen bättre än att använda Zapier eller Make?

Ofta, ja – eftersom det här är mer än en enkel “skicka rad till SAP”-zap. Du loggar in i SAP, bär med dig en sessionscookie, förgrenar per källa, validerar datum och skriver detaljerade loggar – den typen av flersteglogik blir snabbt klumpig (och dyr) i enklare verktyg. n8n ger också ett self-hosted-alternativ, vilket spelar roll när antalet körningar växer. Zapier eller Make kan fortfarande vara helt okej för mycket små volymer med en enda källa och utan validering. Om du är osäker, prata med en automationsspecialist och få en rak rekommendation.

Felfria kurser, korrekta datum, tydliga loggar. Sätt upp det en gång, så slutar dina SAP B1-valutauppdateringar vara en veckovis distraktion.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal