SAP Data API
SAP Data API allows to upload and download data from SAP. The API is available for Evolve and Studio Manager. API exposes JSON payload and other details (i.e. SAP, Run Settings etc.) for posting data to the SAP. ROI will be synced for all the environments (Development, QA and Production) but the billing will be done only for the production system .
SAP Data API does not support chained and multi script. The SAP Data API supports only single transaction. Evolve web and service worker do not support GUI script based Transaction so it is also not supported for SAP Data API. Query with IN criteria using dynamic file path for fixed or user defined is not supported.
Prerequisites
Following are the two prerequisites to use this feature.
-
SAP Data API license must be activated on the Evolve system.
-
Value for the key SapIntegrationAPIEnable should be set True.
Once the license is activated successfully, application will also configure the system variable SapIntegrationAPIEnable and set it to true automatically on advanced settings ( Administration → System → Advanced Settings ). To disable the SAP feature, set this value to false.
Only Global Administrators are allowed to Add and Manage license. SAP Integration License is the required license for SAP Data API; Type can be Subscription (Tiered -tier band) or Subscription (Volume - Volume band). Advanced settings key SapIntegrationAPIEnable can only be enabled if user has a valid SAP Integration License SKU type. SapIntegrationApi is secured with API gateway and its supported authentication mechanism.
You can access SAP Data API from Evolve. For details about saving solutions of SAP Data APIs on Evolve, SAP API Approval Settings, and adding and updating SAP API from Solutions tab, see SAP Data API with Evolve.
You can create scripts for SAP Data API and submit the scripts to Evolve using Studio. See SAP Data API with Studio for more details.
-
Use "ErrorCode" from the API response, instead of field "Message". As for some error codes the data in Message field may be in English and for some in user's default language.
-
As per JSON standard, "\" is not valid string as JSON validator fails to support "\" character. Hence, you need to add "\\" to recognize "\" data.
-
For any escape character support for JSON, you need to use "\" before the escape character.
For example: "\n" and "\t" will pass through JSON validator, but this will be replaced by blank. So, you need to again add \\n and \\t character.
For accessing any API, Route Prefix would be required. Route Prefix is combination of Evolve URL and specific keywords.
For Evolve URL, user has to provide the Port number unless it is not the default Port number. For example if we have an Evolve site at default Port 80 then we can use both of the below evolve URLs for accessing API.
-
http://cha-de-vstpnx1.wsdt.local:80/svr/api/v1/Processextn/GetAllAssignments
-
http://cha-de-vstpnx1.wsdt.local/svr/api/v1/Processextn/GetAllAssignments.
For the three security options there are following route prefixes that need to be used to hit the API:
Client Secret : “<Evolve URL>/svr”
Secure Token : “<Evolve URL>/svr”
Certificate : “<Evolve URL>/svrc”
For SAP Data API, when user selects a solution to view SAP Data API solution URL is visible as “<BaseURL/GatewayURL>/api/v1/SAPIS”
BaseURL/GatewayURL is RoutePrefix.
BaseURL : Evolve URL
GatewayURL : “svr” for Client Secret & Secure Token and “svrc” for Certificate.
Request and Response Body
To upload and download data from SAP using the SAP Data API, the structure of Request and Response body will be as follows:
Request:
The Request Body contains the following:
Name | Type | Restriction | Description |
---|---|---|---|
SolutionDetail | JObject | Required |
Information about solution with following parameters:
|
RunParameter | JObject | Required | Defines the data that is to be validated/posted on SAP. Refer to Input Payload Sample for field Details. Data to be defined depends on each specific run. |
SapDetails | JObject | Required |
Contains information about solution with following parameters:
It is advised to save SAP Credentials or Windows Credentials on Evolve against Evolve User; to prevent plain text password to traverse on network call while executing API through third party client. |
RequestParameter | JObject | - |
This contains information about following parameter:
|
Response:
The Response Body contains the following:
Name | Type | Restriction | Description |
---|---|---|---|
RunResponse | JObject | - |
Contains information about executed Run with following parameters:
|
Error:
The Error body contains the following:
Name | Type | Restriction | Description |
---|---|---|---|
Fixed Array for error specifications | Jarray | - |
Contains information about executed Run with following parameters:
|
Request and Response Sample
API specification for Transaction
The payload shows combined list of Input, Output, and Error payload.
Date and Number format
ISO date format is selected as it is well known and widely used. It is used across different languages and well suited to convert it into SAP user profile format.
The following date and number format is passed in SAP API payload. The date and number format is validated.
Date Format ("yyyy-MM-dd"), example (2021-06-09)
Decimal format (99999999.999), example (12345.678)
Input and Output payload usage: For Transaction and BAPI, user needs to pick Input payload for posting the data to SAP and Output payload to download the data from SAP.
Error payload is common for Transaction/BAPI/Query and it shows error to the user.
Request Sample:
Request Payload
{
"SolutionDetail": {
"SolutionName": "string",
"LibraryName": "string",
"AppName": "string"
},
"RunParameter": {
"Material_Number": "string",
"Material_Description__Short_Text_": "string",
"Gross_Weight": "0.0",
"Net_Weight": "0.0"
} ,
"SapDetails": {
"ConnectionName": "string",
"EvolveUser": "string",
"SAPUser": "string",
"SAPPassword": "string",
"SAPLanguage": "string",
"WindowsCredentials": {
"UserName": "string",
"Password": "string"
}
},
"RequestParameter": {
"Validate": "bool"
}
}
Response Sample:
Response Payload
{
"RunResponse":{
"Success": "bool",
"LogField": "string",
"RunResult": {
"Base_Unit_of_Measure": "string",
"Material_Group": "string",
"Weight_Unit": "string"
}
}
}
Error Sample:
Error Payload
[
{
"ErrorCode": "string",
"Message": "string",
"errorPrameters": [{"string"}]
}
]
API specification for Query
The payload shows combined list of Input, Output, and Error payload.
Input and Output payload usage: For Query, user needs to pick Input payload to pass the clause builder criteria fields and Output payload will be used to download data from SAP.
Error payload is common for Transaction/BAPI/Query and it shows error to the user.
Request Sample:
Request Payload
{
"SolutionDetail": {
"SolutionName": "string",
"LibraryName": "string",
"AppName": "string"
},
"RunParameter": {
"MAKT_Language_Key": {
"EqualToOp1": "string"
}
},
"SapDetails": {
"ConnectionName": "string",
"EvolveUser": "string",
"SAPUser": "string",
"SAPPassword": "string",
"SAPLanguage": "string",
"WindowsCredentials": {
"UserName": "string",
"Password": "string"
}
},
"RequestParameter": {
"RecordCount": "0",
"GetRecordsCountOnly": "bool"
}
}
Response Sample:
Respose Payload
{
"RunResponse":{
"Success": "bool",
"LogField": "string",
"RecordCount": "0",
"RunResult": [{
"MARA_Material_Number": "string",
"MAKT_Language_Key": "string",
"MAKT_Material_Description__Short_Text_": "string",
"MARA_Gross_Weight": "string",
"MARA_Net_Weight": "string"
}]
}
}
Error Sample:
Error Payload
[
{
"ErrorCode": "string",
"Message": "string",
"errorPrameters": [{"string"}]
}
]