SAP 4.7 XML data exchange using XSLT

Hello All,
Hopefully the right place to post such article but here goes any way.
My project involves producing XML files and then reading them back into to SAP internal tables. I am ok with writing SAP data to external XML file but reading it back in is causing a lot of head scratching.
I am able to double click the XML file and it launches Ok in Internet Explorer.
I am also able to debug the xslt file from within SE80 and the correct output is displayed.
However, where I am trying to read the contents of the xml file via the Call Transformation procedure call my output table is not getting populated but instead I am recieving an error message saying the following is not correct:
xmlns:sapxsl="http://www.sap.com/sapxsl
but the above line is placed automaticlly in the XSLT when you create a new one from within SE80.
I am new to SAP ABAP development so not sure what's exactly wrong.
Any help on this issue will be greatfully appreciated. Thanks in Advance,
Wasif
REPORT  z_hp_xml_test                                               .
TYPE-POOLS: ixml.
TABLES: tstc, tstct.
TYPES: BEGIN OF ty_transactions,
      tcode LIKE tstc-tcode,
      ttext LIKE tstct-ttext,
      sprsl LIKE tstct-sprsl,
END OF ty_transactions.
DATA: itab_transactions TYPE STANDARD TABLE OF ty_transactions.
TYPES: BEGIN OF t_xml_line,
        data(256) TYPE x,
      END OF t_xml_line.
DATA: l_ixml            TYPE REF TO if_ixml,
      l_streamfactory   TYPE REF TO if_ixml_stream_factory,
      l_parser          TYPE REF TO if_ixml_parser,
      l_istream         TYPE REF TO if_ixml_istream,
      l_document        TYPE REF TO if_ixml_document,
      l_node            TYPE REF TO if_ixml_node,
      l_xmldata         TYPE string.
DATA: l_elem            TYPE REF TO if_ixml_element,
      l_root_node       TYPE REF TO if_ixml_node,
      l_next_node       TYPE REF TO if_ixml_node,
      l_name            TYPE string,
      l_iterator        TYPE REF TO if_ixml_node_iterator.
DATA: l_xml_table       TYPE TABLE OF t_xml_line,
      l_xml_line        TYPE t_xml_line,
      l_xml_table_size  TYPE i.
DATA: l_filename        TYPE string.
PARAMETERS: pa_file TYPE char1024 DEFAULT 'C:     emp     ransactions.xml'.
Validation of XML file: Only DTD included in xml document is supported
PARAMETERS: pa_val  TYPE char1 AS CHECKBOX.
START-OF-SELECTION.
  Creating the main iXML factory
  l_ixml = cl_ixml=>create( ).
  Creating a stream factory
  l_streamfactory = l_ixml->create_stream_factory( ).
  PERFORM get_xml_table CHANGING l_xml_table_size l_xml_table.
  wrap the table containing the file into a stream
  l_istream = l_streamfactory->create_istream_itable( table =
l_xml_table
                                                  size  =
l_xml_table_size ).
  Creating a document
  l_document = l_ixml->create_document( ).
  Create a Parser
  l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
                                    istream        = l_istream
                                    document       = l_document ).
  Validate a document
  IF pa_val EQ 'X'.
    l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
  ENDIF.
Parse the stream
If any errors then disply else convert XML to table
  IF l_parser->parse( ) NE 0.
    IF l_parser->num_errors( ) NE 0.
      DATA: parseerror TYPE REF TO if_ixml_parse_error,
            str        TYPE string,
            i          TYPE i,
            count      TYPE i,
            index      TYPE i.
      count = l_parser->num_errors( ).
      WRITE: count, ' parse errors have occured:'.
      index = 0.
      WHILE index < count.
parseerror = l_parser->get_error( index = index ).
i = parseerror->get_line( ).
WRITE: 'line: ', i.
i = parseerror->get_column( ).
WRITE: 'column: ', i.
str = parseerror->get_reason( ).
WRITE: str.
index = index + 1.
ENDWHILE.
ENDIF.
ELSE.
TRY .
CALL TRANSFORMATION (`Z_HP_TEST_XSLT`)
SOURCE XML l_xml_table
RESULT outtab = itab_transactions.
DATA: xslt_err TYPE REF TO cx_xslt_exception .
CATCH cx_xslt_exception INTO xslt_err.
DATA: s TYPE string.
s = xslt_err->get_text( ).
WRITE: ': ', s.
STOP.
ENDTRY .
  Process the document
    IF l_parser->is_dom_generating( ) EQ 'X'.
      PERFORM process_dom USING l_document.
    ENDIF.
  ENDIF.
