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: 
0 Kudos
This Blog gives you a brief overiew of CPI/HCI EDI Integration

SAP has released HCI EDI integrations for enterprise license account holders only

The technical procedure of HCI edi integration is almost like a see-burger or B2B ADD ON using splitter to split the messages and converter to convert edi to xml and there after mapping conversion

 

Step1: Download available schema (xsd) ex:850 PO from portal to local NFS

 



 

 



 

Step 2:-  Import the schema's to i-flow

 



 

Step 3:- Use EDI Splitter to split Interchange document and EDI to XML converter to convert EDI data to xml and mapping conversion to convert EDI XMl to IDOC XML

 



 



 

IFLOW - this needs to be modified as per requirements



 

Give all the required parameters mentioned in below help documents and maintain control number ranges and other inputs then execute checks for errors, deploy and test

https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/584a3beb81454d40acb052ae371...

 

997:-

 

Select 997 required or not required



 

Select if 997 control number needs to be created newly or use it from request EDI message



 

Select if you want to exclude or include optional AK3 and AK4 segments



 

EDI Splitter Configuration



 

XML-EDI-Converter



EDI-XML-Converter



 

NRO Configuration:-

 



 

 



 

Script to read NRO

import com.sap.it.api.ITApiFactory;
import com.sap.it.api.nrc.NumberRangeConfigurationService;
import com.sap.it.api.nrc.exception. NumberRangeConfigException;
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {

def service = ITApiFactory.getApi(NumberRangeConfigurationService.class, null);
if( service != null)
{
def value = service.getNextValuefromNumberRange("NRO_NAME",null);
message.setHeader("NRO_NAME", value)
message.setProperty("Empty_String", '')
}
return message;
}

 

 

Control Segments

 

Set Control segments using run time values or constant



 

Example : Body of Control segments in Content modifier

 

<?xml version="1.0" encoding="UTF-8"?>
<n1:Interchange xsi:schemaLocation="urn:sap.com:typesystem:b2b:116:asc-x12:810:004010 ASC-X12_810_004010.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="urn:sap.com:typesystem:b2b:116:asc-x12:810:004010">
<S_ISA>
<D_I01>${property.AuthorizationInformationQualifier}</D_I01>
<D_I02>${property.AuthorizationInformation}</D_I02>
<D_I03>${property.SecurityInformationQualifier}</D_I03>
<D_I04>${property.SecurityInformation}</D_I04>
<D_I05_1>${property.InterchangeIDQualifier_Sender}</D_I05_1>
<D_I06>${property.InterchangeSenderID}</D_I06>
<D_I05_2>${property.InterchangeIDQualifier_Receiver}</D_I05_2>
<D_I07>${property.InterchangeReceiverID}</D_I07>
<D_I08>${property.InterchangeDate}</D_I08>
<D_I09>${property.InterchangeTime}</D_I09>
<D_I10>U</D_I10>
<D_I11>${property.InterchangeControlVersionNumber}</D_I11>
<D_I12>${property.InterchangeControlNumber}</D_I12>
<D_I13>${property.AcknowledgmentRequested}</D_I13>
<D_I14>${property.UsageIndicator}</D_I14>
<D_I15>${property.ComponentElementSeparator}</D_I15>
</S_ISA>
<FunctionalGroup>
<S_GS>
<D_479>${property.FunctionalIdentifierCode}</D_479>
<D_142>${property.ApplicationSendersCode}</D_142>
<D_124>${property.ApplicationReceiversCode}</D_124>
<D_373>${property.Date}</D_373>
<D_337>${property.Time}</D_337>
<D_28>${property.GroupControlNumber}</D_28>
<D_455>${property.ResponsibleAgencyCode}</D_455>
<D_480>${property.VersionReleaseIndustryIdentifierCode}</D_480>
</S_GS>
${header.ExtractedMessage}------------------> Note this is set in content modifier to capture incomming payload
<S_GE>
<D_97>${property.NumberofTransactionSetsIncluded}</D_97>
<D_28>${property.GroupControlNumber}</D_28>
</S_GE>
</FunctionalGroup>
<S_IEA>
<D_I16>${property.NumberofIncludedFunctionalGroups}</D_I16>
<D_I12>${property.InterchangeControlNumber}</D_I12>
</S_IEA>
</n1:Interchange>

 

 

Set Content modifier body by reading values using property



Example : Schema and Mapping

 



 



 

 

Additional Info

If you are importing map from PI/PO by default UDF will work at run time, you don't have to make any changes to UDF to convert to groovy or java script, however you will not be able to see the UDF code as you will get warning as shown below... here "shiftnegativevalue" is UDF imported from PI Map which works same as PI in runtime

 

 

 



 

 
2 Comments
Labels in this area