cancel
Showing results for 
Search instead for 
Did you mean: 

XSLT program not getting the values into internal structure using for-each

Former Member
0 Kudos

Hi

I have my structures as below

TYPES: BEGIN OF ty_photolib_internal,

        purchase_id   TYPE string,

        user_id       TYPE string,

        client_id     TYPE string,

       END OF ty_photolib_internal.

TYPES: BEGIN OF ty_address,

        street     TYPE string,

        postcode   TYPE string,

        city       TYPE string,

        country    TYPE string,

       END OF ty_address.

TYPES: BEGIN OF ty_cust_details,

        company_name         TYPE string,

        account_name         TYPE string,

        sap_id               TYPE string,

        vat_registered       TYPE string,

        company_telephone    TYPE string,

        company_email        TYPE string,

        user_telephone       TYPE string,

        user_email           TYPE string,

        address              TYPE ty_address,

       END OF ty_cust_details.

TYPES: BEGIN OF ty_line_item,

        number                TYPE string,

        internal_photo_id     TYPE string,

        quantity              TYPE I,

        elvis_id              TYPE string,

        title                 TYPE string,

        net_price             TYPE string,

        usage_details         TYPE string,

        usage_date            TYPE sy-datum,

        license               TYPE string,

        license_options       TYPE string,

       END OF ty_line_item.

TYPES: BEGIN OF ty_line_items,

          line_item    TYPE     ty_line_item,

       END OF ty_line_items.

TYPES: BEGIN OF ty_photo,

        requested_by              TYPE string,

        issued_at                 TYPE string,

        order_type                TYPE string,

        purchase_order_number     TYPE string,

        sales_order_document_type TYPE string,

        vat_no_if_applied         TYPE string,

        photo_library_internal    TYPE ty_photolib_internal,

        customer_details          TYPE ty_cust_details,

        line_items                TYPE ty_line_items,

END OF ty_photo.

DATA: lt_ph1 type table of ty_photo,

ls_ph1 type ty_photo.

and my xslt program is below

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">

  <xsl:template match="SALES_ORDER">

    <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">

      <asx:values>

             <SALES_ORDER>

                  <REQUESTED_BY>

                      <xsl:value-of select="REQUESTED_BY"/>

                  </REQUESTED_BY>

                  <ISSUED_AT>

                      <xsl:value-of select="ISSUED_AT"/>

                  </ISSUED_AT>

                  <ORDER_TYPE>

                      <xsl:value-of select="ORDER_TYPE"/>

                  </ORDER_TYPE>

                  <PURCHASE_ORDER_NUMBER>

                      <xsl:value-of select="PURCHASE_ORDER_NUMBER"/>

                  </PURCHASE_ORDER_NUMBER>

                  <SALES_ORDER_DOCUMENT_TYPE>

                      <xsl:value-of select="SALES_ORDER_DOCUMENT_TYPE"/>

                  </SALES_ORDER_DOCUMENT_TYPE>

                  <VAT_NO_IF_APPLIED>

                      <xsl:value-of select="VAT_NO_IF_APPLIED"/>

                  </VAT_NO_IF_APPLIED>

                  <PHOTO_LIBRARY_INTERNAL>

                         <PURCHASE_ID> <xsl:value-of select="PHOTO_LIBRARY_INTERNAL/PURCHASE_ID"/> </PURCHASE_ID>

                         <USER_ID> <xsl:value-of select="PHOTO_LIBRARY_INTERNAL/USER_ID"/> </USER_ID>

                         <CLIENT_ID> <xsl:value-of select="PHOTO_LIBRARY_INTERNAL/CLIENT_ID"/> </CLIENT_ID>

                  </PHOTO_LIBRARY_INTERNAL>

                  <CUSTOMER_DETAILS>

                          <COMPANY_NAME> <xsl:value-of select="CUSTOMER_DETAILS/COMPANY_NAME"/> </COMPANY_NAME>

                          <ACCOUNT_NAME> <xsl:value-of select="CUSTOMER_DETAILS/ACCOUNT_NAME"/> </ACCOUNT_NAME>

                          <SAP_ID> <xsl:value-of select="CUSTOMER_DETAILS/SAP_ID"/> </SAP_ID>

                          <VAT_REGISTERED> <xsl:value-of select="CUSTOMER_DETAILS/VAT_REGISTERED"/> </VAT_REGISTERED>

                          <COMPANY_TELEPHONE> <xsl:value-of select="CUSTOMER_DETAILS/COMPANY_TELEPHONE"/> </COMPANY_TELEPHONE>

                          <COMPANY_EMAIL></COMPANY_EMAIL>

                          <USER_TELEPHONE> <xsl:value-of select="CUSTOMER_DETAILS/USER_TELEPHONE"/> </USER_TELEPHONE>

                          <USER_EMAIL></USER_EMAIL>

                          <ADDRESS>

                              <STREET> <xsl:value-of select="CUSTOMER_DETAILS/ADDRESS/STREET"/> </STREET>

                              <POSTCODE> <xsl:value-of select="CUSTOMER_DETAILS/ADDRESS/POSTCODE"/> </POSTCODE>

                              <CITY> <xsl:value-of select="CUSTOMER_DETAILS/ADDRESS/CITY"/> </CITY>

                              <COUNTRY> <xsl:value-of select="CUSTOMER_DETAILS/ADDRESS/COUNTRY"/> </COUNTRY>

                          </ADDRESS>

                  </CUSTOMER_DETAILS>

                  <LINE_ITEMS>

                      <xsl:for-each select="LINE_ITEMS/LINE_ITEM">

                      <LINE_ITEM>

                          <QUANTITY><xsl:value-of select="LINE_ITEM/@QUANTITY"/></QUANTITY>

                          <INTERNAL_PHOTO_ID><xsl:value-of select="LINE_ITEM/@INTERNAM_PHOTO_ID"/></INTERNAL_PHOTO_ID>

                          <ELVIS_ID><xsl:value-of select="LINE_ITEM/ELVIS_ID"/></ELVIS_ID>

                          <TITLE><xsl:value-of select="LINE_ITEM/TITLE"/></TITLE>

                          <NET_PRICE><xsl:value-of select="LINE_ITEM/NET_PRICE"/></NET_PRICE>

                          <USAGE_DETAILS><xsl:value-of select="LINE_ITEM/USAGE_DETAILS"/></USAGE_DETAILS>

                          <USAGE_DATE><xsl:value-of select="LINE_ITEM/USAGE_DATE"/></USAGE_DATE>

                          <LICENSE><xsl:value-of select="LINE_ITEM/LICENSE"/></LICENSE>

                          <LICENSE_OPTIONS><xsl:value-of select="LINE_ITEM/LICENSE_OPTIONS"/></LICENSE_OPTIONS>

                      </LINE_ITEM>

                      </xsl:for-each>

                  </LINE_ITEMS>

             </SALES_ORDER>

      </asx:values>

    </asx:abap>

  </xsl:template>

