Skip to Content
Author's profile photo Sudheer Anugu

Few Cents SAP CPI/HCI EDI Iflow with 997

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/584a3beb81454d40acb052ae371c7063.html

 

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

 

 

 

 

 

Assigned Tags

      2 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Sathish kumar Ramasamy
      Sathish kumar Ramasamy

      Hello Sudheer,

       

      Download option will be available for both Artifacts & Documents only if the package mode is "Editable" if the package mode is "Configure-only", then download option won't be available for both Artifacts and Documents.

      Thanks,

      Sathish

      Author's profile photo Sudheer Anugu
      Sudheer Anugu
      Blog Post Author

      Hi Satish,

       

      Very true, however ANSI X12 is configure only and EDIFACT is editable, so I explained it in generic way