Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

XML to Internal table using XSLT by CALL TRANSFORMATION error

0 Kudos

Dear experts,

I have to fetch the data from an XML file using XSLT into internal tables. The XML file is very big as following:-

<?xml version="1.0" standalone="yes" ?>

- <Shipment>

<shipmentID>25091203S000778</shipmentID>

<manifestDateTime>2009-12-03T20:16:52.00</manifestDateTime>

<shipmentFacilityNumber>025</shipmentFacilityNumber>

<shipmentFacilityAbbreviation>CHI</shipmentFacilityAbbreviation>

<shipmentFacilityAddress1>810 KIMBERLY DRIVE</shipmentFacilityAddress1>

<shipmentFacilityAddress2 />

<shipmentFacilityCity>CAROL STREAM</shipmentFacilityCity>

<shipmentFacilityState>IL</shipmentFacilityState>

<shipmentFacilityPostalCode>601880000</shipmentFacilityPostalCode>

<shipmentTruckCarrierCode>X150</shipmentTruckCarrierCode>

<shipmentSourceCode>T</shipmentSourceCode>

<userID>CAMPOSG</userID>

- <Delivery>

<primaryCustomerNumber>954371</primaryCustomerNumber>

<primaryCustomerName>MIDWEST OFFICE SUPPLY</primaryCustomerName>

<primaryCustomerAddress1 />

<primaryCustomerAddress2>4765 INDUSTRIAL DR</primaryCustomerAddress2>

<primaryCustomerCity>SPRINGFIELD</primaryCustomerCity>

<primaryCustomerState>IL</primaryCustomerState>

<primaryCustomerPostalCode>627030000</primaryCustomerPostalCode>

<primaryCustomerPhoneNumber>2177535555</primaryCustomerPhoneNumber>

<shuttleStopFacilityNumber />

<billOfLadingNumber>25HZK99</billOfLadingNumber>

<carrierProNumber />

<shipmentTotalCartonCount>6</shipmentTotalCartonCount>

<shipmentTotalWeight>266</shipmentTotalWeight>

- <order>

<orderNumber>25HZK99</orderNumber>

<subOrderNumber />

<dateProcessed>2009-12-03</dateProcessed>

<primaryOrderNumber />

<shipTruckCode>X150</shipTruckCode>

<shipTruckDescription>UDS - ADDISON</shipTruckDescription>

<shipTruckPriorityCode>01</shipTruckPriorityCode>

<shipTruckGroupCode>01</shipTruckGroupCode>

<shipTruckDepartureTime>20.00.00</shipTruckDepartureTime>

<shipTruckDockID>07</shipTruckDockID>

<ldpFacilityAbbreviation />

<shuttleAvailableIndicator>N</shuttleAvailableIndicator>

<shuttleMessageText />

<crossDockFacilityCode />

<crossDockTruckCode />

<crossDockID />

<subsidizedFreightTruckID />

<customerPurchaseOrderNumber>623559</customerPurchaseOrderNumber>

<headerTypeCode>P</headerTypeCode>

<orderTypeID>RG</orderTypeID>

<deliveryTypeID>DS</deliveryTypeID>

<deliveryMethodCode />

<customerBarCode />

<customerReferenceData>25HZK99</customerReferenceData>

<customerReferenceText />

<customerRouteData>ZNED UNTED</customerRouteData>

<customerRouteText>ROUTE</customerRouteText>

<endConsumerPurchaseOrderNumber />

<endConsumerPurchaseOrderText />

<endConsumerName>CHARLESTON TRANS. FACILITY</endConsumerName>

<endConsumerAddress1>HOMEWOOD DT PROGRAM DEPT. 3</endConsumerAddress1>

<endConsumerAddress2>17341 PALMER BLVD.</endConsumerAddress2>

<endConsumerAddress3 />

<endConsumerCity>HOMEWOOD</endConsumerCity>

<endConsumerState>IL</endConsumerState>

<endConsumerPostalCode>60430</endConsumerPostalCode>

<endConsumerCountryCode />

