| name | sap-sac-scripting |
| description | | Use when this capability is needed. |
SAP Analytics Cloud Scripting
Comprehensive skill for scripting in SAP Analytics Cloud (SAC) Analytics Designer and Optimized Story Experience.
Plugin Components
This plugin provides specialized tools for SAC development:
Agents (use via Task tool):
sac-script-debugger - Debug script errors, trace issues
sac-performance-optimizer - Analyze and fix performance bottlenecks
sac-planning-assistant - Guide planning operations and version management
sac-api-helper - Find correct APIs and provide code examples
Commands (use via /command):
/sac-script-template - Generate script templates (filter, planning, export, etc.)
/sac-debug - Interactive debugging guidance
/sac-optimize - Performance analysis and recommendations
/sac-planning - Planning operation templates
Hooks:
- Automatic validation on SAC script writes for common issues
What's New in Q4 2025 (2025.21)
Key scripting enhancements in the latest SAC release:
- Chart Variance APIs - Script control over chart variance display
- Compass for Seamless Planning - Enhanced planning integration
- Data Actions Enhancements - Automatic dimension mapping, input control binding
- Time Series Forecast API - Programmatic forecasting control
- Comments APIs - Widget and cell comment management
See references/whats-new-q4-2025.md for complete details.
Quick Start
Script Editor Access
- Analytics Designer: Edit mode → Select widget → Scripts tab
- Optimized Story Experience: Advanced Mode → Select widget → Add script
Basic Script Structure
var selections = Chart_1.getSelections();
if (selections.length > 0) {
var selectedValue = selections[0]["Location"];
Table_1.getDataSource().setDimensionFilter("Location", selectedValue);
}
Core APIs
DataSource API
Access via Widget.getDataSource(). Key methods:
getMembers(dim, {accessMode: MemberAccessMode.BookedValues}) - Get dimension members efficiently
getResultSet() - Cached data access (preferred over getData())
setDimensionFilter(dim, value) - Apply filters
setRefreshPaused(true/false) - Batch multiple operations
Planning API
Access via Table.getPlanning(). Key operations:
getPublicVersion() / getPrivateVersion() - Version access
publish() - Submit private to public
copyFromPublicVersion() / copyToPublicVersion() - Data copy
setLock(true/false) - Data locking
Widget APIs
- Charts:
addMeasure(), addDimension(), getSelections()
- Tables:
addDimensionToRows(), setZeroSuppressionEnabled()
- Containers: Panel, TabStrip, PageBook for layout
Application Object
Global utilities:
Application.showBusyIndicator() / hideBusyIndicator()
Application.showMessage(type, text)
Application.getUserInfo() / getInfo()
Performance Best Practices
-
Minimize Backend Calls
var data = ds.getResultSet();
-
Batch Filter Operations
ds.setRefreshPaused(true);
ds.setDimensionFilter("Dim1", value1);
ds.setDimensionFilter("Dim2", value2);
ds.setRefreshPaused(false);
-
Keep onInitialization Empty
Defer heavy operations to lazy loading or first interaction.
-
Use BookedValues for Members
var members = ds.getMembers("Dim", {accessMode: MemberAccessMode.BookedValues});
Debugging
Console Logging
console.log("Debug:", myVariable);
console.log("Selections:", JSON.stringify(Chart_1.getSelections()));
Browser DevTools
- Press F12 → Console tab
- Filter by "Info" type
- Add
?APP_PERFORMANCE_LOGGING=true to URL for timing
Bundled Resources
Reference Files (55 files):
- Core APIs:
references/api-datasource.md, references/api-widgets.md, references/api-planning.md
- Advanced:
references/api-calendar-bookmarks.md, references/api-advanced-widgets.md
- Best Practices:
references/best-practices-developer.md, references/best-practices-planning-stories.md
- Language:
references/scripting-language-fundamentals.md
- Q4 2025:
references/whats-new-q4-2025.md, references/chart-variance-apis.md
Templates (56 patterns):
templates/common-patterns.js - 40 general scripting patterns
templates/planning-operations.js - 16 planning-specific patterns
Official Documentation
Version: 3.0.0 | Last Verified: 2025-12-27 | SAC Version: Q4 2025 (2025.21) | API Version: 2025.19
Converted and distributed by TomeVault — claim your Tome and manage your conversions.