Filter Idoc segment based on date in XSLT map

Hi,
In a Idoc to flat file XSLT mapping, I have a requirment to filter segment out of multiple segment occurance in HRMD_A idoc. Idoc has two date fields(actually string data, containing date in YYYYMMDD format) in the segment(end date and start date). I need to filter only one segment from multiple segments where current date falles within start and end dates (end date >= current date >= start date). Then map output fields from the filtered segment.
Its easy doing it in graphical mapping, but its difficult to use graphical mapping here as the message structure are enormous. I dont have much hands on in XSLT but think many of you have been through this kind of requirement using XSLT. So holding my hope high :). Please suggest a logic for this, will be highly appretiated.
Regards
Suman.

This functions will give you the current date:
fn:current-dateTime()     => Returns the current dateTime (with timezone)
fn:current-date()                 => Returns the current date (with timezone)
fn:current-time()                 => Returns the current time (with timezone)
To compare:
fn:compare(comp1,comp2)
fn:compare(comp1,comp2,collation)
=> Returns -1 if comp1 is less than comp2, 0 if comp1 is equal to comp2, or 1 if comp1 is greater than comp2 (according to the rules of the collation that is used)
Example: compare('ghi', 'ghi')
Result: 0
Also I suggest working with an IF condition like this:
<xsl:if test="price &gt; 10">
        <tr>
          <td><xsl:value-of select="title"/></td>
          <td><xsl:value-of select="artist"/></td>
        </tr>
      </xsl:if>
Edited by: Kai Lerch-Baier on Apr 14, 2009 10:21 AM

