Monday, 23 October 2017

REST API from the Oracle system URL issue:

There is no REST adapter now in SAP HCI, so you can convert the URL to the specific format then only this will be allowed in HTTP adapter.

This is the initial URL provided from the Source system:

https://domain/services/rest/connect/v1.1/queryResults/?query=Select A.Id Availability,I.IntakeID, C.CampusId From Availability A join A.IntakeID I join A.CampusID C where C.CampusId='<CAMPUS_ID>'

Convert this URL as below:


Use this in the HTTP adapter as:

Address:  https://domain/services/rest/connect/v1.1/queryResults/

Query: query=Select%20A.Id%20Availability,I.IntakeID,%20C.CampusId%20From%20Availability%20A%20join%20A.IntakeID%20I%20join%20A.CampusID%20C%20where%20C.CampusId=%27%3CCAMPUS_ID%3E%27
Proxy Type: Internet

Method:  GET

Reference (URI Codes for changes in URL)

ASCII Encoding Reference
Your browser will encode input, according to the character-set used in your page.
The default character-set in HTML5 is UTF-8.

Character From Windows-1252 From UTF-8
space 20% 20%
! 21% 21%
" 22% 22%
# 23% 23%
$ 24% 24%
% 25% 25%
& 26% 26%
' 27% 27%
( 28% 28%
) 29% 29%
* %2A %2A
+ %2B %2B
, %2C %2C
- %2D %2D
. %2E %2E
/ %2F %2F
0 30% 30%
1 31% 31%
2 32% 32%
3 33% 33%
4 34% 34%
5 35% 35%
6 36% 36%
7 37% 37%
8 38% 38%
9 39% 39%
: %3A %3A
; %3B %3B
%3C %3C
= %3D %3D
%3E %3E
? %3F %3F
@ 40% 40%
A 41% 41%
B 42% 42%
C 43% 43%
D 44% 44%
E 45% 45%
F 46% 46%
G 47% 47%
H 48% 48%
I 49% 49%
J %4A %4A
K %4B %4B
L %4C %4C
M %4D %4D
N %4E %4E
O %4F %4F
P 50% 50%
Q 51% 51%
R 52% 52%
S 53% 53%
T 54% 54%
U 55% 55%
V 56% 56%
W 57% 57%
X 58% 58%
Y 59% 59%
Z %5A %5A
[ %5B %5B
\ %5C %5C
] %5D %5D
^ %5E %5E
_ %5F %5F
` 60% 60%
a 61% 61%
b 62% 62%
c 63% 63%
d 64% 64%
e 65% 65%
f 66% 66%
g 67% 67%
h 68% 68%
i 69% 69%
j %6A %6A
k %6B %6B
l %6C %6C
m %6D %6D
n %6E %6E
o %6F %6F
p 70% 70%
q 71% 71%
r 72% 72%
s 73% 73%
t 74% 74%
u 75% 75%
v 76% 76%
w 77% 77%
x 78% 78%
y 79% 79%
z %7A %7A
{ %7B %7B
| %7C %7C
} %7D %7D
~ %7E %7E
%7F %7F
` 80% %E2%82%AC
 81% 81%
82% %E2%80%9A
ƒ 83% %C6%92
84% %E2%80%9E
85% %E2%80%A6
86% %E2%80%A0
87% %E2%80%A1
ˆ 88% %CB%86
89% %E2%80%B0
Š %8A %C5%A0
%8B %E2%80%B9
Œ %8C %C5%92
 %8D %C5%8D
Ž %8E %C5%BD
 %8F %8F
 90% %C2%90
91% %E2%80%98
92% %E2%80%99
93% %E2%80%9C
94% %E2%80%9D
95% %E2%80%A2
96% %E2%80%93
97% %E2%80%94
˜ 98% %CB%9C
99% %E2%84
š %9A %C5%A1
%9B %E2%80
œ %9C %C5%93
 %9D %9D
ž %9E %C5%BE
Ÿ %9F %C5%B8
%A0 %C2%A0
¡ %A1 %C2%A1
¢ %A2 %C2%A2
£ %A3 %C2%A3
¤ %A4 %C2%A4
¥ %A5 %C2%A5
¦ %A6 %C2%A6
§ %A7 %C2%A7
¨ %A8 %C2%A8
© %A9 %C2%A9
ª %AA %C2%AA
« %AB %C2%AB
¬ %AC %C2%AC
%AD %C2%AD
® %AE %C2%AE
¯ %AF %C2%AF
° %B0 %C2%B0
± %B1 %C2%B1
² %B2 %C2%B2
³ %B3 %C2%B3
´ %B4 %C2%B4
µ %B5 %C2%B5
%B6 %C2%B6
· %B7 %C2%B7
¸ %B8 %C2%B8
¹ %B9 %C2%B9
º %BA %C2%BA
» %BB %C2%BB
¼ %BC %C2%BC
½ %BD %C2%BD
¾ %BE %C2%BE
¿ %BF %C2%BF
À %C0 %C3%80
Á %C1 %C3%81
 %C2 %C3%82
