Technical Articles
Sending Complete Payload in JSON in SAP PO REST URL
Dear Reader,
Introduction: In this blog post I will explain each step required to configure REST Channel in SAP PO Single stack 7.50 for sending Complete payload in JSON format in REST URL. SAP PO REST Adapter provides extensive functionalities can be used to realize a wide range of scenarios for consuming or exposing REST services in SAP PO.
Requirement: I recently had got a requirement where in third party was expecting the complete payload sent from S4 HANA in JSON format in the REST URL.
Below is the sample URL:
https://<hostname>?materialMasterData={“Field1″:”value1″,”Field2″:”Value2″,”Field3″:”Value3″,”Field4″:”Value4″,”Field5″:”Value5″,”Field6″:”Value6”}&userKey=<Secrectkey>
Prerequisites: Make sure you are using SAP PO 7.50 SP 19 patch 2 or latest. In case you are using SP 19 patch 0 or older kindly follow SAP Note 2966179
Solution: I have used REST adapter’s URL Pattern Variable Substitution to achieve this.
Below is the URL Pattern that I have used:
https://<hostname>?materialMasterData={brack}”materialName”:”{materialName}”,”rate”:”{rate}”,”materialType”:”{materialType}”,”codes”:”{codes}”,”type”:”{type}”,”units”:”{units}”{close}&userKey=<Secrectkey>
Make sure you use the correct field names in the variable replacement along with the correct xPath Expression (Refer to the screenshot attached).
Channel Configuration
I have used {brack} and {close} to replace the “{” , “}” as it was getting an exception of illegal character. Kindly refer to the Screenshot 2.
Channel Configuration 2
Once this is done please ensure that you have used REST adapter Modules “EncodeURL” and “EncodeURLPath” and set the value as “true”.
After this you can test the interface and check the URL generated in the logs.
It would be encoded to avoid illegal character exception.
Log screenshot is attached.
Log Screenshot
Thanks for the nice article. I am wondering is it secured to send payload in url? Also, what's the number of characters limitations in url can be added in the article.
Best regards,
Sumit
Hi Sumit,
This method is not recommended, the only reason why I had to implement is because the system didn't had the functionality of accepting the Data in body, also the message transmission is happening within the landscape.
The maximum limit that is advisable for the URL is 2,048 characters, if the URL is having more than that, it may cause runtime errors. In our case it will always be less than that, so didn't encountered any issues as such.