<fillFacilityNumber>025</fillFacilityNumber>

<shpFacilityNumber>025</shpFacilityNumber>

<homeFacilityAbbrCode>STL</homeFacilityAbbrCode>

<homeFacilityNumber>015</homeFacilityNumber>

<multiCartonIndicator>Y</multiCartonIndicator>

<primaryCustomerIndicator>Y</primaryCustomerIndicator>

<shipToCustomerNumber>954371001</shipToCustomerNumber>

<customerCompanyID>01</customerCompanyID>

<customerTruckID>U888</customerTruckID>

<customerTruckDescription>UDS - ADDISON</customerTruckDescription>

<customerTruckDockID>13</customerTruckDockID>

<thirdPartyBillCarrier />

<thirdPartyBillID />

<thirdPartyBillType />

<qualityCheckIndicator>N</qualityCheckIndicator>

<warehouseLaydownID />

<packListPosition>I</packListPosition>

<preferredPackingType>CTN</preferredPackingType>

<preferredPackingMaterial>PAPER</preferredPackingMaterial>

<preferedPackingInstructions />

<totalOrderCartonQty>6</totalOrderCartonQty>

<convertAddressIndicator>N</convertAddressIndicator>

<dealerInstructionIndicator>Y</dealerInstructionIndicator>

<dealerinstructions1>CPO#: 623559</dealerinstructions1>

<dealerinstructions2>ATTN: DANA GRIFFIN</dealerinstructions2>

<dealerinstructions3>INFO: 612</dealerinstructions3>

<dealerinstructions4>ROUTE: ZNED UNTED</dealerinstructions4>

<dealerinstructions5 />

<dealerinstructions6 />

<shippingInstructionsIndicator>N</shippingInstructionsIndicator>

<shippingInstructions1 />

<shippingInstructions2 />

<shippingInstructions3 />

<shippingInstructions4 />

<shippingInstructions5 />

<shippingInstructions6 />

<specialInstructionsIndicator>N</specialInstructionsIndicator>

<specialInstructions1 />

<specialInstructions2 />

<customeContainerDesc />

- <carton>

<deliveryCartonID>253370905995</deliveryCartonID>

<shipIndicator>Y</shipIndicator>

<deliveryPalletID>X150</deliveryPalletID>

<consolidatedDeliveryCartonID />

<scanDateTime>2009-12-03T19:36:12.00</scanDateTime>

<cartonWeight>52</cartonWeight>

<dropShipFlag>1</dropShipFlag>

<carrierTrackingNumber />

<carrierZoneID>0</carrierZoneID>

<codAmount />

<customerPackageAmount />

<declaredValue />

<residentialDeliveryIndicator />

<serviceTypeCode>00</serviceTypeCode>

<ssccCode>006860244400829393</ssccCode>

- <Item>

<shipPrefix>UNV</shipPrefix>

<shipStockNumber>21200</shipStockNumber>

<itemDescription>PAPER XERO/DUP WE LTR 20#</itemDescription>

<orderQuantity>1</orderQuantity>

<originalShipQuantity>1</originalShipQuantity>

<shipQuantity>1</shipQuantity>

<inventoryUnitCode>CT</inventoryUnitCode>

<inventoryWeightQuantity>52.000</inventoryWeightQuantity>

<upcNumber>00000000000000</upcNumber>

<upcRetailCode>087547212004</upcRetailCode>

<hazmatIndicator>N</hazmatIndicator>

<serialRequiredIndicator>N</serialRequiredIndicator>

<dealerMemoPO>S</dealerMemoPO>

<cartonLineNumber>1</cartonLineNumber>

<orderLineNumber>11</orderLineNumber>

<originalOrderPrefix>UNV</originalOrderPrefix>

<originalOrderStockNumber>21200</originalOrderStockNumber>

<reasonCode />

- <Item_Serial>

<serialNumber />

</Item_Serial>

</Item>

</carton>

</order>

</Delivery>

</Shipment>

This is not the complete XML file as it exceeds the 15000 characters and then I cann't post here. So I have deleted much part of it.

