ABAP in Transformation

I want to put a select condition on the  source fields? how can i declare that ?  like we can declare for looking up from master data tables for example
SELECT COUNT( * )
INTO <variable>
FROM /BIC/XXXXX
WHERE 0employee = SOURCE_FIELDS-employee.
How can I declare?
Thanks in advance..!

I guess I'm not quite sure what you're asking...If you're asking for the code inside the LOOP statement in the Start Routine, then it would be:
LOOP AT source_package
  ASSIGNING <source_fields>.
  SELECT
    count( * )
  INTO
    l_cnt
  FROM
    /bic/xxxxx
  WHERE
    employee = <source_fields>-employee.
  IF sy-subrc EQ 0.
    <source_fields>-rec_cnt = l_cnt.
  ELSE.
    CLEAR <source_fields>-rec_cnt.
  ENDIF.
ENDLOOP.
Or, are you looking for code in a Characteristic Routine, where you'd map 'employee' to the count Key Figure?
SELECT
  count( * )
INTO
  l_cnt
FROM
  /bic/xxxxx
WHERE
  employee = source_fields-employee.
IF sy-subrc EQ 0.
   result = l_cnt.
ELSE.
  CLEAR result.
ENDIF.

Similar Messages

  • Error in ABAP XSLT transformation

    Hi,
    Im trying to upload some data from XML to abap. But Im getting an error while transforming xml data to internal table.
    Here are the details.
    XML:
    <?xml version="1.0" encoding="ISO-8859-1" ?>
      <!--  Edited by XMLSpy® -->
    <?xml-stylesheet type="text/xsl" href="ABAP1.xsl"?>
    <conceptRevDecisionXml>
    <projectInfo>
    <projectId>P000755</projectId>
    <stage>CON</stage>
    <country>Ethiopia</country>
    <region>AFRICA</region>
    <teamleader>Priya Agarwal</teamleader>
    <teamleaderfirstname>Priya</teamleaderfirstname>
    <teamleaderlastname>Agarwal</teamleaderlastname>
    <actionType>X</actionType>
    </projectInfo>
    </conceptRevDecisionXml>
    XSLT: Transformation
    <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:strip-space>
    <xsl:template match="/">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
          <asx:values>
            <PROJID>
              <xsl:apply-templates select="//conceptRevDecisionXml"></xsl:apply-templates>
            </PROJID>
          </asx:values>
        </asx:abap>
    </xsl:template>
    <xsl:template match="conceptRevDecisionXml">
          <xsl:for-each select="projectInfo">
           <xsl:value-of select="projectId"></xsl:value-of>
           <xsl:value-of select="stage"></xsl:value-of>
           <xsl:value-of select="country "></xsl:value-of>
           <xsl:value-of select="region"></xsl:value-of>
           <xsl:value-of select="teamleader"></xsl:value-of>
           <xsl:value-of select="teamleaderfirstname"></xsl:value-of>
           <xsl:value-of select="teamleaderlastname"></xsl:value-of>
            <xsl:value-of select="actionType"></xsl:value-of>
            </xsl:for-each>
        </xsl:template>
    </xsl:transform>
    Once I run the program...Im getting an error saying...ABAP XML Formatting error in XML node..
    Im new to ABAP-XML parsing..Pls help me where Im going wrong..
    Thanks in advance.
    Regards,
    Priya

    Hi Priya,
    you can try with the below,
    1) Create a local ITAB with the structure of the XML,
    TYPES: BEGIN OF t_data,
            projectid           TYPE char30,
            stage               TYPE char30,
            country             TYPE char30,
            region              TYPE char30,
            teamleader          TYPE char30,
            teamleaderfirstname TYPE char30,
            teamleaderlastname  TYPE char30,
            actiontype          TYPE char30,
           END OF t_data.
    2) Create an XSLT prog in "STRANS" with the below code,
    <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="/">
    <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
    <asx:values>
    <L_DATA>
    <xsl:apply-templates select="//projectInfo"/>
    </L_DATA>
    </asx:values>
    </asx:abap>
    </xsl:template>
    <xsl:template match="projectInfo">
    <conceptRevDecisionXml>
    <PROJECTID>
    <xsl:value-of select="projectId"/>
    </PROJECTID>
    <STAGE>
    <xsl:value-of select="stage"/>
    </STAGE>
    <COUNTRY>
    <xsl:value-of select="country"/>
    </COUNTRY>
    <REGION>
    <xsl:value-of select="region"/>
    </REGION>
    <TEAMLEADER>
    <xsl:value-of select="teamleader"/>
    </TEAMLEADER>
    <TEAMLEADERFIRSTNAME>
    <xsl:value-of select="teamleaderfirstname"/>
    </TEAMLEADERFIRSTNAME>
    <TEAMLEADERLASTNAME>
    <xsl:value-of select="teamleaderlastname"/>
    </TEAMLEADERLASTNAME>
    <ACTIONTYPE>
    <xsl:value-of select="actionType"/>
    </ACTIONTYPE>
    </conceptRevDecisionXml>
    </xsl:template>
    </xsl:transform>
    3) Call the transformation as shown below,
    CALL TRANSFORMATION zxslt_project ---> "Name of the XSLT prog created above
    SOURCE XML l_xml_str                           ---> Source XML string
    RESULT l_data = l_data.                          ---> ITAB as in step 1 above
    Regards,
    Chen

  • ABAP Simple Transformation - How to save XML to file with CL_FX_WRITER?

    Hello!
    When calling a Simple Transformation program for transformation from ABAP to XML, it is possible to specify RESULT XML rxml as a class reference variable of type CL_FX_WRITER, which points to an XML writer.
    How to handle CL_FX_WRITER in order to save XML to a file?
    Thanks and regards,
    Andrey

    Hallo Rainer!
    Many thanks. I have checked the profile parameter ztta/max_memreq_MB and it is set to 2048 MB in the development system. I hope, that won't be less on the client's machine. The only thing I did not clearly explained, is that I need to write XML data to the server. I am so sorry. Downloading to the local PC is very helpful for me also, but only for the test purposes.
    Regards,
    Andrey

  • ABAP XSLT transformation - XML to deep structure/nested standard table

    Hi all,
    I was struggling with this topic recently and couldn't find a single working example or description of a possible solution. So now that I've sorted it out, I did a quick example to elustrate how it works. Here is the code with XML embeded in it and the XSLT follows:
    <HR>
    <PRE>
    *& Report  Z_XML2ABAP
    *& Author: Jayanta Roy
    *& Date: 03/02/2010
    REPORT  z_xml2abap.
    DATA input_xml TYPE string.
    TYPES: BEGIN OF t_address,
            house_no TYPE string,
            street_name TYPE string,
            city_name TYPE string,
            phone_no TYPE string,
          END OF t_address.
    TYPES: t_addresses TYPE STANDARD TABLE OF t_address with NON-UNIQUE KEY house_no.
    TYPES: BEGIN OF t_person,
            firstname TYPE string,
            surname TYPE string,
            addresses TYPE t_addresses,
          END OF t_person.
    input_xml = '&lt;Friends&gt;' &&
      '&lt;People&gt;' &&
        '&lt;FirstName&gt;Homer&lt;/FirstName&gt;' &&
        '&lt;Surname&gt;Simpson&lt;/Surname&gt;' &&
          '&lt;Address&gt;' &&
            '&lt;HouseNo&gt;123&lt;/HouseNo&gt;' &&
            '&lt;Street&gt;Evergreen Terrace&lt;/Street&gt;' &&
            '&lt;City&gt;Springfield&lt;/City&gt;' &&
            '&lt;PhoneNo&gt;011212321&lt;/PhoneNo&gt;' &&
          '&lt;/Address&gt;' &&
          '&lt;Address&gt;' &&
            '&lt;HouseNo&gt;7G&lt;/HouseNo&gt;' &&
            '&lt;Street&gt;Neuclear Power Plant&lt;/Street&gt;' &&
            '&lt;City&gt;Spring Field&lt;/City&gt;' &&
            '&lt;PhoneNo&gt;911&lt;/PhoneNo&gt;' &&
          '&lt;/Address&gt;' &&
      '&lt;/People&gt;' &&
      '&lt;People&gt;' &&
         '&lt;FirstName&gt;Bart&lt;/FirstName&gt;' &&
         '&lt;Surname&gt;Simpson&lt;/Surname&gt;' &&
           '&lt;Address&gt;' &&
             '&lt;HouseNo&gt;123x&lt;/HouseNo&gt;' &&
             '&lt;Street&gt;Evergreen Terracex&lt;/Street&gt;' &&
             '&lt;City&gt;Springfieldx&lt;/City&gt;' &&
             '&lt;PhoneNo&gt;011212321x&lt;/PhoneNo&gt;' &&
           '&lt;/Address&gt;' &&
       '&lt;/People&gt;' &&
    '&lt;/Friends&gt;' .
    DATA lt_person TYPE STANDARD TABLE OF t_person.
    TRY.
        CALL TRANSFORMATION xslt_person
        SOURCE XML input_xml
        RESULT  all_people = lt_person.
      CATCH cx_root.
        WRITE 'Problemo!'.
    ENDTRY.
    WRITE 'Now, debug the program to see the values read from the XML'.
    </PRE>
    <HR>
    and here is the XSLT Transformation program (xslt_person):
    <HR>
    <PRE>
    &lt;xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                        xmlns:sap="http://www.sap.com/sapxsl" version="1.0"&gt;
      &lt;xsl:strip-space elements="*"/&gt;
      &lt;xsl:template match="/"&gt;
        &lt;asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"&gt;
          &lt;asx:values&gt;
            &lt;ALL_PEOPLE&gt;
              &lt;xsl:apply-templates select="//People"/&gt;
            &lt;/ALL_PEOPLE&gt;
          &lt;/asx:values&gt;
        &lt;/asx:abap&gt;
      &lt;/xsl:template&gt;
      &lt;xsl:template match="People"&gt;
        &lt;ALLMYFRIENDS&gt;  &lt;!This element name is not relevent... needed to just group the loop&gt;
          &lt;FIRSTNAME&gt;
            &lt;xsl:value-of select="FirstName"/&gt;
          &lt;/FIRSTNAME&gt;
          &lt;SURNAME&gt;
            &lt;xsl:value-of select="Surname"/&gt;
          &lt;/SURNAME&gt;
          &lt;ADDRESSES&gt;
            &lt;xsl:for-each select="Address"&gt;
              &lt;ADDRESS&gt; &lt;!This element name is not relevent... needed to just group the loop&gt;
                &lt;HOUSE_NO&gt;
                  &lt;xsl:value-of select="HouseNo"/&gt;
                &lt;/HOUSE_NO&gt;
                &lt;STREET_NAME&gt;
                  &lt;xsl:value-of select="Street"/&gt;
                &lt;/STREET_NAME&gt;
                &lt;CITY_NAME&gt;
                  &lt;xsl:value-of select="City"/&gt;
                &lt;/CITY_NAME&gt;
                &lt;PHONE_NO&gt;
                  &lt;xsl:value-of select="PhoneNo"/&gt;
                &lt;/PHONE_NO&gt;
              &lt;/ADDRESS&gt;
            &lt;/xsl:for-each&gt;
          &lt;/ADDRESSES&gt;
        &lt;/ALLMYFRIENDS&gt;
      &lt;/xsl:template&gt;
    &lt;/xsl:transform&gt;
    </PRE>
    <HR>
    HTH,
    Jayanta.

    thanks a LOT Jayanta..
    I was looking for an XSLT example for some time.. this one atleast got me started in the right direction..
    THANKS

  • 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

  • XML to ABAP Structure transformation

    Hi SAP,
       Can anyone tell how to transform from XML to ABAP structure. The ABAP structure i'm getting in runtime.
    Please do the needful.
    Thanks in advance
    Vinod.

    using XSLT or ST you can do that check this thread
    https://forums.sdn.sap.com/click.jspa?searchID=5585367&messageID=1661688
    and also search ABAP forum for more code samples

  • Start Routine (ABAP) in Transformations

    Hi Experts,
    As i am new to BW please update me with the required ABAP Code or atlease with the skeleton  Code
    Source & target fields
    Emp_ID       ZEMP_ID  (CHAR)
    Start Date:  ZESTA_DT (DATS)
    End Date  :  ZEEND_DT (DATS)
    My requirment is to write a start routine that split the record in to 2
    Emp_ID-Start_Date-Termination Date
    0001----01/01/2005---01/01/2008
    0002----01/01/2007---
    (Termination date will be blank if emp is still working)
    As per my requirment i would like to see data in DSO as
    Emp_ID-Start_Date-Termination Date
    0001----01/01/2005---
    0001----01/01/2005---01/01/2008
    0002----01/01/2007---
    I want to split the records of an employee
    Please let me know if u need any information
    Thanks

    Hi bw learner,
    In Update rules, at any keyfigure, you write a routine with return table check box selected.
    Write the below code.
    first of all you need to declare a internal table of type data target
    (Example: DATA: ITAB LIKE /BIC/FZ_CUBE). here i consider Z_CUBE as data target.
    then loop the DATA_PACKAGE.
    loop at DATA_PACKAGE.
    transfer corresponding values from DATA_PACKAGE to itab.
    then assign itab-Termination Date = ZEEND_DT.
    append ITAB to RESULT_TABLE.=
    endloop.
    By this, whatever the records that are present in the RESULT_TABLE will be added into the Data target.
    I hope you can handle now.
    Regards,
    S P.

  • ABAP XSLT Transformation using element include

    Hi there,
    I am trying to convert data from SAP-DATA -> DOM over XSLT to a Stream.
    For achieving this I have to use certain modularized XSL-Files which will later be accessible over http. At the moment however, those files are on my local hard drive (client) only. I tried to access these files using:
    <xsl:transform version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:sap="http://www.sap.com/sapxsl"
    >
    *<xsl:include href="D:\XSL\include.xsl"/>*
    <xsl:strip-space elements="*"/>
    <xsl:template match="/">
    </xsl:template>
    </xsl:transform>
    I get the message "D:\XSL\include.xsl doesn't exist" when checking the syntax. When I test this in my OS however, it works perfectly. Being an SAP- and XML-Newbie my question is the following: Does SAP not know my hard drive mappings while I'm in a transformation or can i only access directories over al11/http. Or is it complete nonsense at all? 
    Regards, Lukas
    Edited by: Lukas Weigelt on Jun 9, 2010 4:18 PM

    Hi,
    according to:
    >
    Michal_Krawczyk_PIXI wrote:
    > as per:
    > http://help.sap.com/saphelp_470/helpdata/EN/84/2e4d3ce624b800e10000000a114084/frameset.htm
    > "The href attribute no longer applies in this case."
    it appears the include element only works with the repository.... I tried
    <xsl:include sap:name="<Name_of_the_Transformation_in_Repository>"/>
    and it works.
    However this would mean, all includes i have to make have to be imported to the repository. If that's really the case, it'll be a huge problem, because the xsl-files i want to include are outside of my reference
    Regards, Lukas

  • ABAP XML transformation problem

    Hi all,
    I am creating an XML based on a custom transformation I have made. The problem I have is that my variables type P decimals 2 are passed to the XML with just one decimal place, but I need two decimal places.
    I was investigating and SAP documentation says that it should be passed with 2 decimal places according to the conversion, however it is not working in my case.
    The only solution I found is making those variables type C, but I really want a solution that allows me keep my fields as type P.
    Thanks in advance

    Hi,
    That's strange, it works well on my computer. I guess you should check SAP notes or contact SAP support.
    Sandra

  • ABAP Simple Transformations

    Hi,
    does anyone know if Simple Transformations can be used to trasfer an XML data to an object? (instance of a class?)
    all examples I saw are for structs and tables only, and not object references..
    Thanks,
    Mirit.

    Here's the sample code I used to check the ST:
    the object class (includes the if_serializabe_object):
    class Z_PERSON definition
      public
      final
      create public .
    " public components of class Z_PERSON
    " do not include other source files here!!!
    public section.
      interfaces IF_SERIALIZABLE_OBJECT .
      interfaces Z_IF_ENTITY .
      interfaces Z_IF_PAYABLE .
      data SIMPLE_STRING type STRINGVAL .
      methods WRITE_PROG .
    protected section.
    " protected components of class Z_PERSON
    " do not include other source files here!!!
    private section.
    " private components of class Z_PERSON
    " do not include other source files here!!!
    ENDCLASS.
    CLASS Z_PERSON IMPLEMENTATION.
    ENDCLASS.
    the ST code:
    '<'?sap.transform simple?'>'
    '<'tt:transform xmlns:tt="http://www.sap.com/transformation-templates"'>'
      '<'tt:root name="ROOT" /'>'
      '<'tt:template'>'
        '<'tt:deserialize'>'
          '<'sapesourcing'>'
           ' <'objects'>'
              '<'object'>'
                '<'fields'>'
                   '<'PERSON_NAME tt:value-ref=".ROOT.SIMPLE_STRING"/'>'
                '<'/fields'>'
              '<'/object'>'
            '<'/objects'>'
          '<'/sapesourcing'>'
        '<'/tt:deserialize'>'
      '<'/tt:template'>'
    '<'/tt:transform'> '
    the report which runs the transformation:
    REPORT  z_test_simple_transformation.
    TYPES: BEGIN OF ls_xml_line,    
                  data(256) TYPE x,
                END OF ls_xml_line.
    DATA:
          exc TYPE REF TO cx_root,
          lv_ixml TYPE REF TO if_ixml,
          lv_xml_stream_factory TYPE REF TO  if_ixml_stream_factory,
          lv_xml_input_stream TYPE REF TO if_ixml_istream,
          lv_xml_output_stream TYPE REF TO if_ixml_ostream,
          lv_input_filepath TYPE string,
              lv_output_filepath TYPE string,
              lv_input_filelength TYPE i,
              lv_output_filelength TYPE i,
             lt_input_xml_table TYPE TABLE OF ls_xml_line,
             lt_output_xml_table TYPE TABLE OF ls_xml_line.
    TRY.
        lv_output_filepath = 'C:\files\AmexGL1025\partial_GL1025_BoConverted_ABAP.xml'.
        cl_gui_frontend_services=>gui_upload( EXPORTING filename   = lv_output_filepath
                                                        filetype   = 'BIN'
                                              IMPORTING filelength =  lv_output_filelength
                                              CHANGING  data_tab   = lt_input_xml_table ).
        lv_ixml = cl_ixml=>create( ).
        lv_xml_stream_factory = lv_ixml->create_stream_factory( ).
        lv_xml_input_stream =  lv_xml_stream_factory->create_istream_itable( table = lt_input_xml_table   size = lv_output_filelength ).
        DATA lo_testing_object TYPE REF TO z_person.
        CREATE OBJECT lo_testing_object TYPE z_person.
        CALL TRANSFORMATION Z_simple_transformation_test SOURCE XML lv_xml_input_stream RESULT root = lo_testing_object .
      CATCH cx_root INTO exc.
        DATA lv_error_message TYPE string.
        lv_error_message = exc->get_text( ).
        WRITE lv_error_message.
    ENDTRY.
    I don't know why the indentation here is so awful.
    If you can see what the bug is- it will be great...
    Thanks!
    Edited by: Mirit Mondani on Mar 16, 2010 6:05 PM
    Edited by: Mirit Mondani on Mar 16, 2010 6:07 PM

  • Simple Transformation XML to ABAP   - error CX_ST_MATCH_ELEMENT

    Hi all,
    I have a problem with a transformation from xml to abap. My XML file (taken from a pdf file) is
    <?xml version="1.0" encoding="iso-8859-1" ?>
    - <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
    - <asx:values>
      <NETWORK>E60000000000</NETWORK>
      <OPERAZIONE>0010</OPERAZIONE>
    - <TABELLA>
    - <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">
      <MANDT>300</MANDT>
      <NETWORK>E60000000000</NETWORK>
      <OPERAZIONE>0010</OPERAZIONE>
      <ID_ACT>1</ID_ACT>
      <DESC_ACT>ATTIVITÀ1</DESC_ACT>
      <LONG_TXT></LONG_TXT>
      <MAKE_BUY></MAKE_BUY>
      <WP></WP>
      <EVENTO_TECH></EVENTO_TECH>
      <TIPO_LEGAME></TIPO_LEGAME>
      <CONSEGNA></CONSEGNA>
      </ROW>
    - <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">
      <MANDT>300</MANDT>
      <NETWORK>E60000000000</NETWORK>
      <OPERAZIONE>0010</OPERAZIONE>
      <ID_ACT>2</ID_ACT>
      <DESC_ACT>ATTIVITÀ2</DESC_ACT>
      <LONG_TXT>ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2</LONG_TXT>
      <MAKE_BUY>M</MAKE_BUY>
      <WP></WP>
      <EVENTO_TECH></EVENTO_TECH>
      <TIPO_LEGAME></TIPO_LEGAME>
      <CONSEGNA></CONSEGNA>
      </ROW>
      </TABELLA>
      </asx:values>
      </asx:abap>
    my transformation is
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
      <tt:root name="ROOT"></tt:root>
      <tt:root name="NETWORK"></tt:root>
      <tt:root name="OPERAZIONE"></tt:root>
      <tt:template>
      <abap>
        <values>
           <network>
               <tt:value ref="NETWORK"></tt:value>
           </network>
           <operazione>
               <tt:value ref="OPERAZIONE"></tt:value>
           </operazione>
           <tabella>
              <tt:loop ref=".ROOT" name="line">
                <mandt>
                  <tt:value ref="$line.mandt"></tt:value>
                </mandt>
                <network>
                  <tt:value ref="$line.network"></tt:value>
                </network>
                <OPERAZIONE>
                  <tt:value ref="$line.OPERAZIONE"></tt:value>
                </OPERAZIONE>
                <ID_ACT>
                  <tt:value ref="$line.ID_ACT"></tt:value>
                </ID_ACT>
                <DESC_ACT>
                  <tt:value ref="$line.DESC_ACT"></tt:value>
                </DESC_ACT>
                <LONG_TXT>
                  <tt:value ref="$line.LONG_TXT"></tt:value>
                </LONG_TXT>
                <MAKE_BUY>
                  <tt:value ref="$line.MAKE_BUY"></tt:value>
                </MAKE_BUY>
                <WP>
                  <tt:value ref="$line.WP"></tt:value>
                </WP>
                <EVENTO_TECH>
                  <tt:value ref="$line.EVENTO_TECH"></tt:value>
                </EVENTO_TECH>
                <TIPO_LEGAME>
                  <tt:value ref="$line.TIPO_LEGAME"></tt:value>
                </TIPO_LEGAME>
                <CONSEGNA>
                  <tt:value ref="$line.CONSEGNA"></tt:value>
                </CONSEGNA>
             </tt:loop>
            </tabella>
          </values>
        </abap>
      </tt:template>
    </tt:transform>
    when I execute my code
    the system dump with this error
    ST_MATCH_FAIL
    excep.  CX_ST_MATCH_ELEMENT
      TRY.
                CALL TRANSFORMATION ('ZT_NETWORK')
                SOURCE XML lv_xml_data_string
                RESULT  network = l_network
                        operazione = l_operazione
                        root = it_data_tmp.
              CATCH cx_sy_conversion_data_loss .
              CATCH cx_xslt_exception INTO xslt_error.
                xslt_message = xslt_error->get_text( ).
                WRITE:/ xslt_message .
            ENDTRY.
    Any help?
    thanks
    enzo

    Enzo Porcasi wrote:
    > I have a problem with a transformation from xml to abap. My XML file (taken from a pdf file) is
    >
    <?xml version="1.0" encoding="iso-8859-1" ?>
    >  <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
    >  <asx:values>
    Your XML is strange, it looks like a mix of pdf form content (xfa) and identity transformation (asx).
    Could you explain more ?
    Anyway, I tried to find out the errors (not only cx_st_match_element, that was just a catch missing), it works with the following program. Here are the main issues I have found :
    - always catch exception class cx_st_error when you use simple transformations (it contains cx_st_match_element and all other simple transformation exceptions)
    - xml "asx:abap" and "asx:values" in your input XML are useless, they are only used by identity transformation ("ID"); you may keep them if you want, but I advise you to see why they are in the xml !
    - Use same case in your tags (if xml contains  in the transformation so that it corresponds to the input XML
    - I renamed all abap names with prefix ABAP_ so that to clearly differentiate xml tags and abap field names (so that it is more easy to understand, for every sdn reader; I hope it will help as I didn't find many threads in the forum).
    Simple transformation :
    <?sap.transform simple?>
    <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
      <tt:root name="ABAP_NETWORK"></tt:root>
      <tt:root name="ABAP_OPERAZIONE"></tt:root>
      <tt:root name="ABAP_TABELLA"></tt:root>
      <tt:template>
        <ROOT>
          <NETWORK>
            <tt:value ref=".ABAP_NETWORK"></tt:value>
          </NETWORK>
          <OPERAZIONE>
            <tt:value ref=".ABAP_OPERAZIONE"></tt:value>
          </OPERAZIONE>
          <TABELLA>
            <tt:loop ref=".ABAP_TABELLA" name="line">
              <ROW>
                <MANDT>
                  <tt:value ref="$line.ABAP_MANDT"></tt:value>
                </MANDT>
                <NETWORK>
                  <tt:value ref="$line.ABAP_NETWORK"></tt:value>
                </NETWORK>
                <OPERAZIONE>
                  <tt:value ref="$line.ABAP_OPERAZIONE"></tt:value>
                </OPERAZIONE>
                <ID_ACT>
                  <tt:value ref="$line.ABAP_ID_ACT"></tt:value>
                </ID_ACT>
                <DESC_ACT>
                  <tt:value ref="$line.ABAP_DESC_ACT"></tt:value>
                </DESC_ACT>
                <LONG_TXT>
                  <tt:value ref="$line.ABAP_LONG_TXT"></tt:value>
                </LONG_TXT>
                <MAKE_BUY>
                  <tt:value ref="$line.ABAP_MAKE_BUY"></tt:value>
                </MAKE_BUY>
                <WP>
                  <tt:value ref="$line.ABAP_WP"></tt:value>
                </WP>
                <EVENTO_TECH>
                  <tt:value ref="$line.ABAP_EVENTO_TECH"></tt:value>
                </EVENTO_TECH>
                <TIPO_LEGAME>
                  <tt:value ref="$line.ABAP_TIPO_LEGAME"></tt:value>
                </TIPO_LEGAME>
                <CONSEGNA>
                  <tt:value ref="$line.ABAP_CONSEGNA"></tt:value>
                </CONSEGNA>
              </ROW>
            </tt:loop>
          </TABELLA>
        </ROOT>
      </tt:template>
    </tt:transform>
    Program and XML included :
    REPORT  zsro2.
    DATA l_network TYPE string.
    DATA l_operazione TYPE string.
    DATA : BEGIN OF lt_data_tmp OCCURS 0,
             abap_mandt      TYPE string,
             abap_network    TYPE string,
             abap_operazione TYPE string,
             abap_id_act     TYPE string,
             abap_desc_act   TYPE string,
             abap_long_txt   TYPE string,
             abap_make_buy   TYPE string,
             abap_wp         TYPE string,
             abap_evento_tech TYPE string,
             abap_tipo_legame TYPE string,
             abap_consegna   TYPE string,
           END OF lt_data_tmp.
    DATA xslt_error TYPE REF TO cx_xslt_exception.
    DATA lo_st_error TYPE REF TO cx_st_error.
    DATA lv_xml_data_string TYPE string.
    DATA xslt_message TYPE string.
    DEFINE conc.
      concatenate lv_xml_data_string &1 into lv_xml_data_string.
    END-OF-DEFINITION.
    *conc '<?xml version="1.0" encoding="iso-8859-1" ?>'.
    *conc '<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">'.
    *conc '  <asx:values>'.
    conc ' <ROOT>'.
    conc '    <NETWORK>E60000000000</NETWORK> '.
    conc '    <OPERAZIONE>0010</OPERAZIONE> '.
    conc '    <TABELLA>'.
    conc '      <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">'.
    conc '        <MANDT>300</MANDT> '.
    conc '        <NETWORK>E60000000000</NETWORK> '.
    conc '        <OPERAZIONE>0010</OPERAZIONE> '.
    conc '        <ID_ACT>1</ID_ACT> '.
    conc '        <DESC_ACT>ATTIVITÀ1</DESC_ACT> '.
    conc '        <LONG_TXT></LONG_TXT> '.
    conc '        <MAKE_BUY></MAKE_BUY> '.
    conc '        <WP></WP> '.
    conc '        <EVENTO_TECH></EVENTO_TECH> '.
    conc '        <TIPO_LEGAME></TIPO_LEGAME> '.
    conc '        <CONSEGNA></CONSEGNA> '.
    conc '      </ROW>'.
    conc '      <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">'.
    conc '        <MANDT>300</MANDT> '.
    conc '        <NETWORK>E60000000000</NETWORK> '.
    conc '        <OPERAZIONE>0010</OPERAZIONE> '.
    conc '        <ID_ACT>2</ID_ACT> '.
    conc '        <DESC_ACT>ATTIVITÀ2</DESC_ACT> '.
    conc '        <LONG_TXT>ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2</LONG_TXT> '.
    conc '        <MAKE_BUY>M</MAKE_BUY> '.
    conc '        <WP></WP> '.
    conc '        <EVENTO_TECH></EVENTO_TECH> '.
    conc '        <TIPO_LEGAME></TIPO_LEGAME> '.
    conc '        <CONSEGNA></CONSEGNA> '.
    conc '      </ROW>'.
    conc '    </TABELLA>'.
    conc ' </ROOT>'.
    *conc '  </asx:values>'.
    *conc '</asx:abap>'.
    DATA lv_xml_data_string_2 TYPE string.
    TRY.
        CALL TRANSFORMATION zsro
              SOURCE
                XML lv_xml_data_string
              RESULT
                abap_network    = l_network
                abap_operazione = l_operazione
                abap_tabella    = lt_data_tmp[].
      CATCH cx_sy_conversion_data_loss .
      CATCH cx_st_error INTO lo_st_error.
        xslt_message = lo_st_error->get_text( ).
        WRITE:/ xslt_message .
      CATCH cx_xslt_exception INTO xslt_error.
        xslt_message = xslt_error->get_text( ).
        WRITE:/ xslt_message .
    ENDTRY.
    BREAK-POINT.

  • XSLT-ABAP using Call Transformation

    Hello Friends,
    I am new to this XSLT-ABAP transformation. I went through the blogs and forums and got a fair bit of idea on this. Now, i am trying to create a simple program/ xslt transformation to test the scenario. Once this is successfull i need to implement this in our project.
    I am not sure, where and what i am doing wrong. Kindly check the below given XSLT/ XML/ ABAP Program and correct me.
    My XML File looks as given below:
      <?xml version="1.0" encoding="utf-8" ?>
    - <List>
    - <ITEM>
      <ITEMQUALF>ITEM1</ITEMQUALF>
      <MATERIAL>MAT1</MATERIAL>
      </ITEM>
    - <ITEM>
      <ITEMQUALF>ITEM2</ITEMQUALF>
      <MATERIAL>MAT2</MATERIAL>
      </ITEM>
    - <ITEM>
      <ITEMQUALF>ITEM3</ITEMQUALF>
      <MATERIAL>MAT3</MATERIAL>
      </ITEM>
      </List>
    My XSLT Transformation looks as given below:
    <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="*">
        <List>
          <xsl:for-each select="ITEM">
            <xsl:element name="ITEM">
              <xsl:element name="ITEMQUALF">
                <xsl:value-of select="ITEMQUALF"/>
              </xsl:element>
              <xsl:element name="MATERIAL">
                <xsl:value-of select="MATERIAL"/>
              </xsl:element>
            </xsl:element>
          </xsl:for-each>
        </List>
      </xsl:template>
    </xsl:transform>
    My ABAP program looks as below:
    REPORT  ztest_ram.
    TYPES:
      BEGIN OF ty_test,
        itemqualf TYPE char10,
        material  TYPE char10,
      END OF ty_test,
      ty_t_test TYPE STANDARD TABLE OF ty_test.
    DATA:
      l_xml       TYPE REF TO cl_xml_document,
      t_test      TYPE ty_t_test,
      wa_person   TYPE LINE OF ty_t_test,
      t_xml_out   TYPE string,
      v_retcode   TYPE sy-subrc,
      v_totalsize TYPE i.
    DATA: gs_rif_ex     TYPE REF TO cx_root,
          gs_var_text   TYPE string.
    * Create object
    CREATE OBJECT l_xml.
    * Call method to import data from file
    CALL METHOD l_xml->import_from_file
      EXPORTING
        filename = 'C:\xml\xml_test.xml'
      RECEIVING
        retcode  = v_retcode.
    * Call method to Render into string
    CALL METHOD l_xml->render_2_string
      IMPORTING
        retcode = v_retcode
        stream  = t_xml_out
        size    = v_totalsize.
    * Call Transformation
    TRY.
        CALL TRANSFORMATION (`ZXSLT_RAM`)
                SOURCE XML t_xml_out
                RESULT     outtab = t_test.
      CATCH cx_root INTO gs_rif_ex.
        gs_var_text = gs_rif_ex->get_text( ).
        MESSAGE gs_var_text TYPE 'E'.
    ENDTRY.
    When i run this ABAP program to fetch the data from XML in to Internal table, i get the error message:
    Incorrect element List for XML-ABAP transformation
    I am really not sure how to proceed further. Could any one help me on this?
    Note: Please do not paste the same links, as i have gone through most of them.
    Thank you.
    Best Regards,
    Ram.

    UPDATE, works now.
    ABAP:
    method IF_HTTP_EXTENSION~HANDLE_REQUEST.
    *THIS METHOD IS AN HTTP INTERFACE FOR A
    *SICF WEB SERVICE HANDLER. IT RECEIVES AN XML PAYLOAD,
    *READS IT INTO AN XSTRING, THEN TRANSFORMS THE
    *XSTRING INTO ABAP DATA USING AN ABAP XSLT
    *TRANSFORMATION PROGRAM
    *Process incoming xml Request
         data: lxs_request TYPE xstring.
         lxs_request = server->request->get_data( ).
    *BUILD DATA TYPES
    TYPES: BEGIN OF ccw_line,
       field11 TYPE STRING,
       field22 TYPE STRING,
       END OF ccw_line.
    TYPES: BEGIN OF ccw_head,
       field1 TYPE STRING,
       field2 TYPE STRING,
       lines TYPE STANDARD TABLE OF ccw_line WITH DEFAULT KEY,
       END OF ccw_head.
    DATA: ccw_heads type STANDARD TABLE OF ccw_head,
           xccw_heads TYPE ccw_head.
    DATA: ccw_lines TYPE STANDARD TABLE OF ccw_line,
           zccw_lines TYPE ccw_line.
    DATA: lr_transformation_error TYPE REF TO cx_transformation_error.
    DATA: err_text TYPE string.
    *CALL TRANSFORMATION
    TRY.
       CALL TRANSFORMATION zccwpayload_prg
       SOURCE XML lxs_request
       RESULT OUTPUT = ccw_heads.   "RESULT PARAMETER ("OUTPUT") NAME MUST EQUAL TRANSFORMED XML ROOT eg <OUTPUT>XML DATA...</OUTPUT>
    * RESULT XML my_xml_result.    "THIS CAN BE USED IF YOU WANT TO RETURN XML INSTEAD OF ABAP DATA
       CATCH cx_xslt_exception INTO lr_transformation_error.
       err_text = lr_transformation_error->get_text( ).
       server->response->set_cdata( err_text ).
    ENDTRY.
    *SAVE TO DATABASE
    *BUILD RESPONSE
    call METHOD server->response->set_cdata
         EXPORTING
             DATA = err_text.
    endmethod.
    XML SOURCE:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <HEADS> <!--MATCH ON THIS IN XSLT!!!-->
          <HEAD><!-- FOR-EACH ON THIS-->
                <headval1>myHeader</headval1>
                <LINES>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                </LINES>
          </HEAD>
          <HEAD>
                <headval1>myHeader</headval1>
                <LINES>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                </LINES>
          </HEAD>
          <HEAD>
                <headval1>myHeader</headval1>
                <LINES>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                      <Line>
                            <lineval1>myLine</lineval1>
                      </Line>
                </LINES>
          </HEAD>
    </HEADS>
    XSLT PROGRAM:
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
       <xsl:output encoding="UTF-8" indent="yes" method="xml"/>
       <xsl:template match="/HEADS"><!--This should be the root name of your source XML eg <HEADS>xml data...</HEADS> if you don't have a single root match on "/" -->
         <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
           <asx:values>
             <OUTPUT><!--MUST be all caps, MUST match CALL TRANSFORMATION RESULTS parameter name (RESULTS OUTPUT = myABAPDataStructure), and MUST not contain an underscore!!!-->
               <xsl:for-each select="HEAD">
                 <HEAD>            <!--ALL CAPS!!!-->
                   <FIELD1>
                     <xsl:value-of select="headval1"/>
                   </FIELD1>
                   <FIELD2>
                     <xsl:value-of select="headval1"/>
                   </FIELD2>
                   <LINES>
                     <xsl:for-each select="LINES/Line">
                       <LINE>
                         <FIELD11>
                           <xsl:value-of select="lineval1"/>
                         </FIELD11>
                         <FIELD22>
                           <xsl:value-of select="lineval1"/>
                         </FIELD22>
                       </LINE>
                     </xsl:for-each>
                   </LINES>
                 </HEAD>
               </xsl:for-each>
             </OUTPUT>
           </asx:values>
         </asx:abap>
       </xsl:template>
    </xsl:transform>
    SAMPLE OF TRANSFORMED XML (MATCHES ABAP DATA STRUCTURE):
    IF YOU TEST () YOUR TRANSFORMATION (IN XSLT_TOOL) WITH THE SAMPLE FILE AND IT DOESN'T LOOK LIKE THIS, YOUR TRANSFORMATION WILL FAIL. TAGS MUST BE ALL CAPS!!!!
    <?xml version="1.0" encoding="UTF-8"?>
    <asx:abap version = "1.0" xmlns:asx = "http://www.sap.com/abapxml">
          <asx:values>
                <OUTPUT>
                      <HEAD>
                            <FIELD1>myHeader</FIELD1>
                            <FIELD2>myHeader</FIELD2>
                            <LINES>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                            </LINES>
                      </HEAD>
                      <HEAD>
                            <FIELD1>myHeader</FIELD1>
                            <FIELD2>myHeader</FIELD2>
                            <LINES>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                            </LINES>
                      </HEAD>
                      <HEAD>
                            <FIELD1>myHeader</FIELD1>
                            <FIELD2>myHeader</FIELD2>
                            <LINES>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                                  <LINE>
                                        <FIELD11>myLine</FIELD11>
                                        <FIELD22>myLine</FIELD22>
                                  </LINE>
                            </LINES>
                      </HEAD>
                </OUTPUT>
          </asx:values>
    </asx:abap>

  • ABAP Program that generates XML and calls an XSLT transformation,

    Hello,
    I am creating a program that creates some XML output, and I am using STRANS to create a transformation.
    The file created looks like below before transformation.
      <?xml version="1.0" encoding="utf-8" ?>
    - <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
    - <asx:values>
    - <EMPLOYEE_DATA>
    - <item>
         <EMPLOYEE_ID>00000010</EMPLOYEE_ID>
        <FIRSTNAME>Joe</FIRSTNAME>
        <SURNAME>Bloggs</SURNAME>
        <DOB>1940-11-10</DOB>
        <SALARY>200000.0</SALARY>
      </item>
    <item>
      <EMPLOYEE_ID>00000055</EMPLOYEE_ID>
      <FIRSTNAME>Lydia</FIRSTNAME>
      <SURNAME>Jones</SURNAME>
      <DOB>1965-03-09</DOB>
      <SALARY>90000.0</SALARY>
      </item>
      </EMPLOYEE_DATA>
      </asx:values>
      </asx:abap>
    I want to make EMPLOYEE_ID  an attribute like in the following
    and what I want to output is:
      <?xml version="1.0" encoding="utf-8" ?>
    - <asx:abap xmlns:asx="http://www.sap.com/abapxml">
    - <asx:values>
    - <EMPLOYEE_DATA>
    - <EMPLOYEE_DETAILS EMPLOYEE_ID="00000010">
       <FIRSTNAME>Joe</FIRSTNAME>
       <SURNAME>Bloggs</SURNAME>
       <DOB>1940-11-10</DOB>
       <SALARY>200000.0</SALARY>
      </EMPLOYEE_DETAILS>
    <EMPLOYEE_DETAILS EMPLOYEE_ID="00000055">
        <FIRSTNAME>Lydia</FIRSTNAME>
        <SURNAME>Jones</SURNAME>
        <DOB>1965-03-09</DOB>
        <SALARY>90000.0</SALARY>
        </EMPLOYEE_DETAILS>
        </EMPLOYEE_DATA>
      </asx:values>
      </asx:abap>
    the XSLT I have cureently produces:
      <?xml version="1.0" encoding="utf-8" ?>
    - <asx:abap xmlns:asx="http://www.sap.com/abapxml">
    - <asx:values>
    - <EMPLOYEE_DATA>
    - <EMPLOYEE_DETAILS EMPLOYEE_ID="00000010">
      <EMPLOYEE_ID>00000010</EMPLOYEE_ID>
      <FIRSTNAME>Joe</FIRSTNAME>
      <SURNAME>Bloggs</SURNAME>
      <DOB>1940-11-10</DOB>
      <SALARY>200000.0</SALARY>
      </EMPLOYEE_DETAILS>
    - <EMPLOYEE_DETAILS EMPLOYEE_ID="00000038">
      <EMPLOYEE_ID>00000038</EMPLOYEE_ID>
      <FIRSTNAME>Fred</FIRSTNAME>
      <SURNAME>Johnson</SURNAME>
      <DOB>1960-12-11</DOB>
      <SALARY>123450.0</SALARY>
      </EMPLOYEE_DETAILS>
    - <EMPLOYEE_DETAILS EMPLOYEE_ID="00000055">
      <EMPLOYEE_ID>00000055</EMPLOYEE_ID>
      <FIRSTNAME>Lydia</FIRSTNAME>
      <SURNAME>Jones</SURNAME>
      <DOB>1965-03-09</DOB>
      <SALARY>90000.0</SALARY>
      </EMPLOYEE_DETAILS>
      </EMPLOYEE_DATA>
      </asx:values>
      </asx:abap>
    But it is repeating the Employee_ID, I want it to start from Firstname, the XSLT I have is:
    <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="node()">
        <xsl:copy>
          <xsl:apply-templates select="node()"/>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="item">
        <EMPLOYEE_DETAILS>
          <xsl:attribute name="EMPLOYEE_ID">
            <xsl:value-of select="EMPLOYEE_ID"/>
          </xsl:attribute>
          <xsl:apply-templates select="node()"/>
        </EMPLOYEE_DETAILS>
      </xsl:template>
    </xsl:transform>
    How do I get it to start from the next node?
    Thanks

    Hi
    I am also trying the similar kind of requirement.
    I am trying to convert XML file in to ABAP using transformations.
    Problem
    When I am trying to execute the Transformation (Selection is Transformation name, Source File Path) using STRANS it is giving the bellow message.
    XSLT Tester                                                                               
    Runtime Errors                                                                               
    Reason          : No valid XSLT program supplied 
    Could you please guide me how to test the Transformation using STRANS
    Thanks
    Nikhil.B

  • XML transformation -- abap

    Hi Experts, I need help with this XSLT for call transformation. I have defined an internal table and intend to use it as a source for Call Tranformation. But I have Problems to defining my internal table to get the resut of the function transformation.(SAP 4.7)
    In my case i have a xml with attibutes and i can't store these attibutes in internal table.
    Hope to hear from any of u soon!
    CMA
    <--XSLT--
    >
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/abapxml" version="1.0">
      <xsl:template match="//Catalog">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml">
          <asx:values>
            <CATALOG>
              <!-- Boucle catalogue -->
              <xsl:for-each select="EnTete">
                <ENTETE>
                  <EMETTEUR>
                    <xsl:value-of select="Emetteur"/>
                  </EMETTEUR>
                  <DATEPUBLICATION>
                    <xsl:value-of select="DatePublication"/>
                  </DATEPUBLICATION>
                  <!-- Suite -->
                  <xsl:for-each select="Univers">
                    <UNIVERS>
                      <LIBELLE>
                        <xsl:value-of select="@libelle"/>
                      </LIBELLE>
                      <OBJREF>
                        <xsl:value-of select="@objref"/>
                      </OBJREF>
                      <OBJID>
                        <xsl:value-of select="@objid"/>
                      </OBJID>
                      <EMETTEUR>
                         <xsl:value-of select="Emetteur"/>
                     </EMETTEUR>
                    </UNIVERS>
                  </xsl:for-each>
                </ENTETE>
              </xsl:for-each>
              <!-- ENTETE-->
            </CATALOG>
          </asx:values>
        </asx:abap>
      </xsl:template>
    </xsl:transform>
    <--XML--
    >
    <?xml version="1.0" encoding="UTF-8"?>
    <asx:abap xmlns:asx="http://www.sap.com/abapxml">
    <asx:values>
    <Catalog>
         <EnTete>
              <Emetteur>UGAP</Emetteur>
              <DatePublication>27/06/2007 09:20:02</DatePublication>
                  <Univers libelle="Nettoyage, hygine et entretien"  objref="08" objid="374417o.bemp" >
                     <Emetteur>UGAP</Emetteur>
                  </Univers>
               <Univers libelle="Nettoyage, hygine et entretien"  objref="09" objid="374417o.bemp" >
                     <Emetteur>UGAP</Emetteur> 
                  </Univers>
    </EnTete>       
    </Catalog>
    </asx:values>
    </asx:abap>
    <--abap--
    >
    TYPES: BEGIN OF t_universs,
           libelle(35),
           objref(35),
           objid(35),
          boutique  TYPE t_boutique,
           END OF t_universs.
    TYPES: t_univers TYPE t_universs OCCURS 0.
                   UNIVERS                 *
    TYPES: BEGIN OF t_entetes,
                Emetteur(20),
                DatePublication(30),
                UNIVERS  TYPE t_univers,
             END OF t_entetes.
    *TYPES: t_entete TYPE t_entetes OCCURS 0.
    DATA: it_data    TYPE STANDARD TABLE OF t_entetes,
          wa_data    TYPE t_entetes.
    PARAMETER p_file(200) DEFAULT '/tmp/catalogue4.xml' LOWER CASE .
    start-of-selection.
    DATA: dsn(20) VALUE '/usr/catalogue2.xml',
          msg(100).
    data : l_sysubrc like sy-subrc.
    *OPEN DATASET p_file FOR INPUT MESSAGE msg
                    IN TEXT MODE ENCODING DEFAULT.
    OPEN DATASET p_file FOR INPUT IN BINARY MODE.
    IF sy-subrc = 0.
    CLEAR : gv_read_xml.
    clear l_sysubrc.
    READ DATASET p_file INTO gv_read_xml.
    Transformation XML en ABAP-DATA
    PERFORM check_xml USING gv_read_xml.
    CLOSE DATASET p_file.
    ENDIF.
    *& Form check_xml
    FORM check_xml USING p_xml TYPE string.
    DATA: cx_runtime_error TYPE REF TO cx_xslt_runtime_error.
    DATA: cx_format_error TYPE REF TO cx_xslt_format_error.
    DATA: err_text TYPE string.
    DATA: lt_xml TYPE STANDARD TABLE OF typ_xml,
          ls_xml TYPE typ_xml,
          source_xml TYPE string,
          lt_result_xml TYPE abap_trans_resbind_tab,
          ls_result_xml TYPE abap_trans_resbind.
    TRY.
    CALL TRANSFORMATION ZUGAP
    SOURCE XML p_xml
    RESULT CATALOG = it_data.
    ENDTRY.
    LOOP AT it_data INTO wa_data.
    ENDLOOP.
    i'm wonder if is it possible to get attribute from xml with abap function transformation...
    Hope to hear from any of u soon!

    Hi Marcelo,
    Thanks a lot for your reply, your code is very usefull but my problem is located around the XSLT file.
    With my progam (abap), I can't read the attibutes from a XML file correctly because the XSLT have not the suitable tags.
    In my XML i have 2 rows of "Univers" and after use the function transformation from abap i can store only 1 rows in internal table   :
    <Catalog>
         <EnTete>
              <Emetteur>UBB</Emetteur>
                  <b><Univers libelle="Nettoyage, hygine et entretien"  objref="08">
                  </Univers>
                  <Univers libelle="Nettoyage, hygine et entretien"  objref="09">
                  </Univers></b>     
                  </EnTete>       
    </Catalog>
    XSLT :
    <xsl:for-each select="EnTete">
                <ENTETE>
                  <EMETTEUR>
                    <xsl:value-of select="Emetteur"/>
                  </EMETTEUR>
                   <xsl:for-each select="Univers">
                    <UNIVERS>
                      <UNIVERS1>
                        <LIBELLE> <xsl:value-of select="@libelle"/></LIBELLE>
                        <OBJREF> <xsl:value-of select="@objref"/>  </OBJREF>
                      </UNIVERS1>
                    </UNIVERS>
                   </xsl:for-each>
                </ENTETE>
              </xsl:for-each>
    My question is : How can i do to define attributes in XSLT to allow read them by a program abap ?
    In my example, the program abap get only 1 attribute in my iternal table, what is the suitable syntax in the xslt to read all the attributes  ?
    Hope to hear from any of u soon!
    Christophe.

  • Using MAX in transformations / Start Routine

    Hi,
    I am trying to use MAX function in an ABAP routine (transformation / Start) and it shows following error -
    "Unknown column name "MAX(/BIC/ZQMCOUNT)" until runtime, you cannot specify a field list.". Here is part of my code -
    >>
    data: v_counter(10) type n.
    SELECT MAX(/BIC/ZQMCOUNT)
    INTO v_counter
    FROM /BIC/AZDPM_DS300.
    <<
    Any thoughts please.
    Regards
    Vikash

    Hi there,
    Sometimes you have to put some spaces between the parantehsis in the max, min or count, like this:
    data: v_counter(10) type n.
    SELECT MAX( /BIC/ZQMCOUNT )
    INTO v_counter
    FROM /BIC/AZDPM_DS300.
    Can you try that?
    Diogo.

Maybe you are looking for

  • Console Slowness and Not Displaying Content When Maximized

    System Center Service Manager 2012 R2 When working in a maximized SCSM 2012 R2 console the content for an incident or service offering or other forms in the product don't display their content correctly. Also, when interacting and typing within the f

  • Convert mp4 to mp3

    Hi, I was told that I posted on the wrong message board... so maybe I can get some help hear.. my husband has a ipod and I just go a mp3 player, But all the music in iTunes are mp4, so I can't convert the music over to my mp3. With out burning a cd f

  • Swapping from PC to Mac

    Hi I am about to buy a Mac for the first time, my question is will my indesign files (CS3 windows) open with the Mac CS6 version? Same for my Fireworks (CS3) Photoshop (CS4) and Dreamweaver (CS4)

  • Can't turn off video preview.

    I like to view my folders and files in the "column" style. Back on Snow Leopard, in Finder when I would click on a video file, the preview column would appear. Originally, when it would appear, it would begin to load a preview of whatever video I'd c

  • Fan replacement for Neo2Plat chipset

    Ok I just cannot hear anymore the whisper sound of this fan...hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii iiiiiiiiiiiiiiiiii Anyone know a passive cooling that works on the MSI? I need to shut it down because I'm becoming crazy. All my system is silent but rea