*&      Form  get_xml_table
FORM get_xml_table CHANGING l_xml_table_size TYPE i
                            l_xml_table      TYPE STANDARD TABLE.
  Local variable declaration
  DATA: l_len      TYPE i,
        l_len2     TYPE i,
        l_tab      TYPE tsfixml,
        l_content  TYPE string,
        l_str1     TYPE string,
        c_conv     TYPE REF TO cl_abap_conv_in_ce,
        l_itab     TYPE TABLE OF string.
  l_filename = pa_file.
  upload a file from the client's workstation
  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename   = l_filename
      filetype   = 'BIN'
    IMPORTING
      filelength = l_xml_table_size
    CHANGING
      data_tab   = l_xml_table
    EXCEPTIONS
      OTHERS     = 19.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  Writing the XML document to the screen
  CLEAR l_str1.
  LOOP AT l_xml_table INTO l_xml_line.
    c_conv = cl_abap_conv_in_ce=>create( input = l_xml_line-data
replacement = space  ).
    c_conv->read( IMPORTING data = l_content len = l_len ).
    CONCATENATE l_str1 l_content INTO l_str1.
  ENDLOOP.
  l_str1 = l_str1+0(l_xml_table_size).
  SPLIT l_str1 AT cl_abap_char_utilities=>cr_lf INTO TABLE l_itab.
  WRITE: /.
  WRITE: /' XML File'.
  WRITE: /.
  LOOP AT l_itab INTO l_str1.
    REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>horizontal_tab
IN
      l_str1 WITH space.
    WRITE: / l_str1.
  ENDLOOP.
  WRITE: /.
ENDFORM.                    "get_xml_table
*&      Form  process_dom
FORM process_dom USING document TYPE REF TO if_ixml_document.
  DATA: node      TYPE REF TO if_ixml_node,
        iterator  TYPE REF TO if_ixml_node_iterator,
        nodemap   TYPE REF TO if_ixml_named_node_map,
        attr      TYPE REF TO if_ixml_node,
        name      TYPE string,
        prefix    TYPE string,
        value     TYPE string,
        indent    TYPE i,
        count     TYPE i,
        index     TYPE i.
  node ?= document.
  CHECK NOT node IS INITIAL.
  ULINE.
  WRITE: /.
  WRITE: /' DOM-TREE'.
  WRITE: /.
  IF node IS INITIAL. EXIT. ENDIF.
  create a node iterator
  iterator  = node->create_iterator( ).
  get current node
  node = iterator->get_next( ).
  loop over all nodes
  WHILE NOT node IS INITIAL.
    indent = node->get_height( ) * 2.
    indent = indent + 20.
    CASE node->get_type( ).
      WHEN if_ixml_node=>co_node_element.
        element node
        name    = node->get_name( ).
        nodemap = node->get_attributes( ).
        WRITE: / 'ELEMENT  :'.
        WRITE: AT indent name COLOR COL_POSITIVE INVERSE.
        IF NOT nodemap IS INITIAL.
          attributes
          count = nodemap->get_length( ).
          DO count TIMES.
            index  = sy-index - 1.
            attr   = nodemap->get_item( index ).
            name   = attr->get_name( ).
            prefix = attr->get_namespace_prefix( ).
            value  = attr->get_value( ).
            WRITE: / 'ATTRIBUTE:'.
            WRITE: AT indent name  COLOR COL_HEADING INVERSE, '=',
                             value COLOR COL_TOTAL   INVERSE.
          ENDDO.
        ENDIF.
      WHEN if_ixml_node=>co_node_text OR
           if_ixml_node=>co_node_cdata_section.
        text node
        value  = node->get_value( ).
        WRITE: / 'VALUE     :'.
        WRITE: AT indent value COLOR COL_GROUP INVERSE.
    ENDCASE.
    advance to next node
    node = iterator->get_next( ).
  ENDWHILE.
ENDFORM.                    "process_dom
Section 3: My XSLT file:
<xsl:transform version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:sapxsl="http://www.sap.com/sapxsl"
<xsl:strip-space elements="*"/>
<xsl:template match="TransList">
     <xsl:apply-templates />
</xsl:template>
         <xsl:template match="Tcode">
              Tcode <xsl:apply-templates />
         </xsl:template>
         <xsl:template match="ttext">
              ttext <xsl:apply-templates />
         </xsl:template>
         <xsl:template match="sprsl">
              sprsl <xsl:apply-templates />
         </xsl:template>
</xsl:transform>

The exact error message I'm getting is :
ABAP XML formatting error in XML node of type "element", name: "abap"

