AFAS Getconnectoren gebruiken in Power BI ?>

AFAS Getconnectoren gebruiken 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.

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!

Klik hier om naar onze site te gaan

11 gedachten over “AFAS Getconnectoren gebruiken in Power BI

  1. 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?

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

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

      1. 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!

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

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

          2. Beste Joey,

            Als je in AFAS naar Algemeen / Uitvoer / Beheer / GetConnector gaat dan kun je daar zelf nieuwe connectoren aanmaken

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *