EDI to IDOC using xslt logic
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<M_830>
<S_ST>
<D_143>830</D_143>
<D_329>018135846</D_329>
</S_ST>
<S_BFR>
<D_353>05</D_353>
<D_328>216</D_328>
<D_675>SH</D_675>
<D_676>A</D_676>
<D_373>230424</D_373>
<D_373_2>240101</D_373_2>
<D_373_3>230424</D_373_3>
</S_BFR>
<G_N1>
<S_N1>
<D_98>MI</D_98>
<D_93>ADCOM</D_93>
<D_66>92</D_66>
<D_67>C100</D_67>
</S_N1>
</G_N1>
<G_N1>
<S_N1>
<D_98>SU</D_98>
<D_93>W. L. GORE & ASSOCIATES, INC.</D_93>
<D_66>92</D_66>
<D_67>152405</D_67>
</S_N1>
</G_N1>
<G_N1>
<S_N1>
<D_98>SF</D_98>
<D_93>W. L. GORE & ASSOCIATES, INC.</D_93>
<D_66>92</D_66>
<D_67>152405</D_67>
</S_N1>
</G_N1>
<G_N1>
<S_N1>
<D_98>ST</D_98>
<D_93>ADCOM</D_93>
<D_66>92</D_66>
<D_67>C100</D_67>
</S_N1>
</G_N1>
<G_LIN>
<S_LIN>
<D_235>BP</D_235>
<D_234>02-64-20003</D_234>
<D_235_2>PO</D_235_2>
<D_234_2>5500001149</D_234_2>
</S_LIN>
<S_UIT>
<C_C001>
<D_355>EA</D_355>
</C_C001>
</S_UIT>
<S_PER>
<D_366>EX</D_366>
<D_93>DO NOT USE</D_93>
<D_365>TE</D_365>
<D_364>+12893041098</D_364>
</S_PER>
<S_ATH>
<D_672>PQ</D_672>
<D_373>230424</D_373>
<D_380>336000</D_380>
<D_373_2>221231</D_373_2>
</S_ATH>
<S_ATH>
<D_672>FI</D_672>
<D_380>432000</D_380>
<D_373_2>221231</D_373_2>
</S_ATH>
<S_ATH>
<D_672>MT</D_672>
<D_380>432000</D_380>
<D_373_2>221231</D_373_2>
</S_ATH>
<G_SDP>
<S_SDP>
<D_678>N</D_678>
<D_679>F</D_679>
</S_SDP>
<S_FST>
<D_380>96000</D_380>
<D_680>C</D_680>
<D_681>D</D_681>
<D_373>230424</D_373>
</S_FST>
<S_FST>
<D_380>48000</D_380>
<D_680>D</D_680>
<D_681>M</D_681>
<D_373>230925</D_373>
</S_FST>
<S_FST>
<D_380>48000</D_380>
<D_680>D</D_680>
<D_681>M</D_681>
<D_373>231030</D_373>
</S_FST>
<S_FST>
<D_380>24000</D_380>
<D_680>D</D_680>
<D_681>M</D_681>
<D_373>231127</D_373>
</S_FST>
<S_FST>
<D_380>0</D_380>
<D_680>D</D_680>
<D_681>M</D_681>
<D_373>240101</D_373>
</S_FST>
</G_SDP>
<G_SHP>
<S_SHP>
<D_673>01</D_673>
<D_380>24000</D_380>
<D_374>050</D_374>
<D_373>230420</D_373>
</S_SHP>
<S_REF>
<D_128>SI</D_128>
<D_127>35622490</D_127>
</S_REF>
</G_SHP>
<G_SHP>
<S_SHP>
<D_673>02</D_673>
<D_380>336000</D_380>
<D_374>051</D_374>
<D_373>221231</D_373>
<D_373_2>230420</D_373_2>
</S_SHP>
</G_SHP>
</G_LIN>
<S_CTT>
<D_354>1</D_354>
<D_347>216000</D_347>
</S_CTT>
<S_SE>
<D_96>23</D_96>
<D_329>018135846</D_329>
</S_SE>
</M_830>
</ns0:Message1>
</ns0:Messages>
------------------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge" xmlns:hci="http://sap.com/it/" exclude-result-prefixes="hci">
<xsl:output indent="yes"/>
<xsl:param name="Client"/>
<xsl:param name="SAP_ISA_Usage_Indicator"/>
<xsl:param name="SenderPort"/>
<xsl:param name="SenderPartnerType"/>
<xsl:param name="SenderPartner"/>
<xsl:param name="LogicalSystem"/>
<xsl:template match="/">
<SYSTAT01>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<MANDT><xsl:value-of select="$Client"/></MANDT>
<DIRECT>2</DIRECT>
<TEST>
<xsl:choose>
<xsl:when test="$SAP_ISA_Usage_Indicator = 'T'">X</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</TEST>
<IDOCTYP>SYSTAT01</IDOCTYP>
<MESTYP>STATUS</MESTYP>
<SNDPOR><xsl:value-of select="$SenderPort"/></SNDPOR>
<SNDPRT><xsl:value-of select="$SenderPartnerType"/></SNDPRT>
<SNDPRN><xsl:value-of select="$SenderPartner"/></SNDPRN>
<RCVPRT>LS</RCVPRT>
<RCVPRN><xsl:value-of select="$LogicalSystem"/></RCVPRN>
</EDI_DC40>
<xsl:choose>
<xsl:when test="exists(*/ns0:Message1/M_830)">
<xsl:for-each select="*/ns0:Message1/M_830">
<xsl:variable name="position" select="number(S_ST/D_143)"/>
<E1STATS SEGMENT="1">
<TABNAM>EDI_DS</TABNAM>
<TABNAM1><xsl:value-of select="$position"/></TABNAM1>
<!-- <DOCNUM><xsl:value-of select="../ns0:Message2/Interchange/DOCNUM[$position]"/></DOCNUM>
<STATUS>
<xsl:choose>
<xsl:when test="S_AK5/D_717 = 'A'">16</xsl:when>
<xsl:otherwise>17</xsl:otherwise>
</xsl:choose>
</STATUS>
<REFINT><xsl:value-of select="../S_AK1/D_28"/></REFINT>
<REFGRP><xsl:value-of select="../S_AK1/D_28"/></REFGRP>
<REFMES><xsl:value-of select="S_AK2/D_329"/></REFMES>-->
</E1STATS>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<!--
<xsl:for-each select="*/ns0:Message2/Interchange/DOCNUM">
<E1STATS SEGMENT="1">
<TABNAM>EDI_DS</TABNAM>
<DOCNUM><xsl:value-of select="."/></DOCNUM>
<STATUS>
<xsl:choose>
<xsl:when test="../ns0:Message1/*/*/S_AK9/D_715 = 'A'">16</xsl:when>
<xsl:otherwise>17</xsl:otherwise>
</xsl:choose>
</STATUS>
<REFINT><xsl:value-of select="../ns0:Message1/*/*/S_AK1/D_28"/></REFINT>
<REFGRP><xsl:value-of select="../ns0:Message1/*/*/S_AK1/D_28"/></REFGRP>
<REFMES><xsl:value-of select="format-number(position(), '000000000')"/></REFMES>
</E1STATS>
</xsl:for-each>
-->
</xsl:otherwise>
</xsl:choose>
</IDOC>
</SYSTAT01>
</xsl:template>
</xsl:stylesheet>
------------------------
referecce
https://blogs.sap.com/2022/05/22/sap-edi-idoc-communication-in-cpi-using-bundling-and-fewer-mapping-artifacts-part-ii/