Heutzutage spielen Geo-Daten eine immer größere Rolle, denn wenn Sie das volle Potential Ihrer Daten ausschöpfen wollen, müssen Sie diese in einen räumlichen Kontext setzen. In diesem Beitrag zeige ich Ihnen, wie Sie die Google API nutzen, um Daten mit Geo-Informationen in SAP mit ABAP anzureichern.
Wenn Sie Ihre Daten mit Geo-Informationen anreichern, eröffnen sich viele neue Anwendungsmöglichkeiten. So können Sie Dashboards mit Geo-Informationen erstellen und kartographische Auswertungen vornehmen. Dabei können Sie wichtige Zusammenhänge auf einen Blick erkennen und so neue Erkenntnisse gewinnen, die sich aus Tabellen nicht so einfach erschließen.
Sie können Geo-Daten auch im Machine Learning einsetzen, um beispielsweise Ihre Kunden nach Standorten zu clustern. Außerdem dienen Geopunkte als Basis für Berechnung der Entfernungen, was ebenfalls ein wichtiges Kriterium sein kann. Darüber hinaus können Sie auch auf der Grundlage der Geo-Informationen personalisierte Marketing-Kampagnen erstellen.
In diesem Artikel lernen Sie, wie Sie mithilfe von Google Maps API Geo-Informationen auf Basis von Adressdaten Längen- und Breitengrad abfragen können. So können Sie eine konsolidierte Datenbasis mit Geo-Daten für alle Applikationen erstellen. Die zentrale Verfügbarkeit der Geo-Informationen reduziert den benötigten Erfassungsaufwand. Darüber hinaus wird so die Doppelbearbeitung vermieden.
Wie funktioniert es nun konkret? Zunächst ist zu bemerken, dass das Google Maps API zahlungspflichtig ist. Um es nutzen zu können, benötigen Sie ein Abrechnungskonto und mindestens ein aktiviertes Google Maps-Plattform-API oder SDK. Der API Schlüssel kann in der Google Cloud Platform Console angefordert werden. Sie müssen bei jeder Maps JavaScript API-Anforderung einen API-Schlüssel angeben.
Zum Beispiel:
https://maps.googleapis.com/maps/api/geocode/json?address=kepellenstrasse37 hofheim&key=YOURAPIKEY
Das Ergebnis wird im JSON Format zurückgeliefert und könnte wie folgt aussehen:
Dabei erkennt Google auch kleinere Fehler in der Schreibweise (z.B. kepellenstr. vs. Kapellenstr.) und korrigiert diese automatisch.
Diese Abfrage kann auch in ABAP direkt aus einem SAP System wie einem Business Warehouse (SAP BW) ausgeführt werden. Dazu müssen wir zunächst einen HTTP Client erstellen:
cl_http_client=>create(
EXPORTING
host = 'maps.googleapis.com' " logische Destination (Wird bei Funktionsaufruf angegeben)
service = '443' " Portnummer
proxy_host = '' " logische Destination (Wird bei Funktionsaufruf angegeben)
proxy_service = '' " Portnummer
scheme = '2' "HTTPS = 2 ; HTTP = 1
ssl_id = 'ANONYM' " SSL Identität
sap_username = '' " R/3-System, Anmeldename des Benutzers
sap_client = '' " R/3-System, Mandantennummer aus Anmeldung
IMPORTING
client = DATA(lo_client) " HTTP Client Abstraction
EXCEPTIONS
argument_not_found = 1 " Verbindungsparameter (host oder service) nicht verfügbar
plugin_not_active = 2 " HTTP/HTTPS-Kommunikation ist nicht verfügbar
internal_error = 3 " Interner Fehler ( z. B. Name zu groß)
OTHERS = 4
) .
Anschließend wird die gesuchte Adresse und der API Key an diesen Client übergeben:
l_uri = '/maps/api/geocode/json?address=' && cl_http_utility=>escape_url(
unescaped = i_address ) &&'&key=' && l_api_key.
Als Ergebnis erhalten wir eine JSON Zeichenkette zurück:
Zum Schluss gilt es, die JSON Zeichenkette umzuwandeln und die Ergebnisse im ABAP Format bereitzustellen:
/ui2/cl_json=>deserialize( EXPORTING json = l_body pretty_name = /ui2/cl_json=>pretty_mode-camel_case CHANGING data = ls_root ).
Die Funktionsweise des JSON Converters ist in der SCN Wiki erklärt.
Danach können Sie die Daten aus ABAP mithilfe der neuen ADSO APIs ganz einfach ins BW schreiben. Sie können auch Prozessketten nutzen, um Ladeprozesse zu planen.
Möchten Sie mehr darüber erfahren, wie Sie andere Anwendungen an SAP anbinden können? Zögern Sie bitte nicht, uns zu kontaktieren.