Recent heeft Growteq een webinar gegeven waarin we stapsgewijs uitleggen hoe je data uit AFAS kan inladen in Power BI.

Bekijk het webinar hier


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.

[code]

let

Source = Xml.Tables(Web.Contents(“”&amp; URL &amp;””

,[Content=Text.ToBinary(“&lt;soapenv:Envelope xmlns:soapenv=”&amp;Character.FromNumber(34)&amp;”http://schemas.xmlsoap.org/soap/envelope/”&amp;Character.FromNumber(34)&amp;” xmlns:urn=”&amp;Character.FromNumber(34)&amp;”urn:Afas.Profit.Services”&amp;Character.FromNumber(34)&amp;”&gt;

&lt;soapenv:Header/&gt;

&lt;soapenv:Body&gt;

&lt;urn:GetData&gt;

&lt;urn:token&gt;

&lt;![CDATA[

“&amp; Token &amp;”

]]&gt;

&lt;/urn:token&gt;

&lt;urn:connectorId&gt;”&amp; Connector &amp;”&lt;/urn:connectorId&gt;

&lt;urn:skip&gt;0&lt;/urn:skip&gt;

&lt;urn:take&gt;20&lt;/urn:take&gt;

&lt;/urn:GetData&gt;

&lt;/soapenv:Body&gt;

&lt;/soapenv:Envelope&gt;”),Headers=[#”Content-Type”=”text/xml;charset=UTF-8″]]))

in

Source

[/code]

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!


Recent heeft Growteq een webinar gegeven waarin we stapsgewijs uitleggen hoe je data uit AFAS kan inladen in Power BI.

Bekijk het webinar hier

Reacties

11 reacties. Reactie plaatsen

  • Christiaan van Wetten
    18 juli 2017 21:23

    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?

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

    Beantwoorden
  • Beste Gideon,

    Prima handleiding. Alles volgens plan maar . . . . hoe zou het kunnen dat ik maar 20 regels krijg?

    Beantwoorden
    • Gideon Folkers
      8 november 2017 22:02

      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.

      Beantwoorden
  • Gevonden. Perfect. Dank je.

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

    Beantwoorden
    • Gideon Folkers
      6 december 2017 01:03

      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.

      Beantwoorden
      • 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!

        Beantwoorden
        • Gideon Folkers
          5 januari 2018 16:59

          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.

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

            Beantwoorden
            • Gideon Folkers
              11 januari 2018 10:35

              Beste Joey,

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

              Beantwoorden

Geef een antwoord

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

Fill out this field
Fill out this field
Geef een geldig e-mailadres op.

Menu