The hierarchy is as following: Shipment->Delivery->Order->Carton->Item.

I have created a XSLT for it which is working fine.

But when I execute my report program it gives CX_SY_XSLT_FORMAT_ERROR saying that

Transformation error: Non-canonical structure of element name XML_OUTPUT.

8 REPLIES 8

0 Kudos

Dear experts,

The XSLT is as following:-

<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="Shipment">

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

<asx:values>

<XML_OUTPUT>

<Shipment>

<ZSHIPMENT>

<xsl:value-of select="Shipment/shipmentID"/>

</ZSHIPMENT>

<MANIFEST_DATE_TIME>

<xsl:value-of select="Shipment/manifestDateTime"/>

</MANIFEST_DATE_TIME>

<SFACILITY_NUMBER>

<xsl:value-of select="Shipment/shipmentFacilityNumber"/>

</SFACILITY_NUMBER>

<ZZCARRIERCODE>

<xsl:value-of select="Shipment/shipmentTruckCarrierCode"/>

</ZZCARRIERCODE>

<Delivery>

<PRIMARY_CUSTOMER>

<xsl:value-of select="Shipment/Delivery/primaryCustomerNumber"/>

</PRIMARY_CUSTOMER>

<BILL_OF_LADING>

<xsl:value-of select="Shipment/Delivery/billOfLadingNumber"/>

</BILL_OF_LADING>

<CARTON_COUNT>

<xsl:value-of select="Shipment/Delivery/shipmentTotalCartonCount"/>

</CARTON_COUNT>

<TOTAL_WEIGHT>

<xsl:value-of select="Shipment/Delivery/shipmentTotalWeight"/>

</TOTAL_WEIGHT>

<order>

<ORDER_NUMBER>

<xsl:value-of select="Shipment/Delivery/order/orderNumber"/>

</ORDER_NUMBER>

<SUB_ORDER>

<xsl:value-of select="Shipment/Delivery/order/subOrderNumber"/>

</SUB_ORDER>

<ORDER_DATE>

<xsl:value-of select="Shipment/Delivery/order/dateProcessed"/>

</ORDER_DATE>

<PRIMARY_ORDER>

<xsl:value-of select="Shipment/Delivery/order/primaryOrderNumber"/>

</PRIMARY_ORDER>

<CUSTOMER_PO>

<xsl:value-of select="Shipment/Delivery/order/customerPurchaseOrderNumber"/>

</CUSTOMER_PO>

<PRIMARY_ID>

<xsl:value-of select="Shipment/Delivery/order/primaryCustomerIndicator"/>

</PRIMARY_ID>

<SHIP_TO>

<xsl:value-of select="Shipment/Delivery/order/shipToCustomerNumber"/>

</SHIP_TO>

<xsl:for-each select="//carton">

<carton>

<CARTON_ID>

<xsl:value-of select="Shipment/Delivery/order/carton/deliveryCartonID"/>

</CARTON_ID>

<SHIP_INDICATOR>

<xsl:value-of select="Shipment/Delivery/order/carton/shipIndicator"/>

</SHIP_INDICATOR>

<TRACKING_NUMBER>

<xsl:value-of select="Shipment/Delivery/order/carton/carrierTrackingNumber"/>

</TRACKING_NUMBER>

<ZZCARTON_WGT>

<xsl:value-of select="Shipment/Delivery/order/carton/cartonWeight"/>

</ZZCARTON_WGT>

<xsl:for-each select="current()/Item">

<Item>

<ITEM>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/shipStockNumber"/>

</ITEM>

<CARTON_LINE_NUM>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/shipPrefix"/>

</CARTON_LINE_NUM>

<CARTON_LINE_NUMBER>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/shipPrefix"/>

</CARTON_LINE_NUMBER>

<ITEM_DESCRIPTION>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/itemDescription"/>

</ITEM_DESCRIPTION>

<ORD_QTY>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/orderQuantity"/>

</ORD_QTY>

<ORIGINAL_SHIP>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/originalShipQuantity"/>

