Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Jacky_Liu
Product and Topic Expert
Product and Topic Expert
How to handle etag if-match in CPI iflow?  I searched in blogs and found some blogs in this topic . Today I want demo in the most straight way . I will use the post physical inventory document item as the example.  To post the document item, I need to get the etag for the document item first . Then I use the etag value as If-Match in header of the posting operation . If we don't put If-Match in posting operation header, the resposne will end with error 428(Precondition Required) .

 

The following overview of the iflow:




The following is the screen shot of reading physical document item to get etag in header settings




The following is code of putting tag value as header value of If-Match


import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;


def Message processData(Message message) {

// //Body
// Reader reader = message.getBody(Reader);
// def A_PhysInventoryDocItem = new XmlSlurper().parse(reader) ;
// def stamp = A_PhysInventoryDocItem.A_PhysInventoryDocItemType.LastChangeDateTime;
// stamp = "W/\"datetimeoffset"+"'"+stamp+"'\"" ;
// stamp = stamp.replaceAll(":","%3A");

def headers = message.getHeaders();
def stamp = headers.get("etag");

message.setHeader("If-Match", stamp );
def body = message.getBody(java.lang.String);
message.setBody();
def messageLog = messageLogFactory.getMessageLog(message);
if (messageLog != null) {
messageLog.addAttachmentAsString('Iventory Document Item', body, 'application/json');
}

return message;
}

The following is screen shot of posting operation with allowing If-Match in header



The end!

Thank you for your time!

Best Regards!

Jacky Liu