376 lines
12 KiB
Markdown
376 lines
12 KiB
Markdown
# Graph & OData Provisioning - Comprehensive Reference
|
|
|
|
**Source**: SAP BTP Integration Suite Documentation
|
|
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/tree/main/docs/ISuite](https://github.com/SAP-docs/sap-btp-integration-suite/tree/main/docs/ISuite)
|
|
**Last Updated**: 2025-11-22
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
1. [Graph Overview](#graph-overview)
|
|
2. [Business Data Graph](#business-data-graph)
|
|
3. [Entity Types](#entity-types)
|
|
4. [Querying Graph](#querying-graph)
|
|
5. [Extensibility](#extensibility)
|
|
6. [OData Provisioning Overview](#odata-provisioning-overview)
|
|
7. [OData Service Registration](#odata-service-registration)
|
|
8. [Limits and Quotas](#limits-and-quotas)
|
|
|
|
---
|
|
|
|
## Graph Overview
|
|
|
|
Graph is a capability that provides a unified API to access business data across SAP systems as a semantically connected data graph.
|
|
|
|
### Key Benefits
|
|
|
|
- **Single API** for multiple SAP systems
|
|
- **Unified data model** across S/4HANA, Sales Cloud, SuccessFactors
|
|
- **Query languages** OData V4 and GraphQL
|
|
- **No data caching** - queries route to source systems
|
|
- **Scalable multitenant** architecture
|
|
|
|
### How It Works
|
|
|
|
```
|
|
┌─────────────────┐
|
|
│ Applications │
|
|
│ (OData/GraphQL)│
|
|
└────────┬────────┘
|
|
│
|
|
┌────────▼────────┐
|
|
│ Graph │
|
|
│ Business Data │
|
|
│ Graph │
|
|
└────────┬────────┘
|
|
│
|
|
┌────────┴────────────────────────────┐
|
|
│ │
|
|
▼ ▼ ▼
|
|
┌──────────┐ ┌──────────┐ ┌──────────────┐
|
|
│ S/4HANA │ │ Sales │ │SuccessFactors│
|
|
│ Cloud │ │ Cloud │ │ │
|
|
└──────────┘ └──────────┘ └──────────────┘
|
|
```
|
|
|
|
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-is-graph-ad1c48d.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-is-graph-ad1c48d.md)
|
|
|
|
---
|
|
|
|
## Business Data Graph
|
|
|
|
The Business Data Graph consolidates data entities from SAP systems into one curated, semantically connected data model.
|
|
|
|
### SAP-Managed Graph
|
|
|
|
SAP provides a baseline data graph with:
|
|
- Pre-defined entity relationships
|
|
- Standard data models
|
|
- Cross-system navigation
|
|
|
|
### Supported Data Sources
|
|
|
|
| System | Entity Examples |
|
|
|--------|-----------------|
|
|
| S/4HANA Cloud | BusinessPartner, SalesOrder, Product |
|
|
| Sales Cloud | Account, Opportunity, Lead |
|
|
| SuccessFactors | Employee, Position, Department |
|
|
|
|
### Graph Navigator
|
|
|
|
Visual tool for exploring the data graph:
|
|
- Browse entities and relationships
|
|
- View entity properties
|
|
- Test queries
|
|
- Explore navigation paths
|
|
|
|
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/graph-e03300f.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/graph-e03300f.md)
|
|
|
|
---
|
|
|
|
## Entity Types
|
|
|
|
### Unified Entities
|
|
|
|
Entities that aggregate data from multiple systems into a single view.
|
|
|
|
**Example**: Customer entity combining:
|
|
- S/4HANA BusinessPartner
|
|
- Sales Cloud Account
|
|
- SuccessFactors Employee (as contact)
|
|
|
|
### Mirrored Entities
|
|
|
|
Direct representation of source system entities without transformation.
|
|
|
|
### Custom Entities
|
|
|
|
User-defined entities that extend the standard graph:
|
|
- Custom data sources
|
|
- Custom properties
|
|
- Custom relationships
|
|
|
|
### Entity Properties
|
|
|
|
| Property Type | Description |
|
|
|---------------|-------------|
|
|
| Primitive | String, Number, Boolean, Date |
|
|
| Navigation | Links to other entities |
|
|
| Complex | Structured nested types |
|
|
|
|
**Documentation**:
|
|
- Unified: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/unified-entities-9bcd2ec.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/unified-entities-9bcd2ec.md)
|
|
- Mirrored: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/mirrored-entities-07fdc7a.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/mirrored-entities-07fdc7a.md)
|
|
- Custom: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/custom-entities-af8dcd6.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/custom-entities-af8dcd6.md)
|
|
|
|
---
|
|
|
|
## Querying Graph
|
|
|
|
### OData V4 Queries
|
|
|
|
Standard OData query syntax:
|
|
|
|
```
|
|
GET /graph/api/v1/sap.graph/Customer
|
|
GET /graph/api/v1/sap.graph/Customer('1001')
|
|
GET /graph/api/v1/sap.graph/Customer?$filter=country eq 'US'
|
|
GET /graph/api/v1/sap.graph/Customer?$select=name,email
|
|
GET /graph/api/v1/sap.graph/Customer?$expand=orders
|
|
```
|
|
|
|
### Query Options
|
|
|
|
| Option | Description |
|
|
|--------|-------------|
|
|
| `$filter` | Filter results |
|
|
| `$select` | Select properties |
|
|
| `$expand` | Include related entities |
|
|
| `$orderby` | Sort results |
|
|
| `$top` | Limit results |
|
|
| `$skip` | Pagination offset |
|
|
|
|
### GraphQL Queries
|
|
|
|
```graphql
|
|
query {
|
|
Customer(id: "1001") {
|
|
name
|
|
email
|
|
orders {
|
|
orderNumber
|
|
totalAmount
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Navigation
|
|
|
|
Traverse entity relationships:
|
|
|
|
```
|
|
# OData - Get customer's orders
|
|
GET /graph/api/v1/sap.graph/Customer('1001')/orders
|
|
|
|
# OData - Get order's line items
|
|
GET /graph/api/v1/sap.graph/SalesOrder('ORDER001')/items
|
|
```
|
|
|
|
---
|
|
|
|
## Extensibility
|
|
|
|
### Custom Data Sources
|
|
|
|
Add non-SAP data to the graph:
|
|
|
|
1. **Register data source** connection
|
|
2. **Define entity mappings**
|
|
3. **Configure authentication**
|
|
4. **Test connectivity**
|
|
|
|
### Projections
|
|
|
|
Customize existing entities:
|
|
- Add/remove properties
|
|
- Rename entities
|
|
- Filter data
|
|
- Define transformations
|
|
|
|
### Compositions
|
|
|
|
Create new entities from existing ones:
|
|
- Combine entities
|
|
- Define relationships
|
|
- Create computed properties
|
|
|
|
### Projection Definition (JSON)
|
|
|
|
```json
|
|
{
|
|
"projections": [
|
|
{
|
|
"name": "MyCustomer",
|
|
"source": "sap.graph.Customer",
|
|
"properties": {
|
|
"include": ["id", "name", "email"],
|
|
"exclude": ["internalNotes"]
|
|
},
|
|
"filter": "status eq 'ACTIVE'"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## OData Provisioning Overview
|
|
|
|
OData Provisioning exposes SAP Business Suite data as OData services on BTP without requiring an on-premise SAP Gateway hub.
|
|
|
|
### Key Features
|
|
|
|
- **Expose business data** as OData services
|
|
- **No Gateway hub** installation required
|
|
- **Reduced TCO** with cloud-managed service
|
|
- **Multi-device access** through standard protocol
|
|
|
|
### Architecture
|
|
|
|
```
|
|
┌─────────────────┐
|
|
│ Application │
|
|
│ (OData V2/V4) │
|
|
└────────┬────────┘
|
|
│
|
|
┌────────▼────────┐
|
|
│ OData │
|
|
│ Provisioning │
|
|
│ (BTP) │
|
|
└────────┬────────┘
|
|
│ Cloud Connector
|
|
┌────────▼────────┐
|
|
│ SAP Business │
|
|
│ Suite (ECC) │
|
|
│ (On-Premise) │
|
|
└─────────────────┘
|
|
```
|
|
|
|
### Prerequisites
|
|
|
|
| Requirement | Description |
|
|
|-------------|-------------|
|
|
| Cloud Connector | Connect to on-premise |
|
|
| Backend components | IW_BEP 200 or SAP_GWFND |
|
|
| Service plan | Appropriate IS service plan |
|
|
|
|
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/odata-provisioning-d257fc3.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/odata-provisioning-d257fc3.md)
|
|
|
|
---
|
|
|
|
## OData Service Registration
|
|
|
|
### Register Service
|
|
|
|
1. **Navigate** to OData Provisioning in Integration Suite
|
|
2. **Add system** connection via Cloud Connector
|
|
3. **Select services** to expose
|
|
4. **Configure** service settings
|
|
5. **Activate** service
|
|
|
|
### Service Settings
|
|
|
|
| Setting | Description |
|
|
|---------|-------------|
|
|
| Service Name | External service identifier |
|
|
| Backend System | Source system connection |
|
|
| Authentication | User propagation, technical user |
|
|
| Cache Settings | Response caching options |
|
|
|
|
### Runtime Access
|
|
|
|
Configure user access:
|
|
1. **Create role collection** for OData access
|
|
2. **Assign users** or user groups
|
|
3. **Map roles** to service operations
|
|
|
|
### Service URL Pattern
|
|
|
|
```
|
|
[https://<tenant>.integrationsuite.cfapps.<region>.hana.ondemand.com](https://<tenant>.integrationsuite.cfapps.<region>.hana.ondemand.com)
|
|
/odata/v4/<service-name>/<entity-set>
|
|
```
|
|
|
|
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/runtime-access-and-role-assignment-for-odata-provisioning-b46816c.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/runtime-access-and-role-assignment-for-odata-provisioning-b46816c.md)
|
|
|
|
---
|
|
|
|
## Limits and Quotas
|
|
|
|
### Graph Limits
|
|
|
|
| Limit | Value | Scope |
|
|
|-------|-------|-------|
|
|
| Business data graphs | 500 | Per global account |
|
|
| Business data graphs | 50 | Per subaccount |
|
|
| Services per graph | 5,000 | Per graph |
|
|
| Service metadata size | 50 MB | Per service |
|
|
| Extensions | 100 | Per subaccount |
|
|
| Projection definitions | 100 | Per extension |
|
|
| Projection file size | 1 MB | Per file |
|
|
|
|
### OData Provisioning Limits
|
|
|
|
| Limit | Value |
|
|
|-------|-------|
|
|
| Services | Based on service plan |
|
|
| Connections | Based on service plan |
|
|
| Request size | 50 MB |
|
|
| Response size | 50 MB |
|
|
|
|
### Error Handling
|
|
|
|
When limits are exceeded:
|
|
- Graph returns error response
|
|
- Check quota usage in cockpit
|
|
- Request quota increase if needed
|
|
|
|
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/limits-a61f1ce.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/limits-a61f1ce.md)
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
### Graph Usage
|
|
|
|
1. **Use projections** to limit data exposure
|
|
2. **Select specific properties** to reduce payload
|
|
3. **Implement pagination** for large result sets
|
|
4. **Cache** where appropriate in applications
|
|
|
|
### OData Provisioning
|
|
|
|
1. **Secure services** with proper authentication
|
|
2. **Monitor usage** through BTP cockpit
|
|
3. **Optimize queries** to reduce backend load
|
|
4. **Use filters** to limit data transfer
|
|
|
|
### Performance
|
|
|
|
1. **Avoid deep navigation** (>3 levels)
|
|
2. **Batch requests** when possible
|
|
3. **Use $select** to limit properties
|
|
4. **Implement client-side caching**
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
- **Graph Overview**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-is-graph-ad1c48d.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-is-graph-ad1c48d.md)
|
|
- **Business Data Graph**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/business-data-graph-894e28c.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/business-data-graph-894e28c.md)
|
|
- **OData Provisioning**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/odata-provisioning-d257fc3.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/odata-provisioning-d257fc3.md)
|
|
- **Graph Troubleshooting**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/troubleshooting-for-graph-2cfb06c.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/troubleshooting-for-graph-2cfb06c.md)
|
|
- **Limits**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/limits-a61f1ce.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/limits-a61f1ce.md)
|