</ORIGINAL_SHIP>

<SHIP_QTY>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/shipQuantity"/>

</SHIP_QTY>

<UPC_NUMBER>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/upcNumber"/>

</UPC_NUMBER>

<DEALER_MEMO_PO>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/dealerMemoPO"/>

</DEALER_MEMO_PO>

<ORDER_LINE_NUM>

<xsl:value-of select="Shipment/Delivery/order/carton/Item/orderLineNumber"/>

</ORDER_LINE_NUM>

</Item>

</xsl:for-each>

</carton>

</xsl:for-each>

</order>

</Delivery>

</Shipment>

</XML_OUTPUT>

</asx:values>

</asx:abap>

</xsl:template>

</xsl:transform>

0 Kudos

Dear experts,

My report program is as following:-

*&----


*

*& Report Z_ASNTRNS

*&

*&----


*

*&

*&

*&----


*

REPORT Z_ASNTRNS.

*&----


*

*& Report Z_ASNTRNS

*&

*&----


*

*&

*&

*&----


*

TYPE-POOLS: abap, ixml.

TABLES: ZASN_SHIPMENT,ZASN_DELIVERY,ZASN_ORDER,ZASN_CARTON,ZASN_ITEM.

*CONSTANTS gs_file TYPE string VALUE 'C:Documents and SettingsC5134126DesktopRajesh_kandakatlaSampleASNFile.xml'.

  • This is the structure for the data from the XML file

TYPES: BEGIN OF ts_item,

  • ZSHIPMENT LIKE ZASN_ITEM-ZSHIPMENT,

  • VBELN LIKE ZASN_ITEM-VBELN,

  • ORDER_NUMBER LIKE ZASN_ITEM-ORDER_NUMBER,

  • CARTON_ID LIKE ZASN_ITEM-CARTON_ID,

ITEM LIKE ZASN_ITEM-ITEM,

CARTON_LINE_NUM LIKE ZASN_ITEM-CARTON_LINE_NUM,

CARTON_LINE_NUMBER LIKE ZASN_ITEM-CARTON_LINE_NUM,

  • AEDAT(8),

  • AEZET(6),

ITEM_DESCRIPTION LIKE ZASN_ITEM-ITEM_DESCRIPTION,

ORD_QTY(16),

ORIGINAL_SHIP(16),

SHIP_QTY(16),

UPC_NUMBER LIKE ZASN_ITEM-UPC_NUMBER,

DEALER_MEMO_PO(5),

ORDER_LINE_NUM LIKE ZASN_ITEM-ORDER_LINE_NUM,

  • STATUS LIKE ZASN_ITEM-STATUS,

END OF ts_item.

TYPES: BEGIN OF ts_carton,

  • ZSHIPMENT LIKE ZASN_CARTON-ZSHIPMENT,

  • VBELN LIKE ZASN_CARTON-VBELN,

  • ORDER_NUMBER LIKE ZASN_CARTON-ORDER_NUMBER,

CARTON_ID LIKE ZASN_CARTON-CARTON_ID,

  • AEDAT(8),

  • AEZET(6),

SHIP_INDICATOR LIKE ZASN_CARTON-SHIP_INDICATOR,

TRACKING_NUMBER LIKE ZASN_CARTON-TRACKING_NUMBER,

ZZCARTON_WGT(18),

Item type ts_item,

END OF ts_carton.

TYPES: BEGIN OF ts_order,

  • ZSHIPMENT LIKE ZASN_ORDER-ZSHIPMENT,

  • VBELN LIKE ZASN_ORDER-VBELN,

ORDER_NUMBER LIKE ZASN_ORDER-ORDER_NUMBER,

  • AEDAT(8),

  • AEZET(6),

SUB_ORDER LIKE ZASN_ORDER-SUB_ORDER,

ORDER_DATE(8),

PRIMARY_ORDER LIKE ZASN_ORDER-PRIMARY_ORDER,

CUSTOMER_PO LIKE ZASN_ORDER-CUSTOMER_PO,

