Install any skill in seconds. Free to start, no credit card required.
Get Started Free →SAP Analytics Cloud (SAC) planning guidance for planning models, planning-enabled stories, data actions, multi actions, version management, data locking, calendar/input workflows, allocations, value driver trees, BPC live planning, and Seamless Planning with SAP Datasphere. Use this for planning design, planning APIs, data action debugging, planning performance reviews, and authenticated SAC planning story triage in Microsoft Edge via CDP; use sap-sac-scripting for non-planning SAC scripts and s
.claude/skills/secondsky-sap-sac-planning/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 371% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 901% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 480% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 973% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 773% | 0% |
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.mdsap-browser-automation for manual in-app authentication, approved Edge profile copying, fresh Edge/CDP setup, DevToolsActivePort fallback, and target selection; local references/edge-cdp-control.md retains planning writeback safetyreferences/seamless-planning-datasphere.md, references/bpc-live-connection.md, references/value-driver-trees.md, references/data-action-tracing.mdreferences/whats-new-2026-planning.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.
For authenticated SAC planning browser inspection, use sap-browser-automation for the browser/authentication layer and load local references/edge-cdp-control.md for planning-specific boundaries. Use CDP for local read-only triage of planning tables, console errors, data action status, and approved screenshots; require explicit approval before any writeback, publish, data action, multi action, or lock-changing interaction.
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:
Seamless Planning with Datasphere (2025):
BPC Live Connection:
Value Driver Trees:
Data Action Debugging:
Planning Model:
Analytic Model:
Public Versions:
Private Versions:
Edit Mode:
Reference: See references/version-management.md for detailed workflows.
getPlanning() API - Table planning operations:
javascript// 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:
javascript// 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:
javascript// 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.5Add 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.
Legacy/deprecated path for exporting native planning data from SAC to SAP S/4HANA's ACDOCP table (central ERP plan data storage). As of Q2 2026, SAP deprecates exporting model data to SAP S/4HANA and recommends the write-back integration scenario instead. Keep this section for maintaining existing landscapes, not as the default design for new planning solutions.
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 |
Do not create this path for new implementations without confirming the deprecation impact, SAP Note 3707288 guidance, and a supported migration path.
Reference: See references/s4hana-acdocp-export.md for legacy configuration details and references/whats-new-2026-planning.md for the Q2 2026 deprecation note.
Seamless Planning unifies SAC planning with SAP Datasphere, enabling enterprise-grade storage and governance for plan data.
SAC (Planning Logic & UX) ──Direct Persistence──► Datasphere (Data Storage & Governance)What stays in SAC: Planning calculations, version management, data actions, calendar workflows What moves to Datasphere: Fact data, public dimensions, physical storage, data governance
| Benefit | Description | |---------|-------------| | Unified Data | Centralized storage ensures consistency | | Direct Persistence | Changes in SAC instantly reflect in Datasphere | | Optimized Resources | Reduces SAC memory and storage footprint | | Enterprise Reusability | Datasphere modeling extends to planning data |
All models for cross-model operations (data actions, multi actions) must be in the same Datasphere space.
Reference: See references/seamless-planning-datasphere.md for detailed architecture, configuration, and troubleshooting.
SAC supports live data connections to BPC Embedded on S/4HANA, enabling planning with the BPC engine while using SAC's modern interface.
| Version | Planning Support | |---------|------------------| | BPC Embedded (S/4HANA) | Full planning features | | BPC for NetWeaver | Limited (read-only) | | BPC Standard | Export to BPC required |
javascript// Execute BPC planning sequence PlanningSequence_1.setParameterValue("FISCAL_YEAR", "2025"); PlanningSequence_1.setParameterValue("VERSION", "PLAN"); PlanningSequence_1.execute().then(function() { Table_1.getDataSource().refreshData(); });
Use BPC Live when: Existing BPC investment, complex FOX scripts, integrated with BW reporting Use Native SAC when: New implementation, simpler requirements, mobile-first applications
Reference: See references/bpc-live-connection.md for setup, prerequisites, and troubleshooting.
Value Driver Trees (VDT) visualize how values flow through a planning model, enabling driver-based planning and what-if analysis.
| Scenario | Example | |----------|---------| | Driver-Based Planning | Model how prices, headcount impact revenue | | What-If Analysis | Simulate scenarios, see cascading effects | | Strategic Planning | Visualize value chain impacts | | Executive Presentations | Touchscreen-friendly boardroom displays |
| Setup | Description | |-------|-------------| | 1 Account + 1 Structure | Single row of values | | Multiple Accounts | Row per account (e.g., sales + quantity) | | Multiple Structures | Compare scenarios/currencies |
javascript// Get VDT reference var vdt = ValueDriverTree_1; // Get selected node value var value = vdt.getSelectedNode().getValue("Revenue", "2025Q1"); // Collapse/expand nodes vdt.collapseNode("Node_Revenue"); vdt.expandNode("Node_Revenue");
Reference: See references/value-driver-trees.md for detailed setup and best practices.
Data Action Tracing is a debugging tool for inspecting intermediate results during data action execution.
| Scenario | How Tracing Helps | |----------|-------------------| | New Development | Validate each step produces expected results | | Debugging Failures | Identify which step causes incorrect data | | Performance Investigation | See which steps process most data | | Allocation Debugging | Validate driver ratios and distributions |
| View | Description | |------|-------------| | Data at Tracepoint | All values at that point | | Changes Since Previous | Delta between tracepoints | | Filtered View | Focus on specific data |
// Add tracepoints in script
[Revenue] = [Quantity] * [Price]
TRACE("After_Revenue_Calc")
[Final] = [Revenue] * (1 + [Tax])
TRACE("After_Tax")Reference: See references/data-action-tracing.md for complete debugging guide.
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 dataConfigure predecessor tasks to create sequential workflows:
Reference: See references/planning-workflows.md for calendar configuration.
Distributes values from parent to child members:
javascript// 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) |
javascript// 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.
javascript// 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.
javascriptvar 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);
javascriptApplication.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();
javascript// 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."); }
javascript// 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:
javascriptconsole.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 (26 files):
API & Scripting:
Core Planning Features:
Workflow & Collaboration:
Version Management:
Integration & Advanced:
Development:
sap-browser-automation authentication, Edge/CDP, and recovery layerNew in 2025:
New in 2026:
When using this skill:
[Dim].[Hierarchy].&[Member]For troubleshooting:
Reference: See references/whats-new-2026-planning.md for detailed descriptions, usage instructions, and source citations.
references/data-actions.md - Data actions configuration and executionreferences/multi-actions.md - Multi-action orchestrationreferences/allocations.md - Allocation methods and spreadingreferences/scheduling-calendar.md - Workflow schedulingreferences/data-locking.md - Data locking configurationreferences/version-management.md - Version management best practicesreferences/api-reference.md - Planning API referencereferences/javascript-patterns.md - JavaScript scripting patternsreferences/edge-cdp-control.md - Planning-specific add-on for the shared sap-browser-automation Edge/CDP and authentication layertemplates/data-action-checklist.md - Data action implementation checklisttemplates/multi-action-checklist.md - Multi-action setup guidetemplates/parameter-table.md - Parameter table templateLicense: GPL-3.0 Version: 1.5.0 Maintained by: Eduard Jiglau Email: hello@sap-ai-skills.com Website: https://sap-ai-skills.com Repository: https://github.com/secondsky/sap-skills
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-15 | pass→pass | 11,185 | 8,183 | -27% | 1 | 1 | 0% | 1,674 | 12,861 | +668% | 0 | 0 | — |
case-01 | fail→fail | 15,035 | 12,339 | -18% | 1 | 1 | 0% | 2,624 | 13,776 | +425% | 0 | 0 | — |
case-02 | fail→fail | 21,073 | 16,782 | -20% | 1 | 1 | 0% | 3,257 | 14,471 | +344% | 0 | 0 | — |
case-03 | fail→fail | 16,533 | 18,698 | +13% | 1 | 1 | 0% | 3,255 | 15,276 | +369% | 0 | 0 | — |
case-04 | pass→pass | 19,628 | 18,068 | -8% | 1 | 1 | 0% | 3,219 | 14,339 | +345% | 0 | 0 | — |
case-05 | fail→fail | 17,864 | 14,220 | -20% | 1 | 1 | 0% | 3,370 | 14,143 | +320% | 0 | 0 | — |
case-06 | fail→pass | 17,984 | 12,330 | -31% | 1 | 1 | 0% | 2,852 | 13,447 | +371% | 0 | 0 | — |
case-07 | fail→pass | 7,513 | 3,645 | -51% | 1 | 1 | 0% | 1,216 | 12,177 | +901% | 0 | 0 | — |
case-08 | pass→pass | 5,492 | 7,043 | +28% | 1 | 1 | 0% | 832 | 12,802 | +1439% | 0 | 0 | — |
case-09 | pass→pass | 8,973 | 4,516 | -50% | 1 | 1 | 0% | 1,517 | 12,430 | +719% | 0 | 0 | — |
case-10 | fail→fail | 12,873 | 8,648 | -33% | 1 | 1 | 0% | 2,347 | 13,002 | +454% | 0 | 0 | — |
case-11 | fail→pass | 13,587 | 10,833 | -20% | 1 | 1 | 0% | 2,346 | 13,613 | +480% | 0 | 0 | — |
case-12 | fail→pass | 6,740 | 4,882 | -28% | 1 | 1 | 0% | 1,160 | 12,448 | +973% | 0 | 0 | — |
case-13 | fail→pass | 9,357 | 6,025 | -36% | 1 | 1 | 0% | 1,448 | 12,636 | +773% | 0 | 0 | — |
case-14 | fail→pass | 16,403 | 11,861 | -28% | 1 | 1 | 0% | 2,670 | 13,133 | +392% | 0 | 0 | — |
case-16 | pass→pass | 4,862 | 3,841 | -21% | 1 | 1 | 0% | 853 | 12,239 | +1335% | 0 | 0 | — |
case-17 | fail→pass | 25,331 | 6,857 | -73% | 1 | 1 | 0% | 1,156 | 12,784 | +1006% | 0 | 0 | — |
case-18 | fail→pass | 5,546 | 7,213 | +30% | 1 | 1 | 0% | 957 | 12,424 | +1198% | 0 | 0 | — |
case-19 | pass→pass | 6,944 | 4,596 | -34% | 1 | 1 | 0% | 1,062 | 12,355 | +1063% | 0 | 0 | — |
case-20 | fail→pass | 7,714 | 4,119 | -47% | 1 | 1 | 0% | 1,278 | 12,309 | +863% | 0 | 0 | — |
case-21 | pass→pass | 16,429 | 15,347 | -7% | 1 | 1 | 0% | 2,533 | 13,977 | +452% | 0 | 0 | — |
case-22 | fail→pass | 6,511 | 4,771 | -27% | 1 | 1 | 0% | 1,115 | 12,510 | +1022% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.