sap-sac-scripting
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSAP Analytics Cloud Scripting
SAP Analytics Cloud(SAC)脚本开发
Comprehensive skill for scripting in SAP Analytics Cloud (SAC) Analytics Designer and Optimized Story Experience.
适用于SAP Analytics Cloud(SAC)Analytics Designer和Optimized Story Experience的全面脚本开发技能。
Getting Started
快速入门
When the user invokes this skill with no specific task (e.g. "help with SAC scripting", "use SAC scripting skill", or no follow-up question), respond with this structured orientation:
Welcome! I can help you with SAP Analytics Cloud scripting.First, which environment are you working in?
- Analytics Designer — application-based scripting, full API
- Optimized Story Experience — story-based scripting, OSE API (v2025.14)
Then, what do you need help with?
- Write a new script (filter, planning, navigation, export...)
- Debug an existing script
- Optimize performance
- Find the right API method
- Planning operations (version management, data locking...)
当用户未指定具体任务(例如“协助进行SAC脚本开发”、“使用SAC脚本开发技能”或无后续问题)调用本技能时,请以以下结构化引导内容回应:
欢迎!我可以协助您进行SAP Analytics Cloud(SAC)脚本开发相关工作。首先,您正在哪个环境中工作?
- Analytics Designer — 基于应用的脚本开发,完整API支持
- Optimized Story Experience — 基于故事的脚本开发,OSE API(v2025.14)
其次,您需要哪些帮助?
- 编写新脚本(过滤、规划、导航、导出等)
- 调试现有脚本
- 优化性能
- 查找合适的API方法
- 规划操作(版本管理、数据锁定等)
Plugin Components
插件组件
This plugin provides specialized tools for SAC development:
Agents (use via Task tool):
- - Debug script errors, trace issues
sac-script-debugger - - Analyze and fix performance bottlenecks
sac-performance-optimizer - - Guide planning operations and version management
sac-planning-assistant - - Find correct APIs and provide code examples
sac-api-helper
Commands (use via /command):
- - Generate script templates (filter, planning, export, etc.)
/sac-script-template - - Interactive debugging guidance
/sac-debug - - Performance analysis and recommendations
/sac-optimize - - Planning operation templates
/sac-planning
Hooks:
- Automatic validation on SAC script writes for common issues
本插件为SAC开发提供了专用工具:
Agents(通过任务工具使用):
- - 调试脚本错误,追踪问题
sac-script-debugger - - 分析并修复性能瓶颈
sac-performance-optimizer - - 指导规划操作和版本管理
sac-planning-assistant - - 查找正确的API并提供代码示例
sac-api-helper
Commands(通过/command使用):
- - 生成脚本模板(过滤、规划、导出等)
/sac-script-template - - 交互式调试指导
/sac-debug - - 性能分析与建议
/sac-optimize - - 规划操作模板
/sac-planning
Hooks:
- 自动验证SAC脚本编写中的常见问题
MCP Setup
MCP 设置
This plugin ships with a that connects to the community
server, exposing 90 SAC REST API tools across 11 service areas (Content, Data Export, Data Import,
Multi Actions, Calendar, Content Transport, User Management, Monitoring, Schedule & Publication,
Translation, Smart Query).
.mcp.jsonsap_analytics_cloud_mcpBefore using MCP tools, check if the server is already installed:
- Look for in the project
.claude/sac-mcp.local.md - Or check if is set in the environment
SAC_MCP_PATH
If not installed, ask the user once: "Would you like help setting up the SAC MCP server?"
If yes, guide them through:
-
Clone and build:bash
git clone https://github.com/secondsky/sap_analytics_cloud_mcp cd sap_analytics_cloud_mcp && npm install && npm run build -
Configure environment variables:
- — absolute path to the cloned repo (e.g.
SAC_MCP_PATH)/home/user/sap_analytics_cloud_mcp - — SAC tenant root URL (e.g.
SAC_BASE_URL)https://mytenant.eu10.hanacloudservices.cloud.sap - — OAuth token endpoint
SAC_TOKEN_URL - /
SAC_CLIENT_ID— from SAC OAuth client configurationSAC_CLIENT_SECRET
-
After successful install, write(gitignored) with:
.claude/sac-mcp.local.mdmarkdown# SAC MCP Installation Record - Installed: [date] - Path: [absolute path to build/index.js] - Env vars configured: SAC_MCP_PATH, SAC_BASE_URL, SAC_TOKEN_URL, SAC_CLIENT_ID, SAC_CLIENT_SECRET
This prevents re-prompting in future sessions.
本插件附带一个文件,可连接到社区服务器,在11个服务领域(内容、数据导出、数据导入、多操作、日历、内容传输、用户管理、监控、调度与发布、翻译、智能查询)提供90个SAC REST API工具。
.mcp.jsonsap_analytics_cloud_mcp使用MCP工具前,请检查服务器是否已安装:
- 查看项目中是否存在文件
.claude/sac-mcp.local.md - 或检查环境变量中是否已设置
SAC_MCP_PATH
如果未安装,请向用户询问一次:“是否需要协助设置SAC MCP服务器?”
如果用户同意,请引导他们完成以下步骤:
-
克隆并构建:bash
git clone https://github.com/secondsky/sap_analytics_cloud_mcp cd sap_analytics_cloud_mcp && npm install && npm run build -
配置环境变量:
- — 克隆仓库的绝对路径(例如
SAC_MCP_PATH)/home/user/sap_analytics_cloud_mcp - — SAC租户根URL(例如
SAC_BASE_URL)https://mytenant.eu10.hanacloudservices.cloud.sap - — OAuth令牌端点
SAC_TOKEN_URL - /
SAC_CLIENT_ID— 来自SAC OAuth客户端配置SAC_CLIENT_SECRET
-
安装成功后,创建文件(已加入git忽略),内容如下:
.claude/sac-mcp.local.mdmarkdown# SAC MCP 安装记录 - 安装日期: [日期] - 路径: [build/index.js的绝对路径] - 已配置的环境变量: SAC_MCP_PATH, SAC_BASE_URL, SAC_TOKEN_URL, SAC_CLIENT_ID, SAC_CLIENT_SECRET
这样可避免在后续会话中重复提示安装。
What's New in Q1 2026 (2026.2)
2026年第一季度(2026.2版本)新增功能
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 for complete details.
references/whats-new-q1-2026.md最新SAC版本中的关键脚本增强功能:
- Chart Variance APIs - 脚本控制图表差异显示
- Compass for Seamless Planning - 增强的规划集成
- Data Actions Enhancements - 自动维度映射、输入控件绑定
- Time Series Forecast API - 程序化预测控制
- Comments APIs - 组件和单元格评论管理
完整详情请查看。
references/whats-new-q1-2026.mdEnvironment Detection
环境检测
Before writing or analyzing any script, identify which SAC environment the user is working in.
Detection signals:
| Signal | Environment |
|---|---|
Mentions | OSE |
Mentions Analytics Designer, | Analytics Designer |
| Says "SAC script" / "my script" without further context | Unclear |
When environment is unclear, ask ONE concise question before proceeding:
"Are you scripting in Analytics Designer or Optimized Story Experience? This determines which API reference I use."
Do not ask again after the user answers.
After confirmation, use the correct references:
- OSE → (8 files, Q1 2026, v2025.14)
references/ose-api-*.md - Analytics Designer → (existing files)
references/api-*.md
在编写或分析任何脚本之前,请先确定用户正在使用的SAC环境。
检测信号:
| 信号 | 环境 |
|---|---|
提及 | OSE |
提及Analytics Designer、 | Analytics Designer |
| 仅提及“SAC script” / “my script”无更多上下文 | 不明确 |
当环境不明确时,在继续之前请询问一个简洁的问题:
“您是在Analytics Designer还是Optimized Story Experience中进行脚本开发?这将决定我使用哪个API参考文档。”
用户回答后请勿再次询问。
确认环境后,使用对应的参考文档:
- OSE → (8个文件,2026年第一季度,v2025.14)
references/ose-api-*.md - Analytics Designer → (现有文件)
references/api-*.md
Quick Start
快速开始
Script Editor Access
脚本编辑器访问
- Analytics Designer: Edit mode → Select widget → Scripts tab
- Optimized Story Experience: Advanced Mode → Select widget → Add script
- Analytics Designer:编辑模式 → 选择组件 → 脚本标签页
- Optimized Story Experience:高级模式 → 选择组件 → 添加脚本
Basic Script Structure
基础脚本结构
javascript
// Event handler example (onSelect on Chart_1)
var selections = Chart_1.getSelections();
if (selections.length > 0) {
var selectedValue = selections[0]["Location"];
Table_1.getDataSource().setDimensionFilter("Location", selectedValue);
}javascript
// 事件处理程序示例(Chart_1的onSelect事件)
var selections = Chart_1.getSelections();
if (selections.length > 0) {
var selectedValue = selections[0]["Location"];
Table_1.getDataSource().setDimensionFilter("Location", selectedValue);
}Core APIs
核心API
DataSource API
DataSource API
Access via . Key methods:
Widget.getDataSource()- - Get dimension members efficiently
getMembers(dim, {accessMode: MemberAccessMode.BookedValues}) - - Cached data access (preferred over getData())
getResultSet() - - Apply filters
setDimensionFilter(dim, value) - - Batch multiple operations
setRefreshPaused(true/false)
通过访问。关键方法:
Widget.getDataSource()- - 高效获取维度成员
getMembers(dim, {accessMode: MemberAccessMode.BookedValues}) - - 缓存数据访问(优先于getData())
getResultSet() - - 应用过滤器
setDimensionFilter(dim, value) - - 批量处理多个操作
setRefreshPaused(true/false)
Planning API
Planning API
Access via . Key operations:
Table.getPlanning()- /
getPublicVersion()- Version accessgetPrivateVersion() - - Submit private to public
publish() - /
copyFromPublicVersion()- Data copycopyToPublicVersion() - - Data locking
setLock(true/false)
通过访问。关键操作:
Table.getPlanning()- /
getPublicVersion()- 版本访问getPrivateVersion() - - 将私有版本提交为公共版本
publish() - /
copyFromPublicVersion()- 数据复制copyToPublicVersion() - - 数据锁定
setLock(true/false)
Widget APIs
Widget APIs
- Charts: ,
addMeasure(),addDimension()getSelections() - Tables: ,
addDimensionToRows()setZeroSuppressionEnabled() - Containers: Panel, TabStrip, PageBook for layout
- 图表:、
addMeasure()、addDimension()getSelections() - 表格:、
addDimensionToRows()setZeroSuppressionEnabled() - 容器:Panel、TabStrip、PageBook用于布局
Application Object
Application对象
Global utilities:
- /
Application.showBusyIndicator()hideBusyIndicator() Application.showMessage(type, text)- /
Application.getUserInfo()getInfo()
全局工具:
- /
Application.showBusyIndicator()hideBusyIndicator() Application.showMessage(type, text)- /
Application.getUserInfo()getInfo()
Performance Best Practices
性能最佳实践
-
Minimize Backend Callsjavascript
// Use getResultSet() (cached) instead of getMembers() (backend) var data = ds.getResultSet(); -
Batch Filter Operationsjavascript
ds.setRefreshPaused(true); ds.setDimensionFilter("Dim1", value1); ds.setDimensionFilter("Dim2", value2); ds.setRefreshPaused(false); // Single refresh -
Keep onInitialization Empty Defer heavy operations to lazy loading or first interaction.
-
Use BookedValues for Membersjavascript
var members = ds.getMembers("Dim", {accessMode: MemberAccessMode.BookedValues});
-
减少后端调用javascript
// 使用getResultSet()(缓存)替代getMembers()(后端调用) var data = ds.getResultSet(); -
批量过滤操作javascript
ds.setRefreshPaused(true); ds.setDimensionFilter("Dim1", value1); ds.setDimensionFilter("Dim2", value2); ds.setRefreshPaused(false); // 单次刷新 -
保持onInitialization为空 将繁重操作延迟到懒加载或首次交互时执行。
-
使用BookedValues获取成员javascript
var members = ds.getMembers("Dim", {accessMode: MemberAccessMode.BookedValues});
Debugging
调试
Console Logging
控制台日志
javascript
console.log("Debug:", myVariable);
console.log("Selections:", JSON.stringify(Chart_1.getSelections()));javascript
console.log("Debug:", myVariable);
console.log("Selections:", JSON.stringify(Chart_1.getSelections()));Browser DevTools
浏览器开发者工具
- Press F12 → Console tab
- Filter by "Info" type
- Add to URL for timing
?APP_PERFORMANCE_LOGGING=true
- 按F12 → 控制台标签页
- 按“Info”类型过滤
- 在URL中添加以查看计时信息
?APP_PERFORMANCE_LOGGING=true
Bundled Resources
捆绑资源
Reference Files (63 files):
- Core APIs: ,
references/api-datasource.md,references/api-widgets.mdreferences/api-planning.md - Advanced: ,
references/api-calendar-bookmarks.mdreferences/api-advanced-widgets.md - Best Practices: ,
references/best-practices-developer.mdreferences/best-practices-planning-stories.md - Language:
references/scripting-language-fundamentals.md - Q1 2026: ,
references/whats-new-q1-2026.mdreferences/chart-variance-apis.md - OSE API (Q1 2026, v2025.14) — complete method/parameter/return documentation:
- — Application, PageBook, Panel, Popup, Widget (15 classes)
references/ose-api-application-core.md - — Button, Dropdown, InputField, Slider, Switch, Text, TextArea (15 classes)
references/ose-api-widgets.md - — DataSource, DataAction, DataBinding, DataLocking, DataChangeInsights (39 classes)
references/ose-api-datasource.md - — Chart, Table, GeoMap, RVisualization, ValueDriverTree (20 classes)
references/ose-api-chart-viz.md - — Planning, PlanningModel, all Calendar classes (54 classes)
references/ose-api-planning-calendar.md - — FilterLine, FilterValue, Selection (11 classes)
references/ose-api-filtering-selection.md - — BookmarkSet, MemberInfo, DimensionInfo, Timer, NavigationUtils (37 classes)
references/ose-api-utilities.md - — All enum types: Feed, Layout, NumberFormat, VariableValue (70 classes)
references/ose-api-types-enums.md
Templates (56 patterns):
- - 40 general scripting patterns
templates/common-patterns.js - - 16 planning-specific patterns
templates/planning-operations.js
参考文件(63个文件):
- 核心API:、
references/api-datasource.md、references/api-widgets.mdreferences/api-planning.md - 高级:、
references/api-calendar-bookmarks.mdreferences/api-advanced-widgets.md - 最佳实践:、
references/best-practices-developer.mdreferences/best-practices-planning-stories.md - 语言:
references/scripting-language-fundamentals.md - 2026年第一季度:、
references/whats-new-q1-2026.mdreferences/chart-variance-apis.md - OSE API(2026年第一季度,v2025.14) — 完整的方法/参数/返回值文档:
- — Application、PageBook、Panel、Popup、Widget(15个类)
references/ose-api-application-core.md - — Button、Dropdown、InputField、Slider、Switch、Text、TextArea(15个类)
references/ose-api-widgets.md - — DataSource、DataAction、DataBinding、DataLocking、DataChangeInsights(39个类)
references/ose-api-datasource.md - — Chart、Table、GeoMap、RVisualization、ValueDriverTree(20个类)
references/ose-api-chart-viz.md - — Planning、PlanningModel及所有Calendar类(54个类)
references/ose-api-planning-calendar.md - — FilterLine、FilterValue、Selection(11个类)
references/ose-api-filtering-selection.md - — BookmarkSet、MemberInfo、DimensionInfo、Timer、NavigationUtils(37个类)
references/ose-api-utilities.md - — 所有枚举类型:Feed、Layout、NumberFormat、VariableValue(70个类)
references/ose-api-types-enums.md
模板(56个模式):
- - 40个通用脚本模式
templates/common-patterns.js - - 16个规划专用模式
templates/planning-operations.js
Official Documentation
官方文档
- Analytics Designer API: https://help.sap.com/doc/958d4c11261f42e992e8d01a4c0dde25/release/en-US/
- Optimized Story Experience API: https://help.sap.com/doc/1639cb9ccaa54b2592224df577abe822/release/en-US/
- SAC Documentation: https://help.sap.com/docs/SAP_ANALYTICS_CLOUD
- What's New Q4 2025: https://help.sap.com/docs/SAP_ANALYTICS_CLOUD/00f68c2e08b941f081002fd3691d86a7/c96a267c5da04fff90bb55313ee9f77c.html
Version: 3.0.1 | Last Verified: 2026-03-07 | SAC Version: Q1 2026 (2026.2) | API Version: 2025.14
- Analytics Designer API: https://help.sap.com/doc/958d4c11261f42e992e8d01a4c0dde25/release/en-US/
- Optimized Story Experience API: https://help.sap.com/doc/1639cb9ccaa54b2592224df577abe822/release/en-US/
- SAC文档: https://help.sap.com/docs/SAP_ANALYTICS_CLOUD
- 2025年第四季度新增功能: https://help.sap.com/docs/SAP_ANALYTICS_CLOUD/00f68c2e08b941f081002fd3691d86a7/c96a267c5da04fff90bb55313ee9f77c.html
版本: 3.0.1 | 最后验证日期: 2026-03-07 | SAC版本: 2026年第一季度(2026.2) | API版本: 2025.14