PRIMARY_ID LIKE ZASN_ORDER-PRIMARY_ID,

SHIP_TO LIKE ZASN_ORDER-SHIP_TO,

  • ANZPK(5),

carton type ts_carton,

END OF ts_order.

TYPES: BEGIN OF ts_delivery,

  • ZSHIPMENT LIKE ZASN_DELIVERY-ZSHIPMENT,

  • VBELN LIKE ZASN_DELIVERY-VBELN,

  • AEDAT(8) TYPE C,

  • AEZET(6) TYPE C,

PRIMARY_CUSTOMER LIKE ZASN_DELIVERY-PRIMARY_CUSTOMER,

BILL_OF_LADING LIKE ZASN_DELIVERY-BILL_OF_LADING,

CARTON_COUNT(5),

TOTAL_WEIGHT(18),

order type ts_order,

END OF ts_delivery.

TYPES: BEGIN OF ts_shipment,

ZSHIPMENT LIKE ZASN_SHIPMENT-ZSHIPMENT,

MANIFEST_DATE_TIME(25),

  • AEDAT(8) TYPE C,

  • AEZET(6) TYPE C,

  • SDATE(8) TYPE C,

  • STIME(6) TYPE C,

SFACILITY_NUMBER LIKE ZASN_SHIPMENT-SFACILITY_NUMBER,

ZZCARRIERCODE LIKE ZASN_SHIPMENT-ZZCARRIERCODE,

Delivery type ts_delivery,

END OF ts_shipment.

TYPES: BEGIN OF ts_shipment1,

ZSHIPMENT LIKE ZASN_SHIPMENT-ZSHIPMENT,

MANIFEST_DATE_TIME(25),

SFACILITY_NUMBER LIKE ZASN_SHIPMENT-SFACILITY_NUMBER,

ZZCARRIERCODE LIKE ZASN_SHIPMENT-ZZCARRIERCODE,

PRIMARY_CUSTOMER LIKE ZASN_DELIVERY-PRIMARY_CUSTOMER,

BILL_OF_LADING LIKE ZASN_DELIVERY-BILL_OF_LADING,

CARTON_COUNT(5),

TOTAL_WEIGHT(18),

ORDER_NUMBER LIKE ZASN_ORDER-ORDER_NUMBER,

SUB_ORDER LIKE ZASN_ORDER-SUB_ORDER,

ORDER_DATE(8),

PRIMARY_ORDER LIKE ZASN_ORDER-PRIMARY_ORDER,

CUSTOMER_PO LIKE ZASN_ORDER-CUSTOMER_PO,

PRIMARY_ID LIKE ZASN_ORDER-PRIMARY_ID,

SHIP_TO LIKE ZASN_ORDER-SHIP_TO,

CARTON_ID LIKE ZASN_CARTON-CARTON_ID,

SHIP_INDICATOR LIKE ZASN_CARTON-SHIP_INDICATOR,

TRACKING_NUMBER LIKE ZASN_CARTON-TRACKING_NUMBER,

ZZCARTON_WGT(18),

ITEM LIKE ZASN_ITEM-ITEM,

CARTON_LINE_NUM LIKE ZASN_ITEM-CARTON_LINE_NUM,

CARTON_LINE_NUMBER LIKE ZASN_ITEM-CARTON_LINE_NUM,

ITEM_DESCRIPTION LIKE ZASN_ITEM-ITEM_DESCRIPTION,

ORD_QTY(16),

ORIGINAL_SHIP(16),

SHIP_QTY(16),

UPC_NUMBER LIKE ZASN_ITEM-UPC_NUMBER,

DEALER_MEMO_PO(5),

ORDER_LINE_NUM LIKE ZASN_ITEM-ORDER_LINE_NUM,

END OF ts_shipment1.

TYPES: BEGIN OF t_xml_line,

data(256) TYPE x,

END OF t_xml_line.

*Typdefinition für Airplus

*READ THE DOCUMENTATION "LASG_XML_INVOICE_BTM"!!!

VARs beginning with "a_" are ATTRIBUTES

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_ostream TYPE REF TO if_ixml_ostream,