</xsl:transform>

my xml file is in here below

<sales_order>

<requested_by>BBC Photo Library Website</requested_by>

<issued_at>24/03/2012 17:00:12</issued_at>

<order_type>ACCOUNT | CREDITCARD</order_type>

- <photo_library_internal>

<purchase_id>10891</purchase_id>

<user_id>10844</user_id>

<client_id>10690</client_id>

</photo_library_internal>

- <customer_details>

<company_name>Conde Nast</company_name>

<account_name>GQ MAGAZINE</account_name>

<sap_id>17573</sap_id>

<vat_registered>GB532397441</vat_registered>

- <address>

<street>1 Hanover Square, Vogue House</street>

<postcode>W1S 1JU</postcode>

<city>London</city>

<country>United Kingdom</country>

</address>

<company_telephone>020 7499 9080</company_telephone>

<company_email />

<user_telephone>020 1234 5678</user_telephone>

<user_email />

</customer_details>

<purchase_order_number>FAO Accounts</purchase_order_number>

<sales_order_document_type>ZE</sales_order_document_type>

<vat_no_if_applied>GB532397441</vat_no_if_applied>

- <line_items>

- <line_item number="1" internal_photo_id="1234213423">

<quantity>1</quantity>

<elvis_id>35246473</elvis_id>

<title>The Crusade</title>

<net_price>273.00</net_price>

<usage_details>on the magazine's cover</usage_details>

<usage_date>29/02/2012</usage_date>

<license>Newspapers (includes supplements and newspaper magazines) | National | up to Full</license>

<license_options>Include web or app | Cover use</license_options>

</line_item>

- <line_item number="2" internal_photo_id="1234213423">

<quantity>1</quantity>

<elvis_id>32344124</elvis_id>

<title>The Borrowers</title>

<net_price>83.00</net_price>

<usage_details>12346784576</usage_details>

<usage_date>17/02/2012</usage_date>

<license>Magazines (Uk) | Class 1 - Commercial 400,000+ | up to 1/16</license>

<license_options>Include web or app</license_options>

</line_item>

</line_items>

</sales_order>

********************************************

Now my query is I am not getting the valies for LINE_ITEMS

the remaining values all is been getting mapped to ABAP internal table except LINE_ITEMS

anyone please assist me do I need to change variable declarations or need to change the XSLT program ???


Accepted Solutions (0)

Answers (1)

Answers (1)

former_member184681
Active Contributor
0 Kudos

Hi,

Remove the "LINE_ITEM/" part from the select queries of xsl:value-of. By using the for-each, you set the "context" of the processing to LINE_ITEMS/LINE_ITEM. So when you use:

<xsl:value-of select="LINE_ITEM/ELVIS_ID"/>

inside the loop, the system looks for the following element:

LINE_ITEMS / LINE_ITEM / LINE_ITEM / ELVIS_ID

which obviously cannot be found. So simply change to the following:

<xsl:value-of select="ELVIS_ID"/>


Regards,

Greg