Similar Messages

  • How we can view convert data after XSLT mapping & before Graphical mapp

    Hello Friends,
    Currently i am working on XI standard content. In this client need some customization.
    In interface mapping, XSLT mapping on 1st position & Graphical mapping on 2nd position.
    As per my understanding 1st XSLT mapping will be exected then Graphical mapping.
    Can I see or check convert data from XSLT mapping.
    I want to check data between XSLT mapping & Graphical mapping.
    Kindly help me out.
    Regards,
    Narendra

    >
    Narendra GSTIT wrote:
    > I dont want to test standalone XSL Code.
    >
    > The data which I get from Source interface and after XSLT mapping I want to check this that my XSLT code is going well or not.
    >
    > i.e. check for proper input & get proper output.
    You have ro do standalone testing of the XSLT mapping.....Interface Mapping or Interface Determination will give you output message which will be that of message mapping (the last mapping)
    What is the issue in testing the XSLT mapping alone?...may be in Stylus Studio.
    Just ensure that XSLT mapping produces proper output and then this output message of XSLT is the input to your Message Mapping.....once the entire Interface mapping gets executed then it would mean that all the included mapping programs work fine.
    Regards,
    Abhishek.

  • Current date in xslt mapping

    Hi,
    I've tried to get the current date in my xslt mapping.
    I've used the following xslt coding:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date">
    <xsl:template match="/">
    <xsl:variable name="now" select="current-date()"/>
    </xsl:template>
    </xsl:stylesheet>
    In stylus studio everything is OK and i retrieve the current date.
    When i import the xslt in the mapping tool and test the mapping i get the following error:
    javax.xml.transform.TransformerException: com.sap.engine.lib.xml.util.NestedException: Function with name 'current-date' not found in context library. at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:251)
    While directly using the current date functionality within the message mapping everything is OK too.
    Does anyone know which date-functionality is used within the message mapping within the Integration Builder and/or wich mapping to be used in xslt for a working scenario?
    Thnx in advance!

    Ok thnx, these anwers where very helpfull for me to solve this problem.
    I've awarded points for all your answers.
    For anyone interested later on, I needed the date in my XSLT mapping in the following format ddMMMyy.
    Finnally I used the following xslt to achieve this:
         <xsl:template name="currentDate" xmlns:cal="java:java.util.GregorianCalendar">
              <xsl:variable name="now" select="cal:getInstance()" />
              <xsl:variable name="day" select="cal:get($now, 5)" />
              <xsl:variable name="month" select="cal:get($now, 2) + 1" />
              <xsl:variable name="year" select="substring(string(cal:get($now, 1)), 3, 2)" />
              <xsl:variable name="month">
                   <xsl:choose>
                        <xsl:when test="$month=1">Jan</xsl:when>
                        <xsl:when test="$month=2">Feb</xsl:when>
                        <xsl:when test="$month=3">Mar</xsl:when>
                        <xsl:when test="$month=4">Apr</xsl:when>
                        <xsl:when test="$month=5">May</xsl:when>
                        <xsl:when test="$month=6">Jun</xsl:when>
                        <xsl:when test="$month=7">Jul</xsl:when>
                        <xsl:when test="$month=8">Aug</xsl:when>
                        <xsl:when test="$month=9">Sep</xsl:when>
                        <xsl:when test="$month=10">Oct</xsl:when>
                        <xsl:when test="$month=11">Nov</xsl:when>
                        <xsl:when test="$month=12">Dec</xsl:when>
                        <xsl:otherwise>INVALID MONTH</xsl:otherwise>
                   </xsl:choose>
              </xsl:variable>
              <xsl:choose>
                   <xsl:when test="$day &lt; 10">
                        <xsl:value-of select="concat(concat(concat('0',$day), $month), $year)"/>
                   </xsl:when>
                   <xsl:otherwise>
                        <xsl:value-of select="concat(concat($day, $month), $year)"/>
                   </xsl:otherwise>
              </xsl:choose>
         </xsl:template>

  • How to Compare date with Current system date in XSLT mapping.

    Hello Experts
    In a XSLT mapping program, I hava a filed, ZZOB which is giving some date.
    which I need to compare with the current date.
    Condition-
    ZZOB is greater than current date or ZZOBLIG = NULL
    Then go further statements.
    how can i campare with the current date?
    Please help.
    Thanks
    Balaprasad

    This example may help:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:param name="currentDate"/>
        <xsl:variable name="firstDate" select="concat(substring($currentDate, 1,4),substring($currentDate, 6,2),substring($currentDate, 9,2))"/>
        <xsl:template match="/">
            <xsl:apply-templates select="//item"/>
        </xsl:template>
        <xsl:template match="item">
            <xsl:variable name="secondDate" select="concat(substring(submissionDeadline, 1,4),substring(submissionDeadline, 6,2),substring(submissionDeadline, 9,2))"/>
            <xsl:choose>
            <xsl:when test="$firstDate &gt; $secondDate">
                <xsl:call-template name="late"/>
                </xsl:when>
                <xsl:when test="$firstDate &lt; $secondDate">
                    <xsl:call-template name="ontime"/>
                </xsl:when>
                <xsl:when test="$firstDate = $secondDate">
                    <xsl:call-template name="same"/>
                </xsl:when>
                <xsl:otherwise>Monkeys<br /></xsl:otherwise>
            </xsl:choose>
        </xsl:template>
        <xsl:template name="ontime">
            This is on time
        </xsl:template>
        <xsl:template name="late">
            This is late
        </xsl:template>
        <xsl:template name="same">
            This is on time
        </xsl:template>
    </xsl:stylesheet>

  • Error in Current Date in XSLT Mapping

    Hi Experts,
      I am having a problem in Dispaying the current Date and Time ( or System Date and Time ) .As per my Project Requirements I need do XSLT mapping
    My XSLT Mapping Looks like
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://XYZ.eu.ABC.com">
    <xsl:template match="/">
    <a:A2A>
        <a:PNo>
             <xsl:value-of select="Path/Path/PNO"/>
       </a:PNo>
       <a:Rev>
             <xsl:value-of select="Path/Path/REVISION"/>
       </a:Rev>
       <a:Current Date>
             <xsl:value-of select= ""/>
       </a:Current Date>
       <a:Current Time>
             <xsl:value-of select= ""/>
       </a:Current Time>
    </xsl:template>
    </xsl:stylesheet>
    Can any one please let me is there is any function to  dispaly the Current Date and time.

    Hi ..
    I just tried executing both the maps.. Both of them excutes well in both XMLSpy and Stylus Studio .. But having below problems in Executing in PI
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
    <xsl:template match="/aaa">
    <xxx>
    <xsl:value-of select="current-dateTime()"/>
    </xxx>
    </xsl:template>
    </xsl:stylesheet>
    Then I got the error
    javax.xml.transform.TransformerException: com.sap.engine.lib.xml.util.NestedException: Function with name 'current-dateTime' not found in context library.
    with
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:datetime="http://exslt.org/dates-and-times"
    exclude-result-prefixes="datetime">
    <xsl:template match="/">
    <currtime>
    <xsl:value-of select="datetime:dateTime()" />
    </currtime>
    </xsl:template>
    </xsl:stylesheet>
    I have got
    Unable to find resource http://exslt/org/dates-and-times.class (http://NAMESPACE Name) in the following software component versions: 0fe18820-410a-11dd-979b-dc8591374305

  • IDOC TO HTML FILE SCENARIO WITH XSLT MAPPING

    Hi ,
                 I am doing idoc to html file using xslt mapping can anyone provide me some help(material or example ) please reply soon.
    Thanks & Regards,
    Vinay Yadav

    Hi ,
    For xslt mapping the place to start is
    http://www.w3schools.com/.
    in help.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/83/2200cb50d345c793336d9a1683163e/frameset.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/a4/64b93d0d4e6b3be10000000a114084/frameset.htm
    There are some blogs here which can proove to be good.
    /people/pooja.pandey/blog/2005/06/27/xslt-mapping-with-java-enhancement-for-beginners
    /people/pooja.pandey/blog/2005/06/27/xslt-mapping-with-java-enhancement-for-beginners
    https://weblogs.sdn.sap.com/pub/wlg/3823 [original link is broken] [original link is broken] [original link is broken] [original link is broken]
    Regards ,
    Deepak
    /people/anish.abraham2/blog/2005/12/22/file-to-multiple-idocs-xslt-mapping

  • Filter IDoc segments

    Hi,
    in a HRMD_A IDoc I want to transfer segment E1P1001 only if field RSIGN equals 'A'.
    What are the steps to configure this scenario?
    Please describe the steps instead of sending me links (as I know them already).
    Thanks and regards
    Patrick

    hi Patrick,
    you can do this with the ALE distribution model Filter.
    1. Go to BD64
    2. edit mode
    3. choose your model
    4. choose your IDoc
    5. apply filter
    6. if your filter of field RSIGN is not available go to BD95 and BD59 to apply it first.
    7. enter "A" as filtervalue.
    Save and go for it.
    IF there is an IDoc with Value RSIGN = A then the segment is existing, if not ... the segment will be deleted.

  • Delete Outbound Idoc Segment based on target system

    Hello Folks,
    Problem:
    I have extended the sub structure of an idoc for IT0002 with custom field,
    E1P0002
         Q1P0002
              Z1P0002
    Where Z1P0002 has custom fields.
    When the destination system is 'ABCD' - system should allow the idoc
    else
    When destination is other than 'ABCD' - Z1P0002 segment should be deleted and idoc should be sent.
    How can this be achieved, any sample code.

    Use user-exits .
    if edidc-RCVPRN eq 'ABCD'
    process data .
    else
    call FM segment_delete ( use ur parameters )
    endif.
    Edited by: anil sasidharan on Feb 18, 2009 12:40 PM
    Edited by: anil sasidharan on Feb 18, 2009 12:46 PM
    Edited by: anil sasidharan on Feb 18, 2009 12:48 PM

  • Delete Outbound Idoc Segment based on taget system

    Hello Folks,
    Problem:
    I have extended the sub structure of an idoc for IT0002 with custom field,
    E1P0002
         Q1P0002
              Z1P0002
    Where Z1P0002 has custom fields.
    When the destination system is 'ABCD' - system should allow the idoc
    else
    When destination is other than 'ABCD' - Z1P0002 segment should be deleted and idoc should be sent.
    How can this be achieved, any sample code.

    Hi,
        Make use of Segment level filtering in distribution medel (BD64).
    Thanks,
    Asit Purbey

  • How can I filter a column based on data in another list.

    I have two lists:
    List A:
    Business Unit | BU Services
    BU1 | Service 1
    BU1 | Service 2
    BU1 | Service 3
    BU2 | Service 4
    BU2 | Service 5
    BU3 | Service 6
    BU3 | Service 7
    List B:
    Sales Rep | Business Unit | Service
    Jonny Cash | BU3 | Service 7
    Kitty Wells | BU3 | Service 6
    Willie Nelson | BU2 | Service 5
    etc
    List A is a reference list. I.e. it associates services with a business unit.
    List B is a record of activities. It records what each sales rep sold. Sales reps can sell services from any business unit.
    Using a drop down list to select the business unit, the service column should only display services that are related to a business unit. I.e. If BU3 is selected, then only Service 6 and Service 7 should be available.
    How can this be achieved in SharePoint? It looks like something that it could easily do, however I can't get a lookup to work across lists, and I'm not sure a calculated column will do the job either.
    Any ideas?

    Hi Cameron,
    The first list (or table) is used for associations. I'm associating services with a business unit. This would work the same way with an example I found, regarding countries and states:
    i.e.
    Country | State
    USA | Nebraska
    USA | New York
    Canada | Alberta
    Canada | Manitoba
    Russia | Crimea
    Russia | Chechnya
    Australia | New South Wales
    etc
    Then in the second list or table I could specific team members and their location:
    Team Member | Country | State
    Russell Crow | Australia | New South Wales
    Clive Owen | USA | New York
    In the 2nd table, I would select the country from a drop down (or by type ahead), and then the state column would restrict choices to states for the particular country as define in the first list, i.e. USA would show states like: Nebraska and New York, but
    not Alberta or New South Wales because they belong to other countries.
    I have a feeling that SharePoint can't do this, despite having the basic foundation for it. I'm not a MS developer, I'm a business user trying to put a basic app together for my boss.

  • IDOC Segment not getitng populated during message mapping

    Hi,
    In my scenario when i am testing, I send IDOC to XI and getting following message
    <Trace level="1" type="T">com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:I805_Abstr_CustOutlet_MT/Records/AMA_E1KNA1M_STATUS.
    When I checked th IDOC xsd, it doesn't show the segment  which mapped to above status field.
    Can anyone of you please let me know what it is and how it can be resolved.
    Regards
    Edited by: ria sen on Jun 30, 2008 5:15 AM

    Hi Amit,
    Following is the payload from SXMB_MONI
    <?xml version="1.0" encoding="UTF-8" ?>
    - <_-AMA_-DEBMAS06E11>
    - <IDOC BEGIN="1">
    - <EDI_DC40 SEGMENT="1">
      <TABNAM>EDI_DC40</TABNAM>
      <MANDT>110</MANDT>
      <DOCNUM>0000000000415387</DOCNUM>
      <DOCREL>700</DOCREL>
      <STATUS>30</STATUS>
      <DIRECT>1</DIRECT>
      <OUTMOD>2</OUTMOD>
      <IDOCTYP>DEBMAS06</IDOCTYP>
      <CIMTYP>/AMA/DEBMAS06E11</CIMTYP>
      <MESTYP>/AMA/DEBMAS</MESTYP>
      <STDMES>/AMA/D</STDMES>
      <SNDPOR>SAPDAR</SNDPOR>
      <SNDPRT>LS</SNDPRT>
      <SNDPRN>DARCLNT110</SNDPRN>
      <RCVPOR>DAX_001</RCVPOR>
      <RCVPRT>LS</RCVPRT>
      <RCVPRN>CCABASIS</RCVPRN>
      <CREDAT>20080630</CREDAT>
      <CRETIM>133535</CRETIM>
      <SERIAL>20080627162157</SERIAL>
      </EDI_DC40>
    - <E1KNA1M SEGMENT="1">
      <MSGFN>018</MSGFN>
      <KUNNR>0001231235</KUNNR>
      <BBBNR>0000000</BBBNR>
      <BBSNR>00000</BBSNR>
      <BUBKZ>0</BUBKZ>
      <KTOKD>S</KTOKD>
      <KUKLA>S</KUKLA>
      <LAND1>AU</LAND1>
      <NAME1>Drew Smith again</NAME1>
      <ORT01>Ashfield</ORT01>
      <PSTLZ>2193</PSTLZ>
      <REGIO>NSW</REGIO>
      <SORTL>DREW</SORTL>
      <SPRAS>E</SPRAS>
      <STRAS>29 Hardy Street</STRAS>
      <UMJAH>0000</UMJAH>
      <JMZAH>000000</JMZAH>
      <JMJAH>0000</JMJAH>
      <UMSA1>0</UMSA1>
      <HZUOR>00</HZUOR>
      <SPRAS_ISO>EN</SPRAS_ISO>
    - <_-AMA_-E1KNA1M SEGMENT="1">
      <_-AMA_-REF_KUNNR>200</_-AMA_-REF_KUNNR>
      </_-AMA_-E1KNA1M>
    - <_-SCL_-E1ADRMAS SEGMENT="1">
      <QUALF>ADRMAS02</QUALF>
      <OBJ_TYPE>KNA1</OBJ_TYPE>
      <OBJ_ID>0001231235</OBJ_ID>
      <CONTEXT>0001</CONTEXT>
      <IV_CHECK_ADDRESS>X</IV_CHECK_ADDRESS>
      <IV_TIME_DEPENDENT_COMM_DATA>X</IV_TIME_DEPENDENT_COMM_DATA>
    - <_-SCL_-E1BPAD1VL SEGMENT="1">
      <FROM_DATE>00010101</FROM_DATE>
      <TO_DATE>99991231</TO_DATE>
      <NAME>Drew Smith again</NAME>
      <CITY>Ashfield</CITY>
      <POSTL_COD1>2193</POSTL_COD1>
      <STREET>29 Hardy Street</STREET>
      <COUNTRY>AU</COUNTRY>
      <COUNTRYISO>AU</COUNTRYISO>
      <LANGU>E</LANGU>
      <LANGU_ISO>EN</LANGU_ISO>
      <REGION>NSW</REGION>
      <SORT1>DREW</SORT1>
      <TIME_ZONE>AUSNSW</TIME_ZONE>
    - <_-SCL_-E1BPAD1VL1 SEGMENT="1">
      <LANGU_CR>E</LANGU_CR>
      <LANGUCRISO>EN</LANGUCRISO>
      <ADDR_GROUP>BP</ADDR_GROUP>
      <COUNTRY>AU</COUNTRY>
      <COUNTRYISO>AU</COUNTRYISO>
      <REGION>NSW</REGION>
      <TIME_ZONE>AUSNSW</TIME_ZONE>
      </_-SCL_-E1BPAD1VL1>
      </_-SCL_-E1BPAD1VL>
      </_-SCL_-E1ADRMAS>
      <_-SCL_-DSD_FIELDS SEGMENT="1" />
      <_-SCL_-E1KNA1M SEGMENT="1" />
      <E1KNA11 SEGMENT="1" />
    - <E1KNVVM SEGMENT="1">
      <MSGFN>018</MSGFN>
      <VKORG>AU01</VKORG>
      <VTWEG>Z2</VTWEG>
      <SPART>Z0</SPART>
      <KALKS>1</KALKS>
      <BZIRK>AU4</BZIRK>
      <PLTYP>02</PLTYP>
      <AWAHR>100</AWAHR>
      <ANTLF>9</ANTLF>
      <LPRIO>00</LPRIO>
      <PERFK>AU</PERFK>
      <PERRL>AU</PERRL>
      <WAERS>AUD</WAERS>
      <KTGRD>01</KTGRD>
      <ZTERM>Z060</ZTERM>
      <VWERK>1005</VWERK>
      <VKBUR>A4TT</VKBUR>
      <BOKRE>X</BOKRE>
      <UEBTO>0.0</UEBTO>
      <UNTTO>0.0</UNTTO>
      <PODTG>0</PODTG>
    - <_-SCL_-E1KNVVM SEGMENT="1">
      <_-SCL_-CU_KZREG>000000</_-SCL_-CU_KZREG>
      <_-SCL_-CU_KZPLP>000000</_-SCL_-CU_KZPLP>
      <_-SCL_-CU_FBDWE>0000</_-SCL_-CU_FBDWE>
      <_-SCL_-CU_VBDG1>0000</_-SCL_-CU_VBDG1>
      <_-SCL_-CU_VBDG2>0000</_-SCL_-CU_VBDG2>
      <_-SCL_-CU_VBDG3>0000</_-SCL_-CU_VBDG3>
      <_-SCL_-CU_FEDWE>0000</_-SCL_-CU_FEDWE>
      <_-SCL_-CU_VEDG1>0000</_-SCL_-CU_VEDG1>
      <_-SCL_-CU_VEDG2>0000</_-SCL_-CU_VEDG2>
      <_-SCL_-CU_VEDG3>0000</_-SCL_-CU_VEDG3>
      <_-SCL_-CU_MTPST>0000000000</_-SCL_-CU_MTPST>
      <_-SCL_-CU_MXHUB>0000000000</_-SCL_-CU_MXHUB>
      <_-SCL_-CU_SORTR>0</_-SCL_-CU_SORTR>
      <_-SCL_-PO_ZFHMG>0.000</_-SCL_-PO_ZFHMG>
      <_-SCL_-PO_MXSTH>0</_-SCL_-PO_MXSTH>
      <_-SCL_-PO_TWPLUS>000000</_-SCL_-PO_TWPLUS>
      <_-SCL_-GC_LONGITUD>0.000000000000</_-SCL_-GC_LONGITUD>
      <_-SCL_-GC_LATITUDE>0.000000000000</_-SCL_-GC_LATITUDE>
      <_-SCL_-GC_REFID>0000000000</_-SCL_-GC_REFID>
      </_-SCL_-E1KNVVM>
    - <E1KNVPM SEGMENT="1">
      <MSGFN>009</MSGFN>
      <PARVW>YM</PARVW>
      <KUNN2>0001231235</KUNN2>
      <KNREF>00000038</KNREF>
      <PARZA>0</PARZA>
      </E1KNVPM>
    - <E1KNVPM SEGMENT="1">
      <MSGFN>009</MSGFN>
      <PARVW>RE</PARVW>
      <KUNN2>0001231235</KUNN2>
      <PARZA>0</PARZA>
      </E1KNVPM>
    - <E1KNVPM SEGMENT="1">
      <MSGFN>009</MSGFN>
      <PARVW>RG</PARVW>
      <KUNN2>0001231235</KUNN2>
      <PARZA>0</PARZA>
      </E1KNVPM>
    - <E1KNVPM SEGMENT="1">
      <MSGFN>009</MSGFN>
      <PARVW>WE</PARVW>
      <KUNN2>0001231235</KUNN2>
      <PARZA>0</PARZA>
      </E1KNVPM>
      </E1KNVVM>
      </E1KNA1M>
      </IDOC>
      </_-AMA_-DEBMAS06E11>

  • IDoc number based upon sales data.

    Hi Experts,
    How to get the IDoc number in case I have sales document number or any other data which is being send in IDoc, any way we can get the IDoc number?
    Also help me know the program to process the IDocs in background, I know the t.code bd87 is used to process the idocs, but how to process in background via a batch job.
    thanx
    Garima

    Hi,
    You may use t.code we09 to get the Idoc number based upon data,
    you need to provide the information like Idoc basic type, date range etc to filter the data,
    and under "Creteria for search in data records",  provide the segment name, search in field and value against you are looking for a Idoc number.
    Use following programs to process the IDocs in background:-
    RSEOUT00 u2013 Process all selected IDocs (EDI) 
    RBDAPP01 u2013 Inbound Processing of IDocs Ready for Transfer
    Some use full t.code for IDoc processing:-
    WE60 u2013 IDoc documentation 
    BD87 u2013 Inbound IDoc reprocessing 
    BD88 u2013 Outbound IDoc reprocessing 
    BDM2 u2013 IDoc Trace 
    WE19- Testing IDoc.
    regards
    Vivek.

  • Idoc Segment Filtering error.

    Hi,
    I have a scenario of IDOC to IDOC Scenario, in which i have to filter some segments based on the field value.
    Ex: DESADV09 is my input and output IDOC
    Having segment as below:
    Segment -
    E1EDK08
    Fields----
    Field1
    Fields----
    Field2
    Segment----
    E1EDP07
    Fields----
    Field3
    Fields----
    Field4
    Segment----
    E1EDP08
    Segment----
    E1EDP09
    Fields----
    Field5
    Fields----
    Field6
    Segment----
    ZCODE
    Segment----
    ZQUALIFIER
    Fields----
    Field7
    Fields----
    Field8
    Here using the qualifiter segment we need to filter the E1EDP09 segments,
    The condition is If Field7 == Network, and Field8 == GSM, I need all the E1EDP09 segments.
    The E1EDP09 segments has to filter with the above condition.
    For example if 10 E1EDP09 segments comes in the input IDOC if i have only 6 satisfed with the above condition I need only those 6 E1EDP09 segments at the output.
    I have tried with all the options but i couldn't fiter that, can anyone throw some light on this..
    Thanks,
    --Sai

    Hello,
    You can try using the mapping below:
    For E1EDP09 mapping:
    Field8 --> concat --> equalsS:GSMNetwork --> ifWithoutElse --> removeContext --> E1EDP09
    Field7 --> /                                           /
    E1EDP09 --------------------------------------------> /
    The code above will pass the number of E1EDP09 that satisfies your condition.
    For the E1EDP09 child nodes e.g /DESADV01/IDOC/E1EDK08/E1EDP07/E1EDP09/HLNUM:
    Field8 --> concat --> equalsS:GSMNetwork -----------------> ifWithoutElse --> removeContext --> E1EDP09
    Field7 --> /                                                        /
    HLNUM --> MapWithDefault --> removeContext --> formatByExample --> /
    E1EDP09 -------------------------------------------> /
    The code above will pass all the E1EDP09 fields that satisfies your condition
    Hope this helps,

  • Generate multiple Idoc segments

    Hi all,
    I have a Flat file to Idoc Scenario.
    I need to generate no. of multiple Idoc Segments based on the source field value.
    For Eg: if Field1 starts with 5 or 6 then E1 segment should be created 5 times,
    similarly if Field1 starts with 4 then E1 segment is created 6 times
    And as many times E1 is created that many times the corresponding other E2,E3 segments are created
    i.e E2 E3 has 1-1 relationship with E1
    Can this be done graphically ?
    Working on PI 7.0 Environment
    I would appreciate your Inputs.
    Regards,
    Varun
    Edited by: Varun Reddy on Oct 5, 2010 8:21 AM

    Im pretty sure that if you duplicate the target segment the max number of times (6) but you only map to 4 of them, only 4 will be created in the target structure. Let the Mapping/Data drive how many segments actually get created in your target structure.
    I could be wrong but Im pretty sure thats how Ive handled repeating segments before.

  • IDOC Generation Using XSLT Mapping[Query]

    Hi,
    I am working on File to IDOC scenario. I have used XSLT mapping. It is necessary to generate EDI_DC40 segment for IDOC in XSLT?
    -Kavita

    Hi Kavita,
    please take a look at note: 728792
    (Fields of the IDoc control record )
    it describes your scenario
    Regards,
    michal

Maybe you are looking for