l_document TYPE REF TO if_ixml_document,

l_node TYPE REF TO if_ixml_node,

l_xml TYPE REF TO cl_xml_document,

l_xmldata TYPE string.

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.

DATA: xml_out TYPE string ,

size type i.

DATA: l_xml_x1 TYPE xstring.

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.

DATA: BEGIN OF l_itab occurs 0,

data(256) type c,

end of l_itab.

TYPES : BEGIN OF TY_TEXT,

data(255) type C,

END OF TY_TEXT.

DATA: F_XML TYPE STRING.

DATA : LT_TEXT_OUT type table of TY_TEXT with header line.

  • tables

DATA: it_shipment TYPE STANDARD TABLE OF ts_shipment,

wa_shipment TYPE ts_shipment.

*Errorvariables

DATA: xslt_err TYPE REF TO cx_xslt_exception,

err_string TYPE string.

PARAMETERS: pa_file TYPE localfile OBLIGATORY

DEFAULT 'C:Documents and SettingsC5134126DesktopRajesh_kandakatlaSampleASNFile.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( ).

PERFORM get_xml_table CHANGING l_xml_table_size l_xml_table.

  • here we use the CALL TRANSFORMATION method which calls

  • the XSLT program "z_asnfile"

TRY.

CALL TRANSFORMATION ('Z_ASNFILE')

SOURCE xml LT_TEXT_OUT[]

RESULT xml_output = it_shipment

.

  • 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_shipment INTO wa_shipment.

ENDLOOP.

*&----


*

*& Form get_xml_table

*&----


*

FORM get_xml_table CHANGING l_xml_table_size TYPE i

l_xml_table TYPE STANDARD TABLE.

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.

  • Convert binary to text.

CALL FUNCTION 'SCMS_BINARY_TO_TEXT'

EXPORTING

INPUT_LENGTH = 70000

  • FIRST_LINE = 0

  • LAST_LINE = 0

  • APPEND_TO_TABLE = ' '

  • MIMETYPE = ' '

WRAP_LINES = 'X'

  • IMPORTING

  • OUTPUT_LENGTH =

TABLES

BINARY_TAB = l_xml_table

TEXT_TAB = LT_TEXT_OUT

  • EXCEPTIONS

  • FAILED = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. "get_xml_table

0 Kudos

Hi

Don't exceed 2500 char limit, else your post is illegible

Max

0 Kudos

Dear experts,

My problem is still not solved.

Thanks,

--Sonal

0 Kudos

1. Write XSLT program. T.code XSLT . e.g. XSLT name "ZTRANS".

2. Write ABAP program

Which includes declaration of internal tables

that you need "IT_DATA".

Upload XML data to an internal table "IT_XML "

use below statement to convert XML to internal table.

Call transformation ZTRANS

source XML IT_XML

result IT_DATA.

OR Refer

http://help.sap.com/saphelp_nw04/helpdata/en/e3/7d4719ca581441b6841f1054ff1326/frameset.htm

Regards,

PP

0 Kudos

Dear P.P.,

XSLT is done. The CX_XSLT_FORMAT_ERROR is gone. I have changed my program code as well. Its as following:-

&----


*& Report Z_ASNTRNS2

*&

&----


*&

*&

&----


REPORT Z_ASNTRNS2.

TYPE-POOLS abap.

*Input file contents as string.XML file path where we saved the file. *Here it is saved in desktop.

*Input file with path as constant

CONSTANTS gs_file TYPE string VALUE 'C:\Documents and Settings\C5134126\Desktop\Rajesh_kandakatla\SampleASNFile.xml'.

*This is the structure type for the data from the XML file

TYPES: BEGIN OF ts_ship,

shipment TYPE ZSHIP, "ZSHIP structure we created in SE11

END OF ts_ship.

TYPES: BEGIN OF t_xml_line,

data(256) TYPE x,

END OF t_xml_line.

TYPES : BEGIN OF TY_TEXT,

data(75) type C,

END OF TY_TEXT.

