// |
| name | sap-sac-planning |
| description | This skill should be used when developing SAP Analytics Cloud (SAC) planning applications, including building planning-enabled stories, analytics designer applications with planning functionality, data actions, multi actions, version management, and planning workflows. Use when creating planning models, implementing data entry forms, configuring spreading/distribution/allocation, setting up data locking, building calendar-based planning processes with approval workflows, writing JavaScript scripts for planning automation, using the getPlanning() API, PlanningModel API, or DataSource API for planning scenarios, troubleshooting planning performance issues, or integrating predictive forecasting into planning workflows. |
| license | GPL-3.0 |
| metadata | {"version":"1.3.0","last_verified":"2025-11-26T00:00:00.000Z","sac_version":"2025.23","documentation_source":"https://help.sap.com/docs/SAP_ANALYTICS_CLOUD/18850a0e13944f53aa8a8b7c094ea29e","api_reference":"https://help.sap.com/doc/958d4c11261f42e992e8d01a4c0dde25/2025.23/en-US/index.html","reference_files":20,"status":"production"} |
Comprehensive skill for building enterprise planning applications with SAP Analytics Cloud.
references/data-actions.md, references/multi-actions.md, references/allocations.md, references/scheduling-calendar.md, references/data-locking.mdreferences/modeling-basics.md, references/version-management.md, references/version-edit-modes.md, references/version-publishing-notes.mdreferences/advanced-formulas.md, references/predictive-conversion.md, references/ai-planning-analytics.md, references/api-snippets.mdreferences/input-tasks.md, references/job-monitoring.mdtemplates/data-action-checklist.md, templates/multi-action-checklist.md, templates/parameter-table.mdUse these to keep instructions concise in this file while deep-dives remain one click away.
Use this skill when working on tasks involving:
Planning Application Development:
Data Actions & Multi Actions:
Version Management:
Planning Workflows:
JavaScript Planning APIs:
Data Entry & Allocation:
Data Locking:
Create Planning Model with required dimensions:
Add Table Widget to story and link to planning model
Enable Planning on the table:
Configure Data Entry:
Planning Model:
Analytic Model:
Public Versions:
Private Versions:
Edit Mode:
Reference: See references/version-management.md for detailed workflows.
getPlanning() API - Table planning operations:
// Check if planning is enabled
var isEnabled = Table_1.getPlanning().isEnabled();
// Get public versions
var publicVersions = Table_1.getPlanning().getPublicVersions();
// Get private version
var privateVersion = Table_1.getPlanning().getPrivateVersion();
// Set user input (data entry)
Table_1.getPlanning().setUserInput(selection, value);
// Submit data changes
Table_1.getPlanning().submitData();
PlanningModel API - Master data operations:
// Get dimension members with properties
var members = PlanningModel_1.getMembers("CostCenter");
// Create new members
PlanningModel_1.createMembers("CostCenter", [
{id: "CC100", description: "Marketing"}
]);
// Update existing members
PlanningModel_1.updateMembers("CostCenter", [
{id: "CC100", description: "Marketing Dept"}
]);
// Delete members
PlanningModel_1.deleteMembers("CostCenter", ["CC100"]);
DataSource API - Filtering and querying:
// Set dimension filter
Table_1.getDataSource().setDimensionFilter("Version",
"[Version].[parentId].&[public.Actual]");
// Get members with booked values only
var members = Table_1.getDataSource().getMembers("Account",
{accessMode: MemberAccessMode.BookedValues});
// Remove filter
Table_1.getDataSource().removeDimensionFilter("Version");
Reference: See references/api-reference.md for complete API documentation.
Data actions perform calculations and data manipulation on planning models.
| Step Type | Purpose |
|---|---|
| Copy | Move data between dimensions/versions |
| Advanced Formula | Complex calculations |
| Allocation | Rule-based distribution |
| Currency Conversion | Convert currencies |
| Embedded Data Action | Run another data action |
Source:
Version = Actual
Year = 2024
Target:
Version = Budget
Year = 2025
Mapping:
Account = Account (same)
CostCenter = CostCenter (same)
// Calculate forecast = Actual + (Budget - Actual) * 0.5
[Version].[Forecast] = [Version].[Actual] +
([Version].[Budget] - [Version].[Actual]) * 0.5
Add parameters to make data actions reusable:
Reference: See references/data-actions.md for complete configuration guide.
Multi actions orchestrate multiple planning operations across models and versions.
1. Clean target version (Data Action)
2. Import actuals (Data Import)
3. Run forecast (Predictive)
4. Calculate allocations (Data Action)
5. Publish to public version (Version Management)
6. Lock published data (Data Locking)
When using public dimensions, create cross-model parameters to share values across steps in different models.
Reference: See references/data-actions.md for multi action configuration.
Export native planning data from SAC to SAP S/4HANA's ACDOCP table (central ERP plan data storage).
SAC Planning Model → Data Export Service → Cloud Connector → API_PLPACDOCPDATA_SRV → ACDOCP
| Requirement | Details |
|---|---|
| Legacy Mode | Must be enabled on planning model |
| OData Service | Activate API_PLPACDOCPDATA_SRV in /IWFND/MAINT_SERVICE |
| Cloud Connector | Required for on-premise S/4HANA |
Reference: See references/s4hana-acdocp-export.md for complete configuration guide, troubleshooting, and SAP documentation links.
The SAP Analytics Cloud calendar organizes collaborative planning processes.
General Task: Data entry by assignees
Review Task: Approval workflow
Composite Task: Combined entry and review
Data Locking Task: Schedule lock changes
Round 1: Regional Managers review regional plans
↓ (on approval)
Round 2: Finance Director reviews consolidated plan
↓ (on approval)
Round 3: CFO final approval
↓ (on approval)
Data Locking: Lock approved plan data
Configure predecessor tasks to create sequential workflows:
Reference: See references/planning-workflows.md for calendar configuration.
Distributes values from parent to child members:
// Spreading happens automatically when entering at aggregate level
// Example: Enter 1000 at "Total Regions" spreads to child regions
Moves values between members at same hierarchy level:
Configure structured allocations in data actions:
Protect planning data during and after planning cycles.
| State | Data Entry | Owner Can Edit |
|---|---|---|
| Open | Yes | Yes |
| Restricted | No (except owner) | Yes |
| Locked | No | No |
| Mixed | Varies | Varies (selection contains multiple states) |
// Get data locking object
var dataLocking = Table_1.getPlanning().getDataLocking();
// Get lock state for selection
var selection = Table_1.getSelections()[0];
var lockState = dataLocking.getState(selection);
// Check if locked
if (lockState === DataLockingState.Locked) {
Application.showMessage("This data is locked.");
}
Reference: See references/planning-workflows.md for data locking patterns.
Create, update, and delete dimension members dynamically at runtime.
// Create new member
PlanningModel_1.createMembers("CostCenter", {
id: "CC_NEW",
description: "New Cost Center"
});
// Update existing member
PlanningModel_1.updateMembers("CostCenter", {
id: "CC_NEW",
description: "Updated Description"
});
// Get single member
var member = PlanningModel_1.getMember("CostCenter", "CC_NEW");
// Get members with pagination
var members = PlanningModel_1.getMembers("CostCenter", {
offset: "0",
limit: "100"
});
Application.refreshData() after member changesReference: See references/analytics-designer-planning.md for complete API documentation.
var allVersions = PlanningModel_1.getMembers("Version");
var activeVersion = "";
for (var i = 0; i < allVersions.length; i++) {
if (allVersions[i].properties.Active === "X") {
activeVersion = allVersions[i].id;
break;
}
}
console.log("Active Version: " + activeVersion);
Application.showBusyIndicator();
Table_1.setVisible(false);
// Find active planning cycle
var cycles = PlanningModel_1.getMembers("PlanningCycle");
var activeCycle = "";
for (var i = 0; i < cycles.length; i++) {
if (cycles[i].properties.Flag === "ACTIVE") {
activeCycle = cycles[i].id;
break;
}
}
// Apply MDX filter
Table_1.getDataSource().setDimensionFilter("Date",
"[Date].[YQM].&[" + activeCycle + "]");
Table_1.setVisible(true);
Application.hideBusyIndicator();
// Get forecast version
var forecastVersion = Table_1.getPlanning().getPublicVersion("Forecast2025");
// Check if changes need publishing
if (forecastVersion.isDirty()) {
forecastVersion.publish();
Application.showMessage("Version published successfully.");
}
// Execute data action with parameters
DataAction_1.setParameterValue("Version", "Budget");
DataAction_1.setParameterValue("Year", "2025");
DataAction_1.execute();
// Or execute in background
DataAction_1.executeInBackground();
Reference: See references/javascript-patterns.md for more examples.
Check:
Debug:
console.log("Planning enabled: " + Table_1.getPlanning().isEnabled());
var lockState = Table_1.getPlanning().getDataLocking().getState(selection);
console.log("Lock state: " + lockState);
Check:
Check:
Debug: Use data action tracing table with "Show Only Leaves" option.
Check:
Essential Resources:
Planning Model & Data:
Data Actions & Multi Actions:
Version Management:
Data Locking:
Calendar & Workflows:
Allocations & Spreading:
Learning Resources:
This skill includes comprehensive reference documentation (20 files):
API & Scripting:
Core Planning Features: 4. references/data-actions.md: Data Actions, Multi Actions, parameters, steps 5. references/multi-actions.md: Orchestrate multiple planning operations 6. references/allocations.md: Rule-based distribution and allocations 7. references/advanced-formulas.md: Complex calculations and formulas 8. references/predictive-conversion.md: Predictive forecasting integration
Workflow & Collaboration: 9. references/planning-workflows.md: Calendar, tasks, approvals, data locking 10. references/scheduling-calendar.md: Planning calendar setup 11. references/input-tasks.md: Collaborative data entry tasks 12. references/job-monitoring.md: Track data action execution
Version Management: 13. references/version-management.md: Versions, publishing, sharing, edit mode 14. references/version-edit-modes.md: Version editing workflows 15. references/version-publishing-notes.md: Publishing best practices
Integration & Advanced: 16. references/s4hana-acdocp-export.md: S/4HANA integration, ACDOCP export, OData setup 17. references/ai-planning-analytics.md: AI-powered planning features
Development: 18. references/javascript-patterns.md: Code snippets, patterns, best practices 19. references/modeling-basics.md: Planning model fundamentals 20. references/data-locking.md: Configure and manage data locks
When using this skill:
[Dim].[Hierarchy].&[Member]For troubleshooting:
License: GPL-3.0 Version: 1.3.0 Maintained by: SAP Skills Maintainers Repository: https://github.com/secondsky/sap-skills