Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
phanikumar_akella
Participant
I am posting this blog post to share some of the challenges I have faced while integrating our SAP system with a REST-based 3rd party system via SAP PI 7.31 SPS 19 REST adapter.

Scenario:

SAP sends Sync HTTP (GET and POST) requests to the 3rd Party system (via SAP PI) and expects a response from 3rd party system.



Issue 1: HTTP  415 Unsupported Media Type exception

All HTTP-GET requests are working fine. HTTP-POST messages triggered from SAP are failing with HTTP  415 Unsupported Media Type exception.

 



Root Cause:

Logs from 3rd party application suggest POST request from SAP PI REST receiver adapter is failing at 3rd party as charset is getting appended to the Content-Type HTTP header parameter

i.e. Content-Type = application/json;charset=UTF-8

From the SAP PI point of view, Content-Type is defined as application/json in the REST receiver adapter configuration. Also, PI adapter logs show RESTOUT_HTTP_HEADER Content-Type as application/json.



Solution:

The issue got resolved after implementing SAP Note “2456232 - Cannot send HTTP Content-Type header without charset value”.

 

Issue 2: Special characters in the REST Request

REST requests with special chars like &,’, /, are failing.

e.g. M&S

MARSK & SPENCERS.

Solution:

Implemented 2215187 - Options for URL encoding of query strings with PI REST adapter

Set Module parameter EncodeURL to false.



 

Note: After implementing this fix all the messages with spaces are failing.

i.e. M&S is working fine, but MARKS & SPENCERS is failing.

This issue got resolved after replacing & with %26 and spaces with +.

i.e. MARKS+%26+Spencers.

Pls find below list with more special chars and code used















































































































































































































Special Character Description Code Used Status
£ (pound sign) %C2%A3 Accepted
} Right brace %7D Accepted
| Vertical bar %7C Accepted
{ Left brace %7B Accepted
\ Backward Slash %5C Accepted
  ' (Apostrophe) 27% Accepted
& (ampersand) 26% Accepted
" (Inverted Comma) 22% Accepted
A-Z (any standard letter) Accepted
0-9 (any standard numeric) Accepted
@ (at sign) Accepted
$ (dollar sign) Accepted
# (hash tag) Accepted
. (full stop) Accepted
, (comma) Accepted
: (colon) Accepted
; (semi-colon) Accepted
- (hyphen) Accepted
( Left parenthesis Accepted
) Right parenthesis Accepted
/ Forward Slash Accepted
+ Plus Accepted
_ Underscore Accepted
= Equals Accepted
[ Square Bracket Open Not Accepted
] Square Bracket Close Not Accepted
! Exclamation Not Accepted
~ Tilde Not Accepted
` Grave accent (backtick) Not Accepted
< Less Than Not Accepted
> Greater Than Not Accepted
(euro sign) Not Accepted
¥ (yen sign) Not Accepted

 

Issue 3: HTTP Error Responses from 3rd are not getting delivered to Source (i.e. SAP)

Non-200 HTTP (error) response messages from 3rd party like HTTP 415, 503, 500, 404, 403 are failing in SAP PI and not getting delivered to Source (i.e. SAP)

 



Solution:

Test the service via the postman. Get the 3rd party Error response structure and embed that in the PI response structure (DT).

In the Receiver Adapter configuration -> Error Handling

Source = HTTP Status Code

Select check box “Selection does NOT match”

Message Content = {http_result}

 



 

Conclusion: SAP has released many patches for REST adapter. Its recommended to check the patch levels before starting the development to avoid these issues.
3 Comments
Labels in this area