à %C3 %C3%83
Ä %C4 %C3%84
Å %C5 %C3%85
Æ %C6 %C3%86
Ç %C7 %C3%87
È %C8 %C3%88
É %C9 %C3%89
Ê %CA %C3%8A
Ë %CB %C3%8B
Ì %CC %C3%8C
Í %CD %C3%8D
Î %CE %C3%8E
Ï %CF %C3%8F
Ð %D0 %C3%90
Ñ %D1 %C3%91
Ò %D2 %C3%92
Ó %D3 %C3%93
Ô %D4 %C3%94
Õ %D5 %C3%95
Ö %D6 %C3%96
× %D7 %C3%97
Ø %D8 %C3%98
Ù %D9 %C3%99
Ú %DA %C3%9A
Û %DB %C3%9B
Ü %DC %C3%9C
Ý %DD %C3%9D
Þ %DE %C3%9E
ß %DF %C3%9F
à %E0 %C3%A0
á %E1 %C3%A1
â %E2 %C3%A2
ã %E3 %C3%A3
ä %E4 %C3%A4
å %E5 %C3%A5
æ %E6 %C3%A6
ç %E7 %C3%A7
è %E8 %C3%A8
é %E9 %C3%A9
ê %EA %C3%AA
ë %EB %C3%AB
ì %EC %C3%AC
í %ED %C3%AD
î %EE %C3%AE
ï %EF %C3%AF
ð %F0 %C3%B0
ñ %F1 %C3%B1
ò %F2 %C3%B2
ó %F3 %C3%B3
ô %F4 %C3%B4
õ %F5 %C3%B5
ö %F6 %C3%B6
÷ %F7 %C3%B7
ø %F8 %C3%B8
ù %F9 %C3%B9
ú %FA %C3%BA
û %FB %C3%BB
ü %FC %C3%BC
ý %FD %C3%BD
þ %FE %C3%BE
ÿ %FF %C3%BF



How to enable trace/tracing functionality in SAP HCI/HCP:

If you are getting the below issue, please follow the steps:

Error: Log level set for this IFLOW is not sufficient to enable trace.Set the log level to Debug from the SAP CPI.....

1. Go the the tenant URL
2. Click on operation  view/Overview then Manage integration content.
3. Select your Iflow from the list.
4.CLick on the Log configuration, from the select the log level: as debug from info.
5. Then restart the iflow and go to eclipse and start enabling the trace.


Now it will be working..



JSON to XML Conversion Root element problem:

While converting to JSON to XML conversion, sometimes the input payload will not have the Root element in the JSON.

FLow:  input ---> content modifier ---> JSON to XML converter ---> Output.

Add the Root element in the conent modifier in the body tab as below.

{
"Root":
${in.body}
}



HTTP PATCH method is not available in HCI as of now:

This interface is just REST API from Oracle system that HCI does not support PATCH method and how to resolve it.

IMG 002:

Data in JSON format:

IMG 003

Fields to be updated:

IMG 004

USE POST method:


IMG 005


Hope this solves your issue.



JSON Code for conversion of String to Integer/ Remove double quotes from JSON:

All input data will consider as the String after converting from the XML to JSON, as the output sends to database which supports only without double quoted for the integer. This can be achieved by the below code

IMG:001

Add the groovy script after the XML to JSON Converter then it would work.

import com.sap.gateway.ip.core.customdev.util.Message;
import groovy.json.*
def Message processData(Message message)
{
def body = message.getBody(java.lang.String) as String;
def jsonSlurper = new JsonSlurper();
def jsonDataObject = jsonSlurper.parseText(body);

//Convert the JSON String to Int
jsonDataObject.Contact.id = convertToInt(jsonDataObject.Contact.id);
jsonDataObject.assignedTo.account.id = convertToInt(jsonDataObject.assignedTo.account.id);
jsonDataObject.assignedTo.staff.id = convertToInt(jsonDataObject.assignedTo.staff.id);
jsonDataObject.c.apf = convertToBoolean(jsonDataObject.c.apf);

//Integer conversion  
message.setBody(new JsonBuilder(jsonDataObject).toPrettyString())
return message
}
   static Object convertToInt(Object inputValue){
        if(inputValue.isNumber()){
          return inputValue.toInteger();
        }else{
          return inputValue;
        }
   }}

//Boolean Conversion
static Object convertToBoolean(Object inputValue){
        if(inputValue.equals("true")){
          return true;
        }else{
          return false;
        }

Input: "id":"3261390"
Output: "id":3261390

Issue fix:
If there is no value for the fields then it could not handle that, throws the error eg: ” property id : line 20 it cannot convert null value”

Instead of

jsonDataObject.assignedTo.account.id = convertToInt(jsonDataObject.assignedTo.account.id);

Add the below code:

if(jsonDataObject.assignedTo!= null)
{if(jsonDataObject.assignedTo.account.id!=null)
{  jsonDataObject.assignedTo.account.id = convertToInt(jsonDataObject.assignedTo.account.id);}}