631 lines
12 KiB
Markdown
631 lines
12 KiB
Markdown
# Application API Reference
|
|
|
|
Complete reference for the Application object and utility APIs in SAP Analytics Cloud scripting.
|
|
|
|
**Source**: [Analytics Designer API Reference 2025.14](https://help.sap.com/doc/958d4c11261f42e992e8d01a4c0dde25/release/en-US/index.html)
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
1. [Application Object](#application-object)
|
|
2. [User Feedback](#user-feedback)
|
|
3. [Application Information](#application-information)
|
|
4. [Navigation](#navigation)
|
|
5. [Export Functions](#export-functions)
|
|
6. [Theme and Styling](#theme-and-styling)
|
|
7. [Application Events](#application-events)
|
|
8. [Utility APIs](#utility-apis)
|
|
9. [Enumerations](#enumerations)
|
|
|
|
---
|
|
|
|
## Application Object
|
|
|
|
The global `Application` object provides access to application-level functionality.
|
|
|
|
```javascript
|
|
// Always available - no need to get reference
|
|
Application.showBusyIndicator();
|
|
```
|
|
|
|
---
|
|
|
|
## User Feedback
|
|
|
|
### showBusyIndicator()
|
|
|
|
Shows loading indicator overlay.
|
|
|
|
```javascript
|
|
Application.showBusyIndicator();
|
|
|
|
// Perform long operation
|
|
await someAsyncOperation();
|
|
|
|
Application.hideBusyIndicator();
|
|
```
|
|
|
|
### hideBusyIndicator()
|
|
|
|
Hides loading indicator.
|
|
|
|
```javascript
|
|
Application.hideBusyIndicator();
|
|
```
|
|
|
|
### showMessage(type, message)
|
|
|
|
Displays message to user.
|
|
|
|
**Parameters**:
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| type | ApplicationMessageType | Message type |
|
|
| message | string | Message text |
|
|
|
|
```javascript
|
|
// Info message
|
|
Application.showMessage(ApplicationMessageType.Info, "Operation completed");
|
|
|
|
// Success message
|
|
Application.showMessage(ApplicationMessageType.Success, "Data saved");
|
|
|
|
// Warning message
|
|
Application.showMessage(ApplicationMessageType.Warning, "Unsaved changes");
|
|
|
|
// Error message
|
|
Application.showMessage(ApplicationMessageType.Error, "Operation failed");
|
|
```
|
|
|
|
### Confirm Dialog Pattern
|
|
|
|
```javascript
|
|
// Use popup/dialog for confirmations
|
|
// Create Popup_Confirm with Yes/No buttons
|
|
|
|
Button_Delete.onClick = function() {
|
|
Popup_Confirm.open();
|
|
};
|
|
|
|
Button_Yes.onClick = function() {
|
|
// Perform action
|
|
performDelete();
|
|
Popup_Confirm.close();
|
|
};
|
|
|
|
Button_No.onClick = function() {
|
|
Popup_Confirm.close();
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Application Information
|
|
|
|
### getInfo()
|
|
|
|
Returns application metadata.
|
|
|
|
```javascript
|
|
var info = Application.getInfo();
|
|
// Returns: ApplicationInfo object
|
|
// - id: string
|
|
// - name: string
|
|
// - description: string
|
|
```
|
|
|
|
### getUserInfo()
|
|
|
|
Returns current user information.
|
|
|
|
```javascript
|
|
var user = Application.getUserInfo();
|
|
// Returns: UserInfo object
|
|
// - id: string
|
|
// - displayName: string
|
|
// - email: string
|
|
```
|
|
|
|
**Example**:
|
|
```javascript
|
|
var user = Application.getUserInfo();
|
|
Text_Welcome.setText("Welcome, " + user.displayName);
|
|
```
|
|
|
|
### getRolesInfo()
|
|
|
|
Returns user roles.
|
|
|
|
```javascript
|
|
var roles = Application.getRolesInfo();
|
|
```
|
|
|
|
### getMode()
|
|
|
|
Returns current application mode.
|
|
|
|
```javascript
|
|
var mode = Application.getMode();
|
|
// Returns: ApplicationMode enum value
|
|
// - ApplicationMode.View
|
|
// - ApplicationMode.Present
|
|
// - ApplicationMode.Embed
|
|
```
|
|
|
|
**Example: Conditional Display**:
|
|
```javascript
|
|
if (Application.getMode() === ApplicationMode.Present) {
|
|
Button_Edit.setVisible(false);
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Navigation
|
|
|
|
### NavigationUtils
|
|
|
|
Navigate to other applications or stories.
|
|
|
|
#### openApplication(appId, options)
|
|
|
|
Opens another analytic application.
|
|
|
|
```javascript
|
|
NavigationUtils.openApplication("APP_ID", {
|
|
mode: ApplicationMode.View,
|
|
newWindow: true
|
|
});
|
|
```
|
|
|
|
#### openStory(storyId, options)
|
|
|
|
Opens a story.
|
|
|
|
```javascript
|
|
NavigationUtils.openStory("STORY_ID", {
|
|
newWindow: false
|
|
});
|
|
```
|
|
|
|
#### createApplicationUrl(appId, parameters)
|
|
|
|
Creates URL for an application with parameters.
|
|
|
|
```javascript
|
|
var url = NavigationUtils.createApplicationUrl("APP_ID", {
|
|
p_year: "2024",
|
|
p_region: "EMEA"
|
|
});
|
|
// Returns: URL string with encoded parameters
|
|
```
|
|
|
|
### Page Navigation (Within Application)
|
|
|
|
```javascript
|
|
// Get active page
|
|
var page = Application.getActivePage();
|
|
|
|
// Set active page
|
|
Application.setActivePage("Page_Detail");
|
|
```
|
|
|
|
### Tab Navigation
|
|
|
|
```javascript
|
|
// Switch tab
|
|
TabStrip_1.setSelectedTab("Tab_Chart");
|
|
```
|
|
|
|
---
|
|
|
|
## Export Functions
|
|
|
|
### Export PDF
|
|
|
|
```javascript
|
|
Application.export(ExportType.PDF, {
|
|
scope: ExportScope.All,
|
|
header: "Sales Report",
|
|
footer: "Confidential - Page {page}",
|
|
orientation: "landscape",
|
|
paperSize: "A4"
|
|
});
|
|
```
|
|
|
|
### Export Excel
|
|
|
|
```javascript
|
|
Application.export(ExportType.Excel, {
|
|
scope: ExportScope.All,
|
|
includeHierarchy: true,
|
|
fileName: "SalesData"
|
|
});
|
|
```
|
|
|
|
### Export CSV (Widget Level)
|
|
|
|
```javascript
|
|
Table_1.export(ExportType.CSV, {
|
|
fileName: "TableExport"
|
|
});
|
|
```
|
|
|
|
### Export PowerPoint
|
|
|
|
```javascript
|
|
Application.export(ExportType.PowerPoint, {
|
|
scope: ExportScope.All,
|
|
header: "Quarterly Review"
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Theme and Styling
|
|
|
|
### getTheme()
|
|
|
|
Returns current theme.
|
|
|
|
```javascript
|
|
var theme = Application.getTheme();
|
|
// Returns: "sap_fiori_3" | "sap_fiori_3_dark" | etc.
|
|
```
|
|
|
|
### setTheme(themeId)
|
|
|
|
Sets application theme.
|
|
|
|
```javascript
|
|
Application.setTheme("sap_fiori_3_dark");
|
|
```
|
|
|
|
### getCssClass()
|
|
|
|
Returns application CSS class.
|
|
|
|
```javascript
|
|
var cssClass = Application.getCssClass();
|
|
```
|
|
|
|
### setCssClass(className)
|
|
|
|
Sets application CSS class.
|
|
|
|
```javascript
|
|
Application.setCssClass("myCustomTheme");
|
|
```
|
|
|
|
---
|
|
|
|
## Application Events
|
|
|
|
### onInitialization
|
|
|
|
Fires once when application loads.
|
|
|
|
```javascript
|
|
Application.onInitialization = function() {
|
|
// Initialize application state
|
|
// BEST PRACTICE: Keep this empty for performance
|
|
};
|
|
```
|
|
|
|
**Best Practice**: Avoid heavy operations. Use:
|
|
- URL parameters for initial values
|
|
- Static widget filters
|
|
- Background loading for hidden widgets
|
|
|
|
### onResize
|
|
|
|
Fires when application is resized.
|
|
|
|
```javascript
|
|
Application.onResize = function(width, height) {
|
|
console.log("New size:", width, height);
|
|
|
|
// Adjust layout
|
|
if (width < 768) {
|
|
Chart_1.setVisible(false);
|
|
Table_1.setVisible(true);
|
|
} else {
|
|
Chart_1.setVisible(true);
|
|
Table_1.setVisible(true);
|
|
}
|
|
};
|
|
```
|
|
|
|
### onOrientationChange
|
|
|
|
Fires on mobile when orientation changes.
|
|
|
|
```javascript
|
|
Application.onOrientationChange = function(orientation) {
|
|
console.log("Orientation:", orientation);
|
|
// "portrait" | "landscape"
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Utility APIs
|
|
|
|
### ConvertUtils
|
|
|
|
Type conversion utilities.
|
|
|
|
```javascript
|
|
// String to Integer
|
|
var num = ConvertUtils.stringToInteger("42");
|
|
// Returns: 42
|
|
|
|
// Number to String
|
|
var str = ConvertUtils.numberToString(42);
|
|
// Returns: "42"
|
|
|
|
// String to Number (with decimals)
|
|
var decimal = ConvertUtils.stringToNumber("42.5");
|
|
// Returns: 42.5
|
|
```
|
|
|
|
### NumberFormat
|
|
|
|
Number formatting options.
|
|
|
|
```javascript
|
|
var format = {
|
|
decimalPlaces: 2,
|
|
scalingFactor: 1000, // Display in thousands
|
|
showSign: true,
|
|
groupingSeparator: ","
|
|
};
|
|
```
|
|
|
|
### DateFormat
|
|
|
|
Date formatting utilities.
|
|
|
|
```javascript
|
|
// Format date
|
|
var formatted = DateFormat.format(dateValue, "yyyy-MM-dd");
|
|
// Returns: "2024-01-15"
|
|
|
|
// Parse date
|
|
var parsed = DateFormat.parse("2024-01-15", "yyyy-MM-dd");
|
|
```
|
|
|
|
### StringUtils
|
|
|
|
String manipulation.
|
|
|
|
```javascript
|
|
// Available utilities for string operations
|
|
var trimmed = myString.trim();
|
|
var upper = myString.toUpperCase();
|
|
var lower = myString.toLowerCase();
|
|
```
|
|
|
|
### ArrayUtils
|
|
|
|
Array operations.
|
|
|
|
```javascript
|
|
// Standard JavaScript array methods
|
|
var arr = [1, 2, 3, 4, 5];
|
|
|
|
// Filter
|
|
var filtered = arr.filter(function(item) {
|
|
return item > 2;
|
|
});
|
|
|
|
// Map
|
|
var doubled = arr.map(function(item) {
|
|
return item * 2;
|
|
});
|
|
|
|
// Find
|
|
var found = arr.find(function(item) {
|
|
return item === 3;
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Enumerations
|
|
|
|
### ApplicationMessageType
|
|
|
|
```javascript
|
|
ApplicationMessageType.Info // Informational
|
|
ApplicationMessageType.Success // Success/confirmation
|
|
ApplicationMessageType.Warning // Warning
|
|
ApplicationMessageType.Error // Error
|
|
```
|
|
|
|
### ApplicationMode
|
|
|
|
```javascript
|
|
ApplicationMode.View // Normal view mode
|
|
ApplicationMode.Present // Presentation mode
|
|
ApplicationMode.Embed // Embedded in another app
|
|
```
|
|
|
|
### ExportType
|
|
|
|
```javascript
|
|
ExportType.PDF // PDF export
|
|
ExportType.Excel // Excel export
|
|
ExportType.CSV // CSV export
|
|
ExportType.PowerPoint // PowerPoint export
|
|
```
|
|
|
|
### ExportScope
|
|
|
|
```javascript
|
|
ExportScope.All // All content
|
|
ExportScope.PointOfView // Current point of view only
|
|
```
|
|
|
|
---
|
|
|
|
## Debugging Helpers
|
|
|
|
### console.log()
|
|
|
|
Print debug information.
|
|
|
|
```javascript
|
|
console.log("Debug message");
|
|
console.log("Variable:", myVariable);
|
|
console.log("Object:", JSON.stringify(myObject));
|
|
```
|
|
|
|
**Access Console**:
|
|
1. Run application
|
|
2. Press F12 (Developer Tools)
|
|
3. Go to Console tab
|
|
4. Look in "sandbox.worker.main.*.js"
|
|
|
|
### Debug Mode
|
|
|
|
Enable enhanced debugging:
|
|
|
|
```javascript
|
|
// Add to URL
|
|
// ?debug=true
|
|
|
|
// Or at end of existing URL
|
|
// ;debug=true
|
|
```
|
|
|
|
### debugger Statement
|
|
|
|
Pause execution for step-through debugging.
|
|
|
|
```javascript
|
|
debugger; // Execution pauses here
|
|
var value = someCalculation();
|
|
```
|
|
|
|
### Performance Logging
|
|
|
|
```javascript
|
|
// Add URL parameter
|
|
// ?APP_PERFORMANCE_LOGGING=true
|
|
|
|
// In console
|
|
window.sap.raptr.getEntriesByMarker("(Application)")
|
|
.filter(e => e.entryType === 'measure')
|
|
.sort((a,b) => (a.startTime + a.duration) - (b.startTime + b.duration));
|
|
```
|
|
|
|
---
|
|
|
|
## Complete Examples
|
|
|
|
### Example 1: User-Aware Application
|
|
|
|
```javascript
|
|
Application.onInitialization = function() {
|
|
// Get user info
|
|
var user = Application.getUserInfo();
|
|
Text_Welcome.setText("Welcome, " + user.displayName);
|
|
|
|
// Check roles
|
|
var roles = Application.getRolesInfo();
|
|
var isAdmin = roles.some(function(role) {
|
|
return role.id === "ADMIN";
|
|
});
|
|
|
|
// Show admin controls if authorized
|
|
Panel_AdminControls.setVisible(isAdmin);
|
|
};
|
|
```
|
|
|
|
### Example 2: Responsive Layout
|
|
|
|
```javascript
|
|
Application.onResize = function(width, height) {
|
|
// Mobile layout (< 768px)
|
|
if (width < 768) {
|
|
Chart_1.setVisible(false);
|
|
Table_1.setVisible(true);
|
|
Button_ToggleView.setVisible(true);
|
|
}
|
|
// Tablet layout (768-1024px)
|
|
else if (width < 1024) {
|
|
Chart_1.setVisible(true);
|
|
Table_1.setVisible(false);
|
|
Button_ToggleView.setVisible(true);
|
|
}
|
|
// Desktop layout (>= 1024px)
|
|
else {
|
|
Chart_1.setVisible(true);
|
|
Table_1.setVisible(true);
|
|
Button_ToggleView.setVisible(false);
|
|
}
|
|
};
|
|
```
|
|
|
|
### Example 3: Export Report
|
|
|
|
```javascript
|
|
Button_ExportPDF.onClick = function() {
|
|
var year = Dropdown_Year.getSelectedKey();
|
|
var region = Dropdown_Region.getSelectedKey();
|
|
|
|
Application.export(ExportType.PDF, {
|
|
scope: ExportScope.All,
|
|
header: "Sales Report - " + year + " - " + region,
|
|
footer: "Generated on " + new Date().toLocaleDateString() + " | Page {page}",
|
|
orientation: "landscape",
|
|
paperSize: "A4"
|
|
});
|
|
};
|
|
|
|
Button_ExportExcel.onClick = function() {
|
|
Table_1.export(ExportType.Excel, {
|
|
fileName: "SalesData_" + new Date().toISOString().split('T')[0]
|
|
});
|
|
};
|
|
```
|
|
|
|
### Example 4: Navigation with Parameters
|
|
|
|
```javascript
|
|
// Navigate to detail application
|
|
Button_ViewDetails.onClick = function() {
|
|
var selections = Table_1.getSelections();
|
|
if (selections.length > 0) {
|
|
var productId = selections[0]["Product"];
|
|
var year = Dropdown_Year.getSelectedKey();
|
|
|
|
NavigationUtils.openApplication("PRODUCT_DETAIL_APP", {
|
|
mode: ApplicationMode.View,
|
|
newWindow: true,
|
|
parameters: {
|
|
p_product: productId,
|
|
p_year: year
|
|
}
|
|
});
|
|
} else {
|
|
Application.showMessage(
|
|
ApplicationMessageType.Warning,
|
|
"Please select a product first"
|
|
);
|
|
}
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
- [DataSource API](api-datasource.md)
|
|
- [Widgets API](api-widgets.md)
|
|
- [Planning API](api-planning.md)
|
|
|
|
**Official Reference**: [https://help.sap.com/doc/958d4c11261f42e992e8d01a4c0dde25/release/en-US/index.html](https://help.sap.com/doc/958d4c11261f42e992e8d01a4c0dde25/release/en-US/index.html)
|