XSLT Transform issue : Same target variable

Hi all,
I have to make 4 database transactions and each database output variable updates the schema output variable.
so i have 4 db adapters (and their corresponding assigns) followed by 4 transforms. Now the problem is that all the transforms have the same target variable . And the final output has the data only from the last trasnformation. The previous three are getting overwritten.
i have for-each ie unbouded element coming from all the database queries - so cant do away with the transformations.
i am using Oracle BPEL 10.1.3.3 and JDev 10.1.3.3.
Please reply fast.
thanks and regards,
vishal

Hi,
Create 4 global variables of type "Target schema in the transformation" and then whenever you get the response from the db adapter you just assign it to the corresponding variable.Finally you have 4 variable of the same schema type so you can append the four variabel or do what ever you want.
Regards,
Yuvaraja S

Similar Messages

  • Execute a query using ABAP  (XSLT transformation issue)

    Hello,
    I made the steps from this blog (part I, II and III).
    /people/durairaj.athavanraja/blog/2005/12/05/execute-bw-query-using-abap-part-iii
    When trying to run the XSLT transformation, I got the message that : XML invalid source file.
    I am not sure what are the steps for running a transformation, or running it for this case ,maybe something it's not ok. I just run it, did not provide any information.
    Any suggestions ? Did anyone use the function module described in this blog ?
    Thank you very much in advance.

    try giving
    CALL TRANSFORMATION (`ID`)
    SOURCE meta = meta_data[]
    output = <ltable>[]
    RESULT XML xml_out
    OPTIONS xml_header = 'NO'.
    and check - sometimes the codepages configured in the BW system tend to cause an issue... I am not sure if the syntax is right though - but you are basically trying to bypass any encoding that is happening in the query transformation....
    http://www.sapetabap.com/ovidentia/index.php?tg=fileman&sAction=getFile&inl=1&id=4&gr=Y&path=ABAP%2FABAPENANGLAIS&file=ABAP-XML+Mapping.pdf&idf=41
    Edited by: Arun Varadarajan on May 18, 2009 11:28 PM

  • XSLT transformation issue

    Hi Everybody,
    I have the following structure XML badly formatted provided from an external application. It's imposed like that.
    <?xml version="1.0" encoding="UTF-8"?>
    <n:root xmlns:n="http://www.something">
         <order number="1234"/>
         <orderline item="1" nom="moi"/>
         <orderline item="2" nom="toi"/>
         <order number="456"/>
         <orderline item="1" nom="bien"/>
         <orderline item="2" nom="mal"/>
    </n:root>
    Each <order> in followed by multiple <orderline> which belong to the <order< without any sequence except the order in xml.
    I need to transform it into a better structure as follow
    <n:root xmlns:n="http://www.something">
         <order>
              <number>1234</numero>
              <orderline>
                   <item>1</item>
                   <nom>moi</nom>
              </orderline>
              <orderline>
                   <item>2</item>
                   <nom>toi</nom>
              </orderline>
         </order>
         <order>
              <number>456</number>
              <orderline>
                   <item>1</item>
                   <nom>bien</nom>
              </orderline>
              <orderline>
                   <litem>2</item>
                   <nom>mal</nom>
              </orderline>
         </order>
    </n:root>
    I need to do that in XSLT without the use of PI mapping because I need to create a SOAP envelope completely want I need to put some fields dynamically in the soap-header.
    Is there someone who can help me, please?
    Kind Regards.
    E. Koralewski

    I found the solution,
    There is the coding of mu XSLT.
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:n="http://www.something" exclude-result-prefixes="n">
         <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
         <xsl:key name="fils" match="orderline" use="generate-id(preceding-sibling::order[1])"/>
         <xsl:template match="/">
              <n:root xmlns:n="http://www.something">
                   <xsl:apply-templates select="//order "/>
              </n:root>
         </xsl:template>
         <xsl:template match="orderline ">
              <orderline>
                   <item>
                        <xsl:value-of select="@item"/>
                   </item>
                   <nom>
                        <xsl:value-of select="@nom"/>
                   </nom>
              </orderline>
         </xsl:template>
         <xsl:template match="order ">
              <order>
                   <number>
                        <xsl:value-of select="@number"/>
                   </number>
                   <xsl:apply-templates select="key('fils',generate-id())"/>
              </order>
         </xsl:template>
    </xsl:stylesheet>

  • JAXP XSLT transformation UTF-8 issue

    Hi all,
    I have XML file generated from Java app. File is valid and is in UTF-8.
    I have XSLT template created with Altova StyleVision. Template is to produce RTF output file from above XML.
    I Java app there are two variant for XSLT transformation - with and without Saxon. I have simplified the code and it is almost the same in two variants.
    File outputFile = new File("path");
    *if (saxonToBeUsed) {*
    ClassLoader saxonClassLoader = SaxonLoader.getInstance(saxonPath);
    TransformerFactory transFact = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", saxonClassLoader); //$NON-NLS-1$
    Transformer trans = transFact.newTransformer(xsltSource);
    trans.setOutputProperty("encoding", "UTF-8"); //$NON-NLS-1$
    StreamResult res = new StreamResult(outputFile);
    trans.transform(xmlSource, res);
    *} else {*
    TransformerFactory transFact = TransformerFactory.newInstance();
    Transformer trans = transFact.newTransformer(xsltSource);
    trans.setOutputProperty("encoding", "UTF-8"); //$NON-NLS-1$
    StreamResult res = new StreamResult(outputFile);
    *// Same result -> StreamResult res = new StreamResult(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"));*
    *// Same result -> StreamResult res = new StreamResult(new PrintWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8")));*
    trans.transform(xmlSource, res);
    XML file contains Arabic or Chinese text. RTF is generated.
    When RTF and XML are opened with text editor or web browser Arabic/Chinese whatever text is readable.
    The issue is that when RTF is opened with MSWord/WordPad/Open Office Writer :
    - Saxon generation -> RTF file can be opened and Arabic/Chinese text is normal i.e readable. English language is readable too.
    - JAXP generation -> RTF file can be opened but Arabic/Chinese is scrabmbled, messed up. English language is readable.
    All three files (XML,XSLT,RTF) are in UTF-8
    I have installed Chinese and Arabic true type fonts. When I create manual MSWord doc i can write some of their symbols.
    Please suggest some solution.
    Thanks

    Hi jtahlborn,
    I found the difference between two RTFs. This is one table cell containing random Arabic text
    XSLT 1.0 generated:
    {\*\bkmkstart محمود_شمام_لرويترز:_القذافي_قتل_في_هجوم_للمجلس_الانتقالي}{\fs16 محمود شمام لرويترز: القذافي قتل في هجوم للمجلس الانتقالي}
    XLST2.0 generated:
    {\*\bkmkstart محمود_شمام_لرويترز:_القذافي_قتل_في_هجوم_للمجلس_الانتقالي} {\fs16\u1605?\u1581?\u1605?\u1608?\u1583?\u32?\u1588?\u1605?\u1575?\u1605?\u32?\u1604?\u1585?\u1608?\u1610?\u1578?\u1585?\u1586?\u58?\u32?\u1575?\u1604?\u1602?\u1584?\u1575?\u1601?\u1610?\u32?\u1602?\u1578?\u1604?\u32?\u1601?\u1610?\u32?\u1607?\u1580?\u1608?\u1605?\u32?\u1604?\u1604?\u1605?\u1580?\u1604?\u1587?\u32?\u1575?\u1604?\u1575?\u1606?\u1578?\u1602?\u1575?\u1604?\u1610?}
    But I don't know how to fix it. Both files are generated with Saxon, same Java code, only XSLTs are different.
    Any ideas ?

  • XSLT transformation error when importing target group in CRM Survey cockpit

    Hi,
    I created a target group using the segment builder and exported that to a local file. Then when creating a survey using CRM survey cockpit (tcode: SURVEY) and trying to import the same target group from the local file; I get an error :
    "Error when applying a XSLT transformation"
    System Response
    Data transformation cannot be executed. Application functions that depend on the transformation cannot be executed
    I tried various file formats : RTF, TXT, XLS, HTML but still I get the same error. Export to XML option is neither available while exporting from segment builder nor while importing into Survey cockpit. The target group is not empty.
    Are there any settings to be maintained to resolve the error ?????
    Dhaval.

    Hi Suhel,
    Thanks for the response... as far as my understanding goes, the crm survey suite can be used for maintaining questoinnaires that are transaction specific. also the functionality of question tables and rows is not available in the survey suite but is available in the survey cockpit (tcode: SURVEY).
    However the same does not allow me to refer to the target groups created using the segment builder.... Is there a way I can use the target group created through the segment builder in the survey cockpit ????
    Dhaval.

  • XSLT transformation in XML to ABAP: special characters issue

    Hi,
    I am parsing well-formed XML file that has the following data (:
    <projects><project><name>Wallis &amp; Futuna</name></project></projects>
    I use XSLT transformation:
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
    <xsl:strip-space elements="*"/>
    <xsl:template match="projects">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
            <PROJECTS>
              <xsl:for-each select="project">
                <PROJECT>
                  <NAME>
                    <xsl:value-of select="name"/>
                  </NAME>
                </PROJECT>
              </xsl:for-each>
            </PROJECTS>
          </asx:values>
        </asx:abap>
      </xsl:template>
    </xsl:transform>
    If I use the above example without &amp;amp; everything works fine, but the original XML fails with exception CX_XSLT_DESERIALIZATION_ERROR and message "Error during deserialization". Googling around did not give an answer.
    Any words of wisdom?
    Edited by: Alexei Isaev on Apr 26, 2011 5:04 AM
    Edited by: Alexei Isaev on Apr 26, 2011 5:05 AM

    Hi,
    Please visit the following link for reference.
    http://help.sap.com/abapdocu_70/en/ABAPCALL_TRANSFORMATION.htm
    Thanks & Regards,
    Harish

  • Issue with xslt transform

    I'm having a problem with xslt transformations.
    I'm sending a DOMDocument to be transformed into a varchar2. The transformation was into html and I was then printing the returning varchar2 to a web page, along the lines of...
    htp.prn(Xslt.transform(domdoc, xslt.stylesheet( l_stylesheet_bfile)));
    I subsequently broke the varchar2 32k limit so I started playing with transforming into a dom instead of a varchar, then writing the dom to a clob and the printing the clob to the web page in 32k chunks.
    I noticed this produced different results than the first method. Now I'm assuming that this is not because xslt is doing the transformations differently but because it's trying to put my html into a well-formed DOMdocument. I have noticed, though, that things like & #160; seemed to have disappeared.
    Just wondering if I'm doing something wrong, and also any reason why the transform functionality doesn't have an output option of CLOB?
    Thanks
    Jason

    What is the DB version?

  • Transformation issue in BPM

    I have a message type into which I am trying to send data in two different transformation steps in my BPM.  The first transformation step does it fine and I am able to see the data.  After that the flow completes the second one I don't see the data that I already have in it.
    The second transformation step is nullifying the fields mapped by the first one even though I am not mapping anything into those fields in my second step.
    Can some one help me with this?  Is there some setting to retain the values in the message?

    Hi Prasad,
    are you using the same container variable for those two transformation steps as target? if not try creating a new one with the same message type a use it in the second transofrmation step
    if this doesn't work create a new abstract interface message and use it in the BPM for the second mapping (I remember having some problems with using the same one too)
    Regards,
    michal

  • XSLT producing different results via debugger and xslt.Transform()

    I'm producing the body of an email via an xsl. I've been having a problem with the html nested inside a <table> tag not displaying correctly. With a bit of help from the good folks over at the asp.net forums, I've tracked the problem down to getting
    different results if I run the xsl via the debugger or via a compiled transform.
    When I debug the xsl it produces
          <table border="1" cellpadding="4" cellspacing="0" style="..." id="tmsEmailTable">
            <tr>
              <th width="50%" align="center"><b>Issue</b></th>
              <th width="50%" align="center"><b>Resolution</b></th>
            </tr>
            <tr>
              <td>Missing Acknowledgement date</td>
              <td><p> Test test</p></td>
            </tr>
            <tr>
              <td>Missing Agent and/or Seller signature</td>
        </table>
    And that's absolutely correct and displays perfectly if I save the result as an html file. But when I use xslt.Transform(..), where xslt is a compiled transform, it produces
    <table border="1" cellpadding="4" cellspacing="0" style="..." id="tmsEmailTable">
                <tr><th width="50%" align="center"><b>Issue</b></th><th width="50%" align="center"><b>Resolution</b></th></tr>
                <tr>
                    <td>
                        Missing Acknowledgement date
                    </td>
                    <td></td>
                </tr>
            </table>
        </p><p> Test test</p></td></tr><tr>
            <td>Missing Agent and/or Seller signature</td>
            <td>
        </table>
    And to make it even more interesting, that extra </table> tag and the misplaced table data only occur on the first table row, but the table rows are generated by an xsl:for-each.
    The relevant bit of the xsl is:
              <table border="1" cellpadding="4" cellspacing="0" style="..." id="tmsEmailTable">
                <tr>
                  <th width="50%" align="center">
                    <b>Issue</b>
                  </th>
                  <th width="50%" align="center">
                    <b>Resolution</b>
                  </th>
                </tr>
                <xsl:for-each select="emailbody/checklist/item">
                  <xsl:if test="string-length(select='issue')>0">
                    <tr>
                      <td>
                        <xsl:value-of select="issue" disable-output-escaping="yes" />
                      </td>
                      <td>
                        <xsl:value-of select="resolution" disable-output-escaping="yes" />
                      </td>
                    </tr>
                  </xsl:if>
                 </xsl:for-each>
              </table>
    The code that generates the compiled transform and the (incorrect) output is:
                Dim xslt As XslCompiledTransform = New XslCompiledTransform(True)
                'Dim xslt As XslTransform = New XslTransform
                xslt.Load(templatePath) 
                Dim objStream As Stream = New MemoryStream(UTF8Encoding.UTF8.GetBytes(xmlData))
                Dim strbldrXML As StringBuilder = New StringBuilder()
                Dim objXmlReader As XmlReader = XmlReader.Create(objStream)
                Dim objXmlWriter As XmlWriter = XmlWriter.Create(strbldrXML)
                xslt.Transform(objXmlReader, objXmlWriter)
    I've checked that templatePath is pointing to the right file, and the source file I'm debugging the xsl against was copied from the xmlData parameter, so I know the same stuff is getting fed into it.
    I've been chasing this for days, and I'm about ready to quit and go get a job at a fast food joint. I'm not wonderful with xsl in general, or xsl in .NET in particular. Somebody PLEASE tell me I'm doing something stupid....
    Rebecca M. Riordan

    Thanks for the replay, Fred, but that wasn't the problem.
    I still don't know what the problem was, but in putting together a sample for review, I cleaned up the code a little (I inherited this), and while it
    appears to be functionally identical, it's working now. Since we're scheduled to go live on Friday, I'm gonna just take the win ;)
    In the unlikely event that anybody's curious, the original, non-functional code, looked like this:
    Public Function createEmailBody(ByVal templateType As String, ByVal xmlData As String) As String
                Dim templatePath, emailBody As String
                templatePath = Me.templatePath & "\" & templateType & ".xsl"
                Dim xpd As New XPathDocument(New StringReader(xmlData))
                Dim xslt As XslCompiledTransform = New XslCompiledTransform(False)
                xslt.Load(templatePath)
                Dim objStream As Stream = New MemoryStream(UTF8Encoding.UTF8.GetBytes(xmlData))
                Dim strbldrXML As StringBuilder = New StringBuilder()
                Dim objXmlReader As XmlReader = XmlReader.Create(objStream)
                Dim objXmlWriter As XmlWriter = XmlWriter.Create(strbldrXML)
                xslt.Transform(objXmlReader, objXmlWriter)
                emailBody = strbldrXML.ToString()
                Return emailBody
    End Function
    In cleaning it up, I wrote this:
    Public Function createEmailBody(ByVal templateType As String, ByVal xmlData As String) As String
                Dim xslt As XslCompiledTransform = New XslCompiledTransform(False)
                Dim templatePath As String = Me.templatePath & templateType & ".xsl"
                xslt.Load(templatePath)
                Dim reader As XmlReader = XmlReader.Create(New MemoryStream(UTF8Encoding.UTF8.GetBytes(xmlData)))
                Dim outSB As StringBuilder = New StringBuilder()
                Dim writer As XmlWriter = XmlWriter.Create(outSB)
                xslt.Transform(reader, writer)
                Dim emailBody As String = outSB.ToString()
                Return emailBody
    End Function
    As I said, they look functionally identical to me, but obviously they're not, because the second one works....
    Rebecca M. Riordan

  • XSLT transformation for Single XML Output

    I want to save a book to a single XML document. Is it correct that I can do this by adding an xslt to merge the standard framemaker entity type output ? Can I easily reconfigure the standard Save As XML to acheive this? or do I need to add a new menu item and call the XSLT dialogue...
    any advice appreciated.
    Thanks!

    Tracey,
       A related discussion appeared in the FrameSGML Yahoo group recently. Much of what follows is what I wrote there.
       Your XML application (defined in structapps.fm or another application definition file) can specify an XSLT post-process. No need to change Save as XML or define a new menu item. Depending on what you want, the XSLT transform can be as simple as the following:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml"/>
        <xsl:template match="/ | node() | @*">
            <xsl:copy>
                <xsl:apply-templates select="@* | node()"/>
            </xsl:copy>
        </xsl:template>
    </xsl:transform>
    This is an identity transform that simply copies the interpreted input to the output. I've used the word "interpreted" here because XSLT does not distinguish among some variations of how content is entered. In particular, it does not distinguish between content in referenced general entities (which is what you want) or between attribute values that happen to be the same as the attribute default value and attributes that are not explicitly specified and hence use the default value.
    There are a few things to watch out for involving use of general entities.
    First, if you are using entity attributes for graphics, you'll need to modify the above slightly. It's probably easier to replace the entity attributes with file attributes, but if you want to keep the entities, the above needs to be extended to declare the entities.
    Second, if you are using and want to preserve entity references for special characters or variables, you'll need to account for them as well. See $FMHOME\Structure\xml\PreserveEntity\readme.pdf.
        --Lynne

  • BW 3.5 - Issue with formula variable with replacement path

    Dear experts,
    I'm facing an issue with formula variable with replacement path.
    Just to clarify, I know replacement paths is raising a lot of questions but I've been using this functionnality extensively in the past, both in 7.0 and 3.5, so I'm not looking for basic information about how to use it.
    I'm trying to setup a simple report that would show total values per plant of Purchase Order < 100 €
    To do so I've setup a calculated key figure as follow:
    VAR1 * ("PO value" < 100 ) * "PO value"
    VAR1 is a formula variable with replacement path on 'purchase order' and value attribute 'constant =1'.
    (The report has to show values summarized by plant but should not show the detail PO by PO, so I'm not looking at a solution based on condition)
    The report as characteristic "plant" in rows and my CKF in columns.
    Now let's take an example. I have 3 POs in Plant 1:
    PO1 -> 150€
    PO2 -> 90€
    PO3 -> 80€
    Because of the variable with replacement path, the result in my query should be:
    plant1 = 170 (even though characteristic "purchase order" is not in my rows, system should evaluate PO one by one and return values only for those two that are below 100).
    But the result coming is 320, which is wrong.
    I've done the same report on many other 3.5 systems and it worked perfectly, and I am not able to get proper support from SAP OSS who keep saying that this functionnality is not ready in 3.5 (although I've provided screenshot of this working on another 3.5 system!!! how frustrating...)
    They have also pointed to problems of Before and After aggregation but that has absolutely no impact. Once again, the scenario is working perfectly on other 3.5 systems with the same query design, so i'm sure it has nothing to do with Query Designer options.
    Would anyone have ever come to an equivalenet problem? I'm wondering whether the DB itself could not play a role in the variable with ref  characteristic 'constant =1' ...
    Any though is welcome!
    thanks

    Hi,
    The text variable is replaced when the exact date is clear for this key figure column according to the restriction.
    To achive this, please make sure that either the variable is directly restricted in the key figure selection, or that the date characteristic is in drilldown.
    Regards,
    Patricia

  • Error when applying a XSLT transformation: No valid XSLT pro

    Dear All,
    I am getting following error when opening the "General Supplier Data" from Pre-Select Supplier.
    Error Message: "Error message: Error when applying a XSLT transformation: No valid XSLT program supplied"
    I have already read the related threads on SDN and checked the SAP Note 883896 and others. Even tried running the program UXS_DEL_NAVIGATION_NODE and UXS_ADD_MISSING_XSLT_NAME. But not able to solve the issue.
    Kindly Help.
    Regards,
    Sagar

    Hi Masa,
    Thanks for reply. I have checked this note. As note suggests, S_DEVELOP auth object is assigned to the user. and it has value *.
    Do I need to check anything else?
    Regards,
    Sagar

  • Error when applying a XSLT transformation

    central instance
    transaction SURVEY
    Extras->Target Group Hierarchy-> Import from file
    select file
    Error when applying a XSLT transformation
    dialog instance working

    Hello Andrey Kuryanov,
    Could make sure you describe the problem more clear as much as you can so that community can help you better.
    Please provide more details with more detailed steps and actual error messge.
    Thanks
    Raja Pamireddy
    Moderator

  • Different formats of the flat file for the same target

    In our deployment, we use plugin code to extract the csv files in the required format. The customers are on same version of datamart, but they are on different versions of source database - from 3.x to 4.5 depending on which version of application they are using. In 4.0, we introduced a new column email in the user table in the source database. Accordingly, plugin will add the field in the csv file. But not all the customers will get the upgraded version of plugin at the same time. So ETL code needs to decide which data flow to process depending on the format of the csv file to load data to the same target table. I made the email field in the target table nullable but it still expects the same format of the csv file with delimiter for null value.
    Need help to achieve this. Can I read the structure of the flat file in DS or get the count of delimiters so that I can use a conditional to use different data flow based on the format of the flat files.
    Can I make the email column in the flat file optional?
    Thanks much in advance.

    You can add an email column that maps to null in a query transform for the source that does not contain this column. 
    Or else you can define two different file formats that map to the same file.  One with the column and one without

  • Issue with session variable

    Hi,
    I'm trying to setup a session variable to filter an Answer query based on the user login name. I've created the following
    - A database table that contains a user name and its related filter (Entity)
    - An initialization block for the session variable to issue the following sql: select Entity from table where user_name = ':USER'
    - Created a target session variable called CURR_ENTITY as the target and assign a default value as 'No entity'.
    - Filter my Answer query to use the session variable CURR_ENTITY
    After restart of BI server and Presentation services and opening the report, CURR_ENTITY is always set to the default value. I've checked NQQuery,.log and looks like the initialization block was not returning any rows.
    Any ideas on how to get around this issue? Thanks.
    Regards,
    Gerd

    Hi gerd,
    select Entity from table where user_name = ':USER'Check if this query is returning values in the backend DB.If so it is returning then it should work fine in session variable.
    After defining the target variable CURR_ENTITY and test it in the screen.That shows you is it picking all the values or a single defaulted value.
    If its showing all values then re-check your block once again.
    (OR)
    In the target variable instead of variable define row-wise initialization (i mean check it) and change the SQL in the variable to this
    select 'CURR_ENTITY',Entity from table where user_name = ':USER'
    and test it so you can use it in answers .....it should work with what is required.
    hope answered the question.
    Cheers,
    KK

Maybe you are looking for