Connection with SAP via scripted REST API

Anamika Thakur
Tera Contributor

Hi,

 

I have a requirement to create RITM when details are received from SAP and send the details back to SAP once the request is created and when the roles are provided in SAP, request should be updated with details. Need to implement the integration using scripted REST API.

Any help is greatly appreciated!

 

Thanks in advance

Anamika

2 REPLIES 2

Ankur Bawiskar
Tera Patron
Tera Patron

@Anamika Thakur 

you can create scripted REST API and ask SAP team to consume and send details

Then use Cart API to Submit and it will create REQ and RITM and then send back RITM/REQ number to them

check this link

Scripted rest api 

Example: they would send information/variable data as json request corresponding to the variables you share with them. This will be only for single catalog item I consider

Example: if your catalog item has 4 variables as requested_for, requested_by, start_date, end_date

you can inform them to send data as below; so the json request would look like

{

"requested_for":"Abel Tuter",

"requested_by":"Fred Luddy",

"start_date":"2020-04-23",

"end_date":"2020-04-35"

}

Now example script in scripted rest API to create RITM for your catalog item with the above variable data

(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

var reqbody = request.body.dataString;

try{
var parser = new global.JSON();
var parsedData = parser.decode(reqbody);

var requestedFor = parsedData.requested_for;
var requestedBy = parsedData.requested_by;
var startDate = parsedData.start_date;
var endDate = parsedData.end_date;

var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId);

// give here the sys_id of the catalog item under which those variables are present

var item = cart.addItem('4054428fdb151f0097679ec6db9619c0', 1);

//fill in the variables on the request item form
cart.setVariable(item,"requested_for", requestedFor);
cart.setVariable(item,"requested_by", requestedBy);
cart.setVariable(item,"start_date", startDate);
cart.setVariable(item,"end_date", endDate);

var rc = cart.placeOrder();

// rc is the request number; you can query RITM table and get the RITM number

var reqNumber = rc.number;

var ritm = new GlideRecord('sc_req_item');
ritm.get('request.number', reqNumber);
var ritmNumber = ritm.number;

var res = {};
res["status"] = "Success";
res["requestNumber"] = reqNumber;
res["requestItemNumber"] = ritmNumber;
response.setBody(JSON.stringify(res));

}
catch(ex){
var res = {};
res["status"] = "Error";
res["message"] = ex.message;
response.setBody(JSON.stringify(res));
}

})(request, response);

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Anamika Thakur 

Hope you are doing good.

Did my reply answer your question?

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader