SAC Scripting-API (Skripting analytischer Anwendungen)
Stand
Was ist SAC Scripting-API (Skripting analytischer Anwendungen)?
SAC Scripting wird erst dann notwendig, wenn eine Anwendung das Widget-Verhalten über das hinaus steuern muss, was eine statische Story ausdrücken kann — alles andere lässt sich im Rahmen der Governance einfacher steuern und als Story übergeben.
Worum es geht
Die SAC Scripting API ist die TypeScript-artige Programmierfläche innerhalb der SAP Analytics Cloud Analytic Applications — die Engine, die SAC von einem Drag-and-Drop-Story-Builder zu einer echten Anwendungsplattform macht. Wenn ein Kunde eine interaktive Analytics-Anwendung mit individueller Navigation, bedingter Formatierung, die keine Story ausdrücken kann, programmatischer Datenbindung oder Integration mit externen Systemen benötigt, ist Analytic-Applications-Scripting die Antwort.
Was Scripting tatsächlich steuert: Jedes Widget auf der Canvas (Chart, Tabelle, Dropdown, Eingabefeld, Bild) stellt eine Properties-API und eine Events-API bereit. Properties erlauben es dem Scripting-Code, zur Laufzeit die Datenbindung, Filter, Dimensionen, Kennzahlen, Sichtbarkeit und Formatierung des Widgets zu setzen. Events feuern bei Nutzeraktionen (onClick, onResultChanged, onSelect, onInitialization) und erlauben es dem Scripting-Code, zu reagieren. Die beiden Flächen zusammen erlauben es einem Anwendungsdesigner, Abläufe zu bauen, die keine statische Story ausdrücken kann — z. B. einen Drill-Flow, bei dem das Klicken auf ein Chart ein zweites Chart mit der gewählten Dimension als Filter befüllt und dann bedingt ein Forecast-Widget aktiviert, falls die Daten einen Schwellenwert überschreiten.
Die Scripting-Sprache ist eine SAC-artige TypeScript-Teilmenge. Sie läuft zur Laufzeit serverseitig (nicht im Browser); sie hat Zugriff auf SACs Datenmodell (Models, Dimensionen, Kennzahlen, Hierarchien, Filter), die Widget-Sammlung der Canvas und SAC-Dienste wie Planning, Smart Predict, R-Visualization. Sie besitzt keine beliebige REST-Aufruf-Fähigkeit — dafür ist die Integration über OData-Verbindungen oder BTP-iFrame-Integrationen nötig.
Warum es zählt
- Scripting läuft serverseitig, nicht im Browser, und besitzt keine beliebige REST-Aufruf-Fähigkeit — externe Integration erfordert weiterhin OData-Verbindungen oder BTP-iFrames.
- Properties- und Events-APIs auf jedem Widget erlauben es, dass der Klick auf ein Chart ein zweites Chart befüllt und bedingt ein Forecast-Widget aktiviert — das klassische Drill-Flow-Muster.
- Übermäßiger Einsatz von Scripting erzeugt Anwendungen, die nur ein Entwickler warten kann, was den Zweck ihrer Übergabe an einen Citizen-Analysten zunichtemacht.
Kernpunkte
- Zwei Oberflächen — die Properties API (Widget-Datenbindung, Filter, Sichtbarkeit, Formatierung zur Laufzeit setzen) und die Events API (auf Nutzeraktionen reagieren: onClick, onResultChanged, onSelect, onInitialization).
- TypeScript-Subset — läuft serverseitig; Zugriff auf SAC-Datenmodell, Widget-Sammlung, Planning-Dienst, Smart Predict, R-Visualization.
- Kein beliebiges REST — für externe Integration OData-Verbindungen oder BTP-iFrame-Muster nutzen.
- Wann von der Story zur Analytic Application: wenn Interaktionen über statisches Drill, Filter oder Verknüpfung hinaus orchestrieren müssen — z. B. bedingte Widget-Aktivierung, programmatischer Dimensionswechsel, mehrstufige Navigationsabläufe.
- Risiko der Überbeanspruchung — skriptlastige Anwendungen sind Entwicklersache; sie erzeugen nicht wartbare Artefakte, wenn eine Story die Aufgabe erledigt hätte.
- onResultChanged reagiert auf die Änderung der eigenen Daten eines Widgets aus Gründen außerhalb der Kontrolle des aktuellen Skripts; es ist das falsche Werkzeug, um eine vom selben Skript gerade verursachte Änderung weiterzugeben — das gehört stattdessen in den verursachenden Handler.
- KI- und Agentenintegrationen (Joule, AI Core, MCP) werden nie direkt aus einem Skript aufgerufen — sie liegen hinter einem BTP-Dienst (CAP oder Integration Suite), der der Anwendung als OData-Verbindung zurückgegeben wird.
- Ökonomie des ersten Builds: Ein kompetenter Entwickler liefert einen ersten funktionierenden Drill-Flow typischerweise in unter einem Tag, aber das Debuggen eines unbeabsichtigten widgetübergreifenden Ereigniszyklus kann mehr Zeit kosten als der ursprüngliche Bau.
Begriffe auf dieser Seite
- Analytic Application
- SACs entwicklerorientierte Anwendungsoberfläche; ein Canvas mit Widgets, Scripting-API, Lifecycle-Events; die Antwort, wenn eine Story nicht ausreicht.
- Scripting API
- Die TypeScript-artige Programmierschnittstelle innerhalb von Analytic Applications; stellt Widget-Properties und -Events bereit; läuft zur Laufzeit serverseitig.
- Widget collection
- Die Menge aller Widgets auf dem Canvas; aus dem Skript iterierbar; jedes Widget über seinen Namen adressierbar; die Grundlage der programmatischen Widget-Manipulation.
- onResultChanged
- Das Ereignis, das feuert, wenn das zugrunde liegende Datenergebnis eines Widgets neu berechnet wird (z. B. nach einer Filteränderung); der kanonische Ort, um auf extern verursachte Änderungen zu reagieren, nicht um eine vom selben Skript gerade verursachte Änderung weiterzugeben.
- onClick
- Das Ereignis, das bei einer direkten Nutzerinteraktion mit einem Widget feuert; der richtige Ort, um den Zustand jedes abhängigen Widgets in einem einzigen Handler zu setzen, wenn das Skript selbst die Ursache der Änderung ist.
- Properties API
- Die Hälfte des Vertrags der Scripting-API, die es Code erlaubt, die Konfiguration eines Widgets zur Laufzeit zu lesen und zu setzen — Datenbindung, Filter, Dimensionen, Measures, Sichtbarkeit, Formatierung — im Gegensatz zur Reaktion auf Ereignisse.
- Event cycle (Anti-Pattern)
- Eine unbeabsichtigte Kette, bei der sich die Event-Handler zweier oder mehrerer Widgets wiederholt gegenseitig auslösen und dadurch Server-Roundtrips vervielfachen, da die Scripting-API serverseitig ausführt; die Lösung ist, die verursachende Logik in einem einzigen Handler zu konsolidieren.
Quellen
- SAP Help Portal — SAC Analytic Application Scripting
- SAP TechEd 2024 — SAC Application Designer sessions
- SAP Analytics Cloud — official product page
- SAP analytics cloud - Convert a measure to text without coding — SAP Community (Data and Analytics Blog Posts)
- Harnessing SAP Analytics Cloud AI Assisted Advanced Formula Generation Capabilities in QRC3.2025 — SAP Community (Technology Blog Posts by SAP)
- SAP Analytics Cloud Experience Sharing: How to Batch Edit the Context of Calendar Events — SAP Community (Technology Blog Posts by SAP)
- "You and the SAC Gatekeeper" — A Beginner’s Guide to Using OAuth with SAP Analytics Cloud SCIM API — SAP Community (Technology Blog Posts by Members)
- Send data from SAP Analytics Cloud to 3rd Party tools using CPI — SAP Community (Technology Blog Posts by Members)
- Creating a Sunburst Chart in SAP Analytics Cloud Using R and Plotly — SAP Community (Technology Blog Posts by Members)
- Introducing SAP Analytics cloud Widget API — SAP Community (Technology Blog Posts by SAP)
- Pass Data Action Parameter Value Directly from Dropdowns through Script in SAP Analytics Cloud (SAC) — SAP Community (Technology Blog Posts by Members)
- Guideline to analyze any existing custom transactions to move Fiori App or Embedded Analytics — SAP Community (Application Development and Automation Blog Posts)
- Multiple Master and Transactional Data Entries with a single data action call - SAP Analytics Cloud — SAP Community (Technology Blog Posts by SAP)
- Create Multiple Dimension Members with the UpdateMembers API - SAP Analytics Cloud — SAP Community (Technology Blog Posts by SAP)
- S/4HANA Public Cloud Integration with SAP Analytics Cloud Using Data Import API — SAP Community (Enterprise Resource Planning Blog Posts by SAP)
- SAP Analytics Cloud File Repository API — SAP Community (Technology Blog Posts by SAP)
- Seamless Navigation in SAP Analytics Cloud: From Dashboards to Business Applications — SAP Community (Technology Blog Posts by SAP)
- Analytical Insights in Joule (powered by SAP Analytics Cloud), Controlled release in Q1 2025 — SAP Community (Technology Blog Posts by SAP)
- Start Your scripting Journey The Easy Way With SAP Analytics Cloud | Part Four — SAP Community (Technology Blog Posts by SAP)
- SAP Analytics Cloud Schedule Publication API's: Getting Started Guide — SAP Community (Blog Posts about SAP Websites)
- SAP Analytics Cloud - Deactivating users programmatically — SAP Community (Technology Blog Posts by SAP)
- Automating SAP DSP Task Chains with CLI Wrapping: FastAPI Integration with SAP Analytics Cloud — SAP Community (Technology Blog Posts by Members)
- Manage Performance in SAP Analytic Cloud Stories - New Learning Journey — SAP Community (Technology Blog Posts by SAP)
- Start Your scripting Journey The Easy Way With SAP Analytics Cloud | Part Three — SAP Community (Technology Blog Posts by SAP)
- Report on SAP Signavio Process Intelligence data using the new OData API and SAP Analytics Cloud — SAP Community (Technology Blog Posts by SAP)
- Combine Display and Filter Parameters with SAP Analytics Cloud URL APIs — SAP Community (Technology Blog Posts by SAP)
- How to connect SAP Sustainability Control Tower to SAP Analytics Cloud via API — SAP Community (Sustainability Blog Posts)
- Important Notice: Changes in SAP Analytics Cloud Classic Stories & Analytic Applications — SAP Community (Technology Blog Posts by SAP)
Vollständige Karte für Mitglieder. Was die vollständige Karte ergänzt: den vollständigen Entscheidungsrahmen · den Vergleich SAP · Snowflake · Databricks · Fabric · die häufigen Fallstricke und ihre Behebung · die Kurzreferenz · die Architekturschemata · die Codeblöcke · die zitierfähigen Kennzahlen.
Offene SAP-Projekte
Aktuelle SAP-Analytics-Projekte und Stellen im DACH-Raum: SAP-Analytics-Projekte im DACH-Raum.