DATA : LT_TEXT_OUT type table of TY_TEXT with header line.

  • Table for storing the XML content from file

DATA: gt_itab TYPE TABLE OF t_xml_line.

DATA: L_XML_X1 TYPE TABLE OF t_xml_line.

  • Table and work areas for the data from the XML file

DATA: gt_ship TYPE STANDARD TABLE OF ts_ship,

gs_ship TYPE ts_ship.

  • Result table that contains references

  • of the internal tables to be filled

DATA: gt_result_xml TYPE abap_trans_resbind_tab,

gs_result_xml TYPE abap_trans_resbind.

  • For error handling

DATA: gs_rif_ex TYPE REF TO cx_root,

gs_var_text TYPE string.

  • Get the XML file from your client

CALL METHOD cl_gui_frontend_services=>gui_upload

EXPORTING

filename = gs_file

filetype = 'BIN'

CHANGING

data_tab = gt_itab

EXCEPTIONS

file_open_error = 1

file_read_error = 2

no_batch = 3

gui_refuse_filetransfer = 4

invalid_type = 5

no_authority = 6

unknown_error = 7

bad_data_format = 8

header_not_allowed = 9

separator_not_allowed = 10

header_too_long = 11

unknown_dp_error = 12

access_denied = 13

dp_out_of_memory = 14

disk_full = 15

dp_timeout = 16

not_supported_by_gui = 17

error_no_gui = 18

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.

  • Fill the result table with a reference to the data table.

  • Within the XSLT style sheet, the data table can be accessed with

  • "SHIP_GET".

GET REFERENCE OF gt_ship INTO gs_result_xml-value.

gs_result_xml-name = 'SHIP_GET'.

APPEND gs_result_xml TO gt_result_xml.

  • Perform the XSLT stylesheet

TRY.

CALL TRANSFORMATION Z_ASNFILE

SOURCE XML gt_itab

RESULT (gt_result_xml).

CATCH cx_root INTO gs_rif_ex.

gs_var_text = gs_rif_ex->get_text( ).

WRITE: / 'Transformation error: ', gs_var_text.

EXIT.

ENDTRY.

*Display the file contents on screen.

*IF sy-subrc = 0.

  • LOOP at gt_ship INTO gs_ship.

*

  • WRITE: gs_ship-SHIPMENT-ZSHIPMENT, u201CShipment ID

  • / gs_ship-SHIPMENT-MANIFEST_DATE_TIME, u201CManifest Date Time

  • / gs_ship-SHIPMENT-SFACILITY_NUMBER,u201DShipment Facility Number

  • / gs_ship-SHIPMENT-ZZCARRIERCODE.u201DCarrier Code

**all fields of E1MAKTM segment

    • / gs_zeu_matmas03-idoc-ze1maram_test1-e1maktm-msgfn,

    • / gs_zeu_matmas03-idoc-ze1maram_test1-e1maktm-spras,

    • / gs_zeu_matmas03-idoc-ze1maram_test1-e1maktm-maktx,

    • / gs_zeu_matmas03-idoc-ze1maram_test1-e1maktm-spras_iso.

  • ENDLOOP.

*ENDIF.

But the problem is after CALL TRANSFORMATION the data is not coming in the gt_ship internal table. all the fields are empty.

Thanks,

--Sonal

0 Kudos

Dear experts,

But the problem is after CALL TRANSFORMATION the data is not coming in the gt_ship internal table.

all the fields are empty.I am getting an empty structure in the output. XSLT is fine. Just want to know does XSLT gets the values of elements as well from XML in the test tool output or just generate nodes ? Because nodes are getting generated correctly. That means XSLT is correct.And I am not getting any error while CALL TRANSFORMATION as well.But getting an empty structure in the output after CALL Transformation. The internal table is not filled up with the values from XML file elements.

I am really stuck into it for the last 2 days. Somebody please help.

Thanks,

--Sonal

0 Kudos

Hi Sonal,

I just posted a simple program on transforming XML data to internal tables.. here

HTH,

Jayanta