Similar Messages

  • BI & Oracle XI data exchanges using WEBServices (into both sides)

    Hello,
    Would you be so kind and give me suggestions.
    We have:
    <b>BI 7 server – Oracle Exchange Infrastructure – Oracle DB server</b>
    Our client wants to implement this data exchange solution:
    <u>Scenario A: i have load data to BI from Oracle DB</u>
    My steps are: from <i>BI</i> i have to call WEBService from <i>Oracle Exchange Infrastructure</i> when <i>Oracle Exchange Infrastructure</i> calls WEBService from <i>Oracle DB</i> and <i>Oracle DB</i> returns data set to <i>BI</i> via <i>Oracle Exchange Infrastructure.</i>
    How to schedule job for calling  WEBServices from <i>Oracle Exchange Infrastructure</i>? What have i configure in <i>BI</i>?
    <u>Scenario B: Application based on Oracle DB wants to get data from BI</u>
    Steps are: <i>Oracle DB</i> calls WEBService from <i>Oracle Exchange Infrastructure</i> when <i>Oracle Exchange Infrastructure</i> calls WEBService from <i>BI</i> and <i>BI</i> sends data to <i>Oracle DB</i> via <i>Oracle Exchange Infrastructure</i>.
    <i>BI</i> offers <i>Open Hub Service</i> for data distribution from <i>BI</i>, but I didn’t find description how to  distribute data using WEBServices.
    Is is possible to implement Scenario A and Scenario B in BI with standard tools.
    Could you give me detailed answers(step-by-step what I have to do)?
    Thanks in advance.
    Best Regards,
    Arunas Stonys

    Arunas,
    Quite an interesting landscape....
    Also what do you mean by standard tools ?
    Option A :
    You can use the XML datasource for the same and once the XML data source is called , the data enters the Delta Queue in the BI server and from there you can use the normal infopackage / real time daemon to load data into your cubes / DSO. The XML datasource works on SOAP and this has to be supported by the Oracle XI.
    Option B:
    Slightly more trickier since you are hitting the BI server directly....
    I am not sure if an infospoke can be a web service but some of the ways this could be done is :
    a. Have an Func Module which acts as a web service and have that FM return the data
    b. Have SAP XI inbetween to do the same
    Also on the landscape- depending on the nature of data loads / data requests - if BI-Oracle is more - you can look at having SAP XI there instead....
    Arun
    Hope it helps....
    P.S I would also suggest that you post the same in the Enterprise SOA forums  / enterprise web services and people like Karthik Iyengar , Durairaj etc can respond to the same in a much better way that what I am able to give you right now...
    Message was edited by:
            Arun Varadarajan

  • XML to ABAP Using XSLT

    Hello friends,
        I am trying a ABAP program (posted on SDN) to convert XML into ABAP (internal table) and not having any luck. Either it is my table/structure declaration or XSLT. Could any of you experts give me a hand with it please?
    Thanks in advance..but points on help!
    Here is my XML:
    And my ABAP program:
    REPORT  ZTESTXMLREAD.
    TYPE-POOLS: abap, ixml.
      class cl_ixml definition load.
    TYPES: BEGIN OF t_dc40,
             docnum(17) TYPE  C,
             status(2)  TYPE  C,
           END   OF t_dc40.
    TYPES: BEGIN OF t_emkt,
             spras(2)   TYPE  C,
             maktx(35)  TYPE  C,
           END   OF t_emkt.
    TYPES: BEGIN OF t_emrm,
             matnr(12)  TYPE  C,
             ersda(8)   TYPE  C,
             ernam(25)  TYPE  C,
             emktx      TYPE  t_emkt,
           END   OF t_emrm.
    TYPES: BEGIN OF t_mm,
             dc40   TYPE  t_dc40,
             emrm   TYPE  t_emrm,
           END   OF t_mm.
    DATA: l_ixml            TYPE REF TO if_ixml,
          l_streamfactory   TYPE REF TO if_ixml_stream_factory,
          l_istream         TYPE REF TO if_ixml_istream.
    DATA: l_filename        TYPE string.
    DATA: it_airplus    TYPE STANDARD TABLE OF t_mm,
          wa_airplus    TYPE t_mm.
    *Errorvariables
    DATA: xslt_err   TYPE REF TO cx_xslt_exception,
          err_string TYPE string.
    PARAMETERS: pa_file TYPE char1024 DEFAULT 'c:Test.XML'.
    START-OF-SELECTION.
      Creating the main iXML factory
        l_ixml = cl_ixml=>create( ).
      Creating a stream factory
        l_streamfactory = l_ixml->create_stream_factory( ).
      Creating input stream
        l_istream = l_streamfactory->create_istream_uri( 'file://c:Test.xml' ).
    here we use the CALL TRANSFORMATION method which calls
    TRY.
        CALL TRANSFORMATION ZTestXSLT
          SOURCE xml l_istream
          RESULT xml_output = it_airplus
    catch any error, very helpful if the XSLT isn't correct
        CATCH cx_xslt_exception INTO xslt_err.
        err_string = xslt_err->get_text( ).
        WRITE: / 'Transformation error: ', err_string.
        EXIT.
      ENDTRY.
    setting a breakpoint to watch the workarea
    by the internal table "it_airplus"
           break-point.
      LOOP AT it_airplus INTO wa_airplus.
      ENDLOOP.

    Thank you Durairaj, as a matter of fact my program is based on your post (one that you pointed me to). For whatever reason I'm not having luck figuring it out (may be just a bit of work pressure) could you please hlep me a bit more by pointing me to where in my program code/xslt I'm going wrong? I somehow feel that it could be my table structure or xslt.
    I would really appreciate it!
    Thanks again,
    erfan.

  • Looking for more samples of spry xml data in use

    I was curious if there's a resource out there that shows more
    samples of using the spry xml data widget. Almost like a template
    or sample gallery. Am I dreaming?

    Look
    Here

  • Problem in transforming XML to string using XSLT

    Hi there,
    I have a R/3 -> XI -> WebService scenario where the message from XI to webservice needs to be sent in document/wrapped mode (the message xml must be embedded in a string element) and this message needs to be digitally signed.
    We are using another webservice to sign the messages, also with the message being sent in a string. To transform the XML's into string and vice-versa, we are using XSLT (/people/michal.krawczyk2/blog/2005/11/01/xi-xml-node-into-a-string-with-graphical-mapping).
    The problem is that both the signer and the final webservice understand the special characters (like '<', '>', '&', '"' etc) in one way but the XSLT generates them in another way. For example, the character '<', in both webservices, is returned as "&#60;" but the XSL Transformation results in "&lt;".
    The problem now is that our messages are always being rejected because the signature is not being recognized as true, though we are almost 100% sure that it's being done correctly. The only possibility to the error that we found is this character mapping being done differently.
    So, it's like this:
    XI sends string to signer as "&lt;"
    XI receives string from signer as "&#60;"
    XI processes the message
    XI sends string to webservice as "&lt;"
    XI receives string from webservice (containing error message) as "&#60;"
    Is there a way of making the XSLT to return "&#60;" instead of "&lt;"?
    Thanks in advace,
    Henrique.

    For Java Mapping, you can refer this-
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-i
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-ii
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-iii
    In Java Mapping, in the startdocument event , you need to check for the specialchars, and just repalce the value required.
    But, what i am thinking is , just try with Java functions inside the XSLT mapping instead of going for Java Mapping. You can call java functions from the XSLT. So before the document starts pasring, you need to replace the special characters. I did not try in XSLT like this.
    For this , you can think with this e.g
    /people/pooja.pandey/blog/2005/06/27/xslt-mapping-with-java-enhancement-for-beginners
    Regards,
    Moorthy

  • Generating CDATA containing XML-like text using XSLT Mapper in OFM 11g

    Hi,
    One of our partners requires XML to be sent as XML string inside a CDATA section. The use of "real" XML is not an option at the moment. We try to generate something like the following using XSLT/XSLT Mapper in SOA Suite 11g:
    <element>
    <![CDATA[
    <supplierElement1>
    <supplierElement2>
    etcetera
    <supplierElement2>
    </supplierElement1>
    ]]>
    </element>
    We've tried the following two approaches, so far unsuccessful:
    <xsl:template match="/">
    <inp1:singleString>
    <inp1:input>
    <xsl:text disable-output-escaping="yes">&lt;![CDATA[test]]&gt;</xsl:text>
    </inp1:input
    </inp1:singleString>
    </xsl:template>
    resulting in:
    <inp1:singleString xmlns:inp1="http://xmlns.oracle.com/singleString">
    <inp1:input>&lt;![CDATA[test]]></inp1:input>
    </inp1:singleString>
    and:
    <xsl:output method="xml" indent="yes" cdata-section-elements="input"/>
    <xsl:template match="/">
    <inp1:singleString>
    <input>test</input>
    </inp1:singleString>
    </xsl:template>
    resulting in:
    <inp1:singleString xmlns:inp1="http://xmlns.oracle.com/singleString" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <input>test</input>
    </inp1:singleString>
    Does anyone know how to generate the CDATA section declaratively (within XSLT/XSLT Mapper), without resorting to custom code and parsing as we have to do now?
    Thanks!
    Ronald

    The exact error message I'm getting is :
    ABAP XML formatting error in XML node of type "element", name: "abap"

  • Formatting tags in xml data set used for spry region

    I am trying to put <p>,,,</p> tags in my xml data set but they cause the field to not load. For example I would like to create an xml file as follows:
    <blog>
          <blogentry>
              <blogdate>Jan 2009</blogdate>
              <blogtitle>January Blog</blogtitle>
              <blogtext><p> this is a paragraph</p>
    <p>and so is this</p>
              </blogtext>
         </blogentry>
    </blog>
    When I do this I don't get anything in the spry region.  If I remove the <p>,</p> tabs it works.
    Is there anyway to do this (not just with <p> but with any tags ... ie. tables, etc.).
    Thanks/Hal

    I have an online example:
    http://www.pearlmanpr.com/perspective_test.html
    The spBlog.xml file contains test junk.  If I put the <[[CDATA....]]> inside the BlogEntry/BlogText tag it doesn't work at all.
    http://www.pearlmanpr.com/perspective_test_2.html
    If I use it without the <[[CDATA..]] it doesnt work either.
    http://www.pearlmanpr.com/perspective_test_3.html
    If I use it without any <> within the tag it sort of works (still needs to be aligned).

  • How to ignore prefix from XML while converting XML to csv using XSLT

    Hi All,
    I am trying to convert XML to csv file.
    the XML i have is like....
    <?xml version="1.0"?>
    <bulkCmConfigDataFile xmlns:es="SpecificAttributes.3.0.xsd" xmlns:un="utranNrm.xsd" xmlns:xn="genericNrm.xsd" xmlns:gn="geranNrm.xsd" xmlns="configData.xsd">
    <configData dnPrefix="Undefined">
            <xn:SubNetwork id="AU_R">
                <xn:SubNetwork id="H5RG_0501">
                    <xn:MeContext id="Firle_5070020">
                        <xn:ManagedElement id="1">
                   <un:RncFunction id="1">
                   <un:UtranCell id="50390303">
                                    <un:attributes>
                                        <un:userLabel>UtranCell 50390303</un:userLabel>
                                        <un:cId>52383</un:cId>
                                        <un:localCellId>50390303</un:localCellId>
                                        <un:uarfcnUl>9613</un:uarfcnUl>
                                        <un:uarfcnDl>10563</un:uarfcnDl>
                                        <un:primaryScramblingCode>502</un:primaryScramblingCode>
                                        <un:primaryCpichPower>287</un:primaryCpichPower>
                                        <un:maximumTransmissionPower>403</un:maximumTransmissionPower>
                                        <un:primarySchPower>-18</un:primarySchPower>
                                        <un:secondarySchPower>-20</un:secondarySchPower>
                                        <un:bchPower>-20</un:bchPower>
                                        <un:lac>50301</un:lac>
                                        <un:rac>1</un:rac>
                                        <un:sac>52383</un:sac>
                                        <un:utranCellIubLink>SubNetwork=AU_R,SubNetwork=H5RG_0501,MeContext=H5RG_0501,ManagedElement=1,RncFunction=1,IubLink=5039030</un:utranCellIubLink>
                                    </un:attributes>
                                </un:UtranCell>     
                   </un:RncFunction>
                        </xn:ManagedElement>   
                    </xn:MeContext>
             </xn:SubNetwork>
            </xn:SubNetwork>
        </configData>
    </bulkCmConfigDataFile>now when i am using XSLT functionality to convert this XML into a csv i want ignore all the prefix from this xml like "un" , "xn" etc....
    can anybody has idea how i can ignore all this value using XSLT

    I just dont understand why factory.setIgnoringElementContentWhitespace(true) did not work.That only does something if the XML has a DTD that enables it to know what whitespace can be ignored and what is significant. The API documentation for the method refers you to this document:
    http://www.w3.org/TR/REC-xml#sec-white-space

  • DATA exchange using XML using ABAP

    Client is having requirement of sharing data with Third party using XML files and this needs to be done using ABAP and changes in XML structure are highly likely in the future and structure is very complex around 100 fields corresponding to an account , three ways are there as far i am aware of :-IXML library,Simple transformation and  XSLT ,
    confusion is which way to follow as Performance constraints are also there and Simple transformation had failed in the past with large amount of data,
    I would like to know what is Industry wide accepted way of doing this in SAP  ( XI is out of scope here )  using ABAP and which one will be the best regarding quality of design and performance

    Hi,
    what about the Client Data Bag? http://help.sap.com/saphelp_nw70ehp1/helpdata/en/68/322a9261c54e51b7965f86aac3dae2/content.htm
    Stores data on the client (browser) side and as long as the user is using CTRL+L to open the new window, the information is preserved.
    br,
    Tobias

  • How to find XSD file? XML to ABAP using XSLT convertor

    Hi Gurus,
    I am trying to convert an XML file to ABAP internal tables using an XSLT transformation. I used the code posted by Durairaj (XSLT program Y_XML_2_ITAB_SIMPLE as mentioned in the link: [Y_XML_2_ITAB_SIMPLE|Parse data to Internal Table;) and the code worked fine.
    My XML file structure is different, and when I try to modify the code for my purposes I got stuck. While changing the XML file strings in the report, I am unable to replace the tag xsi:noNamespaceSchemaLocation="invoice_btm.xsd" correctly. I am also not sure what this file "invoice_btm.xsd" does and where it is stored. When I remove the tag, I get other errors and cannot proceed ahead.
    Can you please advice as to how I should proceed? Also, where can I see the XSD file? can I add a XSD file for my own XML? Or, is there a way to eliminate the need for an XSD file altogether?
    Thanks in advance.
    Regards,
    Shailesh.

    Hi guys,
    Any help would be most helpful. Thanks again,
    Hi guys,
    Any ideas on this issue? Thanks again for your help.
    Hi Naimesh,
    Thanks for the quick reply. I am getting the error "The element abap was expected for the XML-ABAP transformation". I have replaced the following:
    1) "INVOICES_BTM" with the string "ACCOUNT_INFO"
    2) "INVOICE_BTM" with the string "ROOTNODE"
    My XSLT:
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
      <xsl:template match="ACCOUNT_INFO">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
          <asx:values>
            <OUTPUT>
              <xsl:for-each select="ROOTNODE">
                <items>
                  <INV_DATE>
                    <xsl:value-of select="INVOICE_HEAD/INVOICE_DATE"/>
                  </INV_DATE>
                  <INV_NO>
                    <xsl:value-of select="INVOICE_HEAD/INVOICE_NUMBER/NUMBER"/>
                  </INV_NO>
                  <INV_EXT>
                    <xsl:value-of select="INVOICE_HEAD/INVOICE_NUMBER/EXTENSION"/>
                  </INV_EXT>
                  <INV_SEQ>
                    <xsl:value-of select="INVOICE_HEAD/INVOICE_NUMBER/SEQUENCE"/>
                  </INV_SEQ>
                </items>
              </xsl:for-each>
            </OUTPUT>
          </asx:values>
        </asx:abap>
      </xsl:template>
    </xsl:transform>
    My XML program:
    TYPES: BEGIN OF stru,
             inv_date(10),
             inv_no(50),
             inv_ext(10),
             inv_seq(10),
           END OF stru.
    DATA: outtab TYPE STANDARD TABLE OF stru .
    DATA: xslt_error  TYPE REF TO cx_xslt_exception,
          xslt_message  TYPE  string .
    DATA: xml_string TYPE string .
    CLEAR xml_string .
    CONCATENATE
    '<?xml version="1.0" encoding="ISO-8859-1"?>'
    '<ACCOUNT_INFO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ROOTNODE.xsd">'
      '<ROOTNODE>'
        '<INVOICE_HEAD LANGUAGE="DE" DIRECT_DEBIT_QUALIFIER="NO">'
          '<INVOICE_DATE>20040112</INVOICE_DATE>'
          '<INVOICE_NUMBER>'
            '<NUMBER>0306299999</NUMBER>'
            '<EXTENSION>1</EXTENSION>'
            '<SEQUENCE>01</SEQUENCE>'
          '</INVOICE_NUMBER>'
    '</INVOICE_HEAD>'
    '</ROOTNODE>'
    '<ROOTNODE>'
        '<INVOICE_HEAD LANGUAGE="DE" DIRECT_DEBIT_QUALIFIER="NO">'
          '<INVOICE_DATE>20040113</INVOICE_DATE>'
          '<INVOICE_NUMBER>'
            '<NUMBER>0306299888</NUMBER>'
            '<EXTENSION>2</EXTENSION>'
            '<SEQUENCE>02</SEQUENCE>'
          '</INVOICE_NUMBER>'
    '</INVOICE_HEAD>'
    '</ROOTNODE>'
    '</ACCOUNT_INFO>'
    INTO xml_string .
    TRY .
        CALL TRANSFORMATION ('ZH2_XML_TRANS_I1')
          SOURCE XML  xml_string
          RESULT     output = outtab.
      CATCH cx_xslt_exception INTO xslt_error.
        xslt_message = xslt_error->get_text( ).
    ENDTRY.
    break-point.
    Edited by: Shailesh S Kamath on Jan 16, 2012 2:17 PM
    Edited by: Shailesh S Kamath on Jan 30, 2012 2:47 PM

  • XML Data Source using SSRS intgrated in ShaPoint

    I am trying to use an XML soap data source in my report and use the report in my SharePoint site but I get the following error: (SharePoint integration is configured as trusted site) we changed it to windows authentication but get errors on all reports.
    (error below when using windows security)
    An
    error has occurred during report processing. (rsProcessingAborted)
    Cannot
    impersonate user for data source 'dsSkillsMatrix'.
    (rsErrorImpersonatingUser)
    This
    data source is configured to use Windows integrated security. Windows integrated
    security is either disabled for this report server or your report server is
    using Trusted Account mode. (rsWindowsIntegratedSecurityDisabled
    (error below when using no credentials) I also have unattended execution account set as well but it still asks me for credentials when running the report.
    An
    error has occurred during report processing. (rsProcessingAborted)
    The
    data extension supports Windows Integrated Security and No Credentials
    (anonymous request) only. (rsXmlDataProviderError
    im not sure why it tells me this im using the No credendtials option here.
    I read this but I did everything they said and I still have the errors above
    http://social.msdn.microsoft.com/Forums/sqlserver/en-US/acc247b4-3257-47da-9531-fdad5bebcbd4/web-service-as-dadatource-with-basic-authentication?forum=sqlreportingservices

    Hi Pablo
    Thats a tough one ... if you go custom with a data template you will at least get support on the data template functionality ie you have a problem when you try and build one. You will not get support on the query inside the data template as you might have gotten with the Oracle Report, well you could at least log a bug against development for a bad query.
    Eventually that Oracle Report will be converted by development anyway, theres an R12 project going on right now to switch the shipped OReports to data templates. AT this point you'll be fully supported again but:
    1. You have to have R12 and
    2. You'll need to wait for the patch
    On reflection, if you are confident enough in the query then Oracle will support you on its implementation within a data template. Going forward you may be able to swap out your DT and out in the Oracle one without too much effort.
    Regards, Tim

  • Help Please ! -- transform XML to HTML using xslt tag in JSP

    Hello,
    I have problem to do XSL transform in JSP.
    I have an XSL : test.xsl
    I have an XML : test.xml
    In JSP I have:
    <x:xslt media="html" xml="test.xml">
    <x:stylesheet media="html" uri="test.xsl" />
    </x:xslt>
    But It doesn't work the way it suppose to. What is wrong in my code ? I followed the URL http://e-docs.bea.com/wls/docs81/xml/xml_apps.html
    Thanks in advance,
    Christina

    Basically:
        try{
          //Setting up parameters.
          xml=new StreamSource(new File(xmlInput));
          xsl=new StreamSource(new File(xslInput));
          baos=new ByteArrayOutputStream();
          htmlResult=new StreamResult(baos);
          //Transform input(xml, xsl) onto html output.
          TransformerFactory tfactory=TransformerFactory.newInstance();
          Transformer transformer=tfactory.newTransformer(xsl);
          transformer.transform(xml, htmlResult);
          baos.writeTo(out);
          //System.err.println(htmlResult.getOutputStream().toString());
        catch(...){
        }I havent tested and I havent use this for a while, but I hope this can serve as a staring point.
    Regards,
    OO

  • SAP Retail : Article Master Data Transfer using LSMW/ARTMAS05: EAN Error

    Hi Bjorn Panter,
    I want to thank you for providing very informative articles on the Master Data of ERP Retail.
    We are currently loading articles to SAP from legacy and use your articles on ERP Retail as part of our knowledge warehouse.
    We have encountered an error which has stumped our conversion.
    We are getting an M3 535 error stating that "First specify the main EAN for the unit EA".  We are using LSMW (IDOC Method, Basic Type ARTMAS05).
    Our MARM segments have generic and variants.  The UPC and UPC category (set to UC) are filled for the variants and blank in the segment containing the generic.
    Our MEAN segments contain variants only with the UPC and UPC category (set to UC) filled.
    Our UC EAN category is configured with a blank check digit algorithm and a number range of 12 digits.  We are loading our variants with EANs that are 12 digits.
    When debugged IDOC_INPUT_ARTMAS, I noticed that :
    In routine  MARM_UEBERGEBEN (in function module BAPI_MATERIAL_MAINTAINDATA_RT), this code clears our MARMX indicators :
       LOOP AT UNITSOFMEASURE.
        ART_DATA_EXISTS = 'X'.    "JH/05.01.00/4.6C Entkopplung der MALG
        IF UNITSOFMEASURE-FUNCTION NE C_MSGFN_D.   ->>>> this checks if our function code is 003 (which is a delete).
    *     TMFIELDRES aufbauen
          CLEAR UNITSOFMEASUREX.                   ->>>> Since we are doing a create, it clears the indicators in unitsofmeasureX
    To bypass this clear, I debugged the program and overlayed the indicators and marked UPC and UPC category as 'X'.  This worked and we were able to post our IDOC successfully... THe UPCs showed in the MARM and MEAN tables.
    However, knowing that there are a lot of Retail companies loading articles into their SAP system, it would seem odd that no one has reported this as a bug or no one has posted this issue in SDN.  I could not find any OSS note related to this issue either.
    Can you please help us figure out what is wrong ? Have you encountered this error in the past ?  Is there something in config that we should check ?  Should we look at fields in our segments ?
    Any help from you would be greatly appreciated.
    Thanks,
    Sarah

    Dear Sarah,
    please open an OSS customer message.
    Put in a valid IDOC ARTMAS number with this error and open your system.
    I guess either it is a bug in IODC structure or you found a bug in software.
    My colleages will take care.
    Regards
    Björn

  • Remove xml declarations when using xslt

    Hi, i have created an xslt which transforms an xml file and then imports the information into a mysql database. It works and imports the information into the database but it also brings across the xml delcarations and the node names.
    Is there a coldfusion way to remove these declarations, all i want is the information itself brought into the database.
    Thanks
    Chris

    Hi Adam,
    here is the code from the xsl file:
    <?xml version="1.0" encoding="utf-8"?><!-- DWXMLSource="data/itemfeed.xml" --><!DOCTYPE xsl:stylesheet  [
        <!ENTITY nbsp  "&#160;">
        <!ENTITY copy  "&#169;">
        <!ENTITY reg    "&#174;">
        <!ENTITY trade  "&#8482;">
        <!ENTITY mdash  "&#8212;">
        <!ENTITY ldquo  "&#8220;">
        <!ENTITY rdquo  "&#8221;">
        <!ENTITY pound  "&#163;">
        <!ENTITY yen    "&#165;">
        <!ENTITY euro  "&#8364;">
    ]>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
    <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    </head>
    <body>
    <xsl:for-each select="Items/Item[ItemType='Standard']">
    <xsl:value-of select="EANNumber"/>
    </xsl:for-each>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>
    And here is some sample data from the XML file:
    <?xml version="1.0" encoding="UTF-8" ?>
    <Items>
        <Item>
            <ItemType>Standard</ItemType>
            <EANNumber>111222333444</EANNumber>
        </Item>
    </Items>
    Thanks alot, i appreciate the help.
    Chris

  • XML to string using xslt or java mapping

    Hi Experts,
    I want to put xml into string and i need to change lessthan symbol to "&lt"   and greaterthan symbol to "&gt" , can anyone please help me how to do this??? can you provide code for java mapping or XSLT mapping to achive this.
    SOURCE
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:source_mt xmlns:ns0="urn:ppp:prototype">
       <row>
          <name1>IT</name1>
          <name2>SOLUTIONS</name2>
       </row>
    </ns0:source_mt>
    TARGET
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:target_mt xmlns:ns0="urn:ppp:prototype">
       <row>
          <Body>"&lt"name1"&gt" IT"&lt"/name1"&gt" "&lt"name2"&gt" SOLUTIONS"&lt";/name2"&gt" </Body>
       </row>
    </ns0:target_mt>

    Hi ,
          here is the XSLT code to obtain the desired output
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml"/>
    <xsl:template match="/">
    <ns0:target_mt xmlns:ns0="urn:ppp:prototype">
         <xsl:for-each select="//row">
              <row>
                   <Body>
                        <xsl:for-each select="name1">
                                  <xsl:value-of select="concat('*&quot;&lt;&quot;name1&quot;&gt;&quot;*',normalize-space(.),'*&quot;&lt;&quot;/name1&quot;&gt;&quot;*')"></xsl:value-of>
                        </xsl:for-each>     
                        <xsl:for-each select="name2">
                                  <xsl:value-of select="concat('*&quot;&lt;&quot;name2&quot;&gt;&quot;*',normalize-space(.),'*&quot;&lt;&quot;/name2&quot;&gt;&quot;*')"></xsl:value-of>
                        </xsl:for-each>
                   </Body>
              </row>
         </xsl:for-each>
    </ns0:target_mt>      
    </xsl:template>
    </xsl:stylesheet>
    output produced as viewed in browser is
    http://postimage.org/image/1lqbgw8kk/
    Now to obtain exactly the output you posted earlier here is the code
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml"/>
    <xsl:template match="/">
    <ns0:target_mt xmlns:ns0="urn:ppp:prototype">
         <xsl:for-each select="//row">
              <row>
                   <Body>
                        <xsl:for-each select="name1">
                                  <xsl:value-of select="concat('*&quot;&amp;lt&quot;name1&quot;&amp;gt&quot;*',normalize-space(.),'*&quot;&amp;lt&quot;/name1&quot;&amp;gt&quot;*')"></xsl:value-of>
                        </xsl:for-each>     
                        <xsl:for-each select="name2">
                                  <xsl:value-of select="concat('*&quot;&amp;lt&quot;name2&quot;&amp;gt&quot;*',normalize-space(.),'*&quot;&amp;lt&quot;/name2&quot;&amp;gt&quot;*')"></xsl:value-of>
                        </xsl:for-each>
                   </Body>
              </row>
         </xsl:for-each>
    </ns0:target_mt>      
    </xsl:template>
    </xsl:stylesheet>
    output you can see from link below
    http://postimage.org/image/2c7bzo478
    Hope this helps.
    Hi,
        Could you please kindly let us know if the solution is working properly as per your requirement?
    regards
    Anupam
    Edited by: anupamsap on Jul 26, 2011 6:29 AM
    Edited by: anupamsap on Jul 26, 2011 4:10 PM

Maybe you are looking for