Terug naar lijst

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.

01 paramenters

Maak de volgende parameters aan:

  • 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.

004 token

  • Connector
    Bij de waarde van de parameter Connector vul je de naam van de Getconnector in die je wilt aanroepen.

005 connector

Nieuwe query

Maak een nieuwe query aan via New Source -> Blank Query.

001 new source

Ga naar de Advanced Editor.

006 advanced

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.

007 table

008 expand

Herhaal dit totdat je de kolom GetDataResult zichtbaar heb gemaakt.

009 dataresult

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

010 new query result

De XML output wordt nu als resultaat getoond in het preview scherm.

011 output

Ga in het lint naar de tab Transform, en kies voor Parse -> XML:

012 parse

Power BI heeft de XML output nu omgezet in een bruikbaar tabel formaat.

013 table

Klik op Table naast de naam van de getconnector

014 table klikken

De tabel verschijnt met alle opgevraagde gegevens.

015

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!