Recent heeft Growteq een webinar gegeven waarin we stapsgewijs uitleggen hoe je data uit AFAS kan inladen in Power BI.
In een eerdere blog op deze website ben ik al eens ingegaan op het aanroepen van AFAS Getconnectoren waarbij gebruik gemaakt werd van SQL Server Integration Services (zie: http://blog.smartinsight.nu/gebruik-getconnectoren-uit-afas-part-1/). In deze blog zal ik ingaan op de mogelijkheden om de getconnectoren rechtstreeks aan te roepen in Power BI.
App connector
In deze blog wordt gebruik gemaakt van de App connector. Hierbij wordt gebruik gemaakt van gebruikersauthenticatie op basis van tokens. Voor de juiste inrichting en autorisatie in AFAS wordt verwezen naar de Knowledgebase van AFAS (https://static-kb.afas.nl/datafiles/help/2_9_7/SE/NL/index.htm#App_Cnr_App.htm).
Power BI
Open Power BI (desktop) en ga naar de Query Editor.
Allereerst maken we een aantal parameters aan die we later kunnen gebruiken in het script dat de getconnectoren gaat aanroepen.
Maak de volgende parameters aan:
- URL
Vul bij Current Value de URL van de Getconnector in.
De URL is afhankelijk van de installatie. Meer informatie vind je via de volgende link naar de AFAS Knowledgebase: https://static-kb.afas.nl/datafiles/help/2_9_7/SE/NL/index.htm#App_Conect_WebSrv_Addrss.htm
Zet achter de URL ook ?WSDL. Hiermee verwijs je naar het definitiebestand van de connector.
- Token
Het token dient voor de authenticatie en wordt gegenereerd door AFAS bij het aanmaken van de app connector. De waarde moet ingevuld worden in het volgende format:
<token><version>1</version><data> — TOKEN — </data></token>
Tussen de tags <data> en <\data> moet het token worden opgenomen.
- Connector
Bij de waarde van de parameter Connector vul je de naam van de Getconnector in die je wilt aanroepen.
Nieuwe query
Maak een nieuwe query aan via New Source -> Blank Query.
Ga naar de Advanced Editor.
Voer de volgende code in in de Editor.
let
Source = Xml.Tables(Web.Contents(“”& URL &””
,[Content=Text.ToBinary(“<soapenv:Envelope xmlns:soapenv=”&Character.FromNumber(34)&”http://schemas.xmlsoap.org/soap/envelope/”&Character.FromNumber(34)&” xmlns:urn=”&Character.FromNumber(34)&”urn:Afas.Profit.Services”&Character.FromNumber(34)&”>
<soapenv:Header/>
<soapenv:Body>
<urn:GetData>
<urn:token>
<![CDATA[
“& Token &”
]]>
</urn:token>
<urn:connectorId>”& Connector &”</urn:connectorId>
<urn:skip>0</urn:skip>
<urn:take>20</urn:take>
</urn:GetData>
</soapenv:Body>
</soapenv:Envelope>”),Headers=[#”Content-Type”=”text/xml;charset=UTF-8″]]))
in
Source
Zorg dat je onderin het Editor scherm de melding ‘No syntax errors have been detected’ krijgt.
Een paar opmerkingen met betrekking tot deze code:
- Allereerst wordt de functie web.contents gebruikt om de aanroep van de getconnector te doen. De aanroep vindt plaats in de vorm van een SOAP request, een standaard formaat waarmee AFAS kan communiceren.
- De aangemaakt parameters URL, Token en Connector worden gebruikt in de body van de request.
- In de request staan ook de instellingen SKIP en TAKE opgenomen. <urn:skip> en <urn:take>. Een GetConnector kan veel records opleveren. Skip en Take kan je gebruikten om met grote aantallen records om te gaan:
- skip: het aantal records dat moet worden overgeslagen.
- take: het aantal records dat moet worden opgehaald.
Klik op OK.
Getconnector aanroepen
Het ingevoerde script laat in eerste instantie zien dat er een tabel is opgehaald. Klik de tabel open door op de twee pijltjes rechtsboven in de tabel te klikken en in de Expand Popup op OK te klikken.
Herhaal dit totdat je de kolom GetDataResult zichtbaar heb gemaakt.
In dit veld staat de XML output opgenomen waarin de resultaten vanuit de Getconnector zijn opgenomen. Op deze manier zijn de gegevens uiteraard nog niet bruikbaar in Power BI.
Gegevens leesbaar maken
Klik met je rechtermuisknop op de gegevens in het veld GetDataResults en kies voor ‘Add as New Query’.
Een nieuwe Query wordt aangemaakt
De XML output wordt nu als resultaat getoond in het preview scherm.
Ga in het lint naar de tab Transform, en kies voor Parse -> XML:
Power BI heeft de XML output nu omgezet in een bruikbaar tabel formaat.
Klik op Table naast de naam van de getconnector
De tabel verschijnt met alle opgevraagde gegevens.
Afsluiting
Power BI kan prima uit de voeten met de AFAS getconnectoren. Voor het ophalen van grote datasets is dit wellicht niet de meest efficiënte oplossing, maar je kan wel snel aan de slag!
Heb je vragen of kom je er niet uit? Stuur ons je vraag via de Contact pagina!
Recent heeft Growteq een webinar gegeven waarin we stapsgewijs uitleggen hoe je data uit AFAS kan inladen in Power BI.
12 reacties. Leave new
Beste Gideon, dank voor deze blog. Dit is precies waar ik naar op zoek ben. Zou je me kunnen helpen dit te realiseren voor een tweetal omgevingen in AFAS Profit?
P.S. Je geeft op het einde aan dat voor grote datasets dit niet de beste oplossing is. Maar dat is bij Power BI toch niet gauw een probleem?
Beste Gideon,
Wat een top handleiding! Hier heb ik maanden naar gezocht.
Het is met jouw handleiding binnen 10 minuten gelukt met de AFAS Profit omgeving waar ik mee werk.
Beste Gideon,
Prima handleiding. Alles volgens plan maar . . . . hoe zou het kunnen dat ik maar 20 regels krijg?
Beste Tinus,
In de advanced editor wordt in de query die wordt toegevoegd een element take meegenomen:20
Hierin geef je het aantal records op die je wilt ophalen. In de voorbeeld code staat hier 20. Als je dit aantal verhoogd, zul je meer rijen binnenkrijgen.
Gevonden. Perfect. Dank je.
Hi Gideon,
Bedankt voor de duidelijke tutorial. Alleen kom ik niet helemaal uit met het GetConnector aanroepen. Na het runnen van de query krijg ik namelijk niet hetzelfde resultaat:
https://i.imgur.com/5n3JjlU.jpg
Wat doe ik verkeerd?
Mvg,
Joey
Hi Joey,
Het lijkt er op dat je een niveau ‘hoger’ uitkomt.
Lukt het wellicht om de verschillende kolommen open te klikken door op Table te klikken? Misschien dat onder Message alsnog te juiste gegevens te vinden zijn?
Anders moet je de code even posten die je hebt gebruikt, misschien dat daar nog iets in zit.
Hi Gideon,
Bedankt voor de reactie. Het is ondertussen opgelost. De fout had te maken met de query.
Een ander vraagje: hoe bepaal je welke GetConnectoren er nodig zijn? Bijvoorbeeld, als ik de Prijslijst (inkoop) wil importeren, hoe weet ik welke GetConnector hierbij hoort?
Alvast bedankt!
Hi
Het kan zijn dat AFAS hier al een getconnector voor heeft. Dan kan je in AFAS zelf kijken onder de beschikbare getconnectoren.
Alsje geen toegang hebt tot AFAS kun je ook het volgende doen, Met de GetConnector ‘ProfitGetConnectoren’ vraag je een lijst op van alle GetConnectoren in een omgeving.
Hi Gideon,
Volgens mij is er geen standaard GetConnector voor de prijstlijst (ordermanagement > inkoop > prijs/korting > prijslijst). Hoe kan ik deze zelf toevoegen?
Ik heb overigens wel toegang tot AFAS.
Mvg,
Joey
Beste Joey,
Als je in AFAS naar Algemeen / Uitvoer / Beheer / GetConnector gaat dan kun je daar zelf nieuwe connectoren aanmaken
Hallo Gideon,
Heel duidelijk allemaal.
Echter in het script op regel 1 wordt “let” gebruikt. Hier krijg ik in PBI al een syntax fout op.
Deze is in het menu van PBI niet te vinden.
Enig idee?!