Simple Transformation / point comma
Hello,
i am new at Simple Transformations. I have a given xml in wich decimal seperator is the comma.
During the transformation I need to replace it with a point.
XML: <turnover>658,23</turnover>
ST: <tt:value ref="$wa.tover" />
ABAP: wa-tover = '658.23'
Does anybody have a hint for me?
thanks
Werner
Hello,
better to use offset concept here.....Replace....
Thank u,
santhosh
Similar Messages
-
Upload xml file to internal table only using simple transformation
Hi Friends
How to write transformation code for the following xml data.. Please let me know immedately if any one know..
I have written as following but i encountered an eror staating -
Iam facing the following error
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_ST_REF_ACCESS', was not caught in
procedure "UPLOAD_XML" "(FORM)", nor was it propagated by a RAISING clause.
Since the caller of the procedure could not have anticipated that the
exception would occur, the current program is terminated.
The reason for the exception is:
The goal was to access variable "ROOT1". However, this access was not
possible.
Go through my xml file , the code and code in simple transformation.. Please reply(transformation code) me as soon as possible
- <Negara>
- <item>
- <COUNTRY>
<MANDT>600</MANDT>
<ZCODE>500</ZCODE>
<ZDESC>Pening Lalat</ZDESC>
<ZSAPCD>T1</ZSAPCD>
</COUNTRY>
</item>
- <item>
- <COUNTRY>
<MANDT>600</MANDT>
<ZCODE>600</ZCODE>
<ZDESC>Pening Lalat2</ZDESC>
<ZSAPCD>T2</ZSAPCD>
</COUNTRY>
</item>
</Negara>
DATA : BEGIN OF XDATA OCCURS 0,
STR(255) TYPE C,
END OF XDATA.
DATA: XMLUPL TYPE string .
DATA : BEGIN OF ITAB OCCURS 0,
MANDT(3) TYPE C,
ZCODE(3) TYPE C,
ZDESC(15) TYPE C,
ZSAPCD(2) TYPE C,
END OF ITAB.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:\country.xml'
FILETYPE = 'BIN'
TABLES
DATA_TAB = XDATA.
LOOP AT XDATA.
CONCATENATE XMLUPL XDATA-STR INTO XMLUPL.
ENDLOOP.
CALL TRANSFORMATION ('Y_XMLCTRY')
SOURCE XML XMLUPL
result xml = ITAB[].
BREAK-POINT.
<?sap.transform simple?>
<tt:transform template="temp1"
xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT1"/>
<tt:root name="ROOT2"/>
<tt:template name="temp1">
<Negara>
<tt:loop ref=".ROOT1" name="i">
<item>
<tt:loop ref=".ROOT2" name="c">
<COUNTRY>
<MANDT>
<tt:value ref="$c.nummer" />
</MANDT>
<ZCODE>
<tt:value ref="$c.nummer" />
</ZCODE>
<ZDESC>
<tt:value ref="$c.name" />
</ZDESC>
<ZSAPCD>
<tt:value ref="$c.name" />
</ZSAPCD>
</COUNTRY>
</tt:loop>
</item>
</tt:loop>
</Negara>
</tt:template>
</tt:transform>
Thanking You
DeviHi Friends
How to write transformation code for the following xml data.. Please let me know immedately if any one know..
I have written as following but i encountered an eror staating -
Iam facing the following error
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_ST_REF_ACCESS', was not caught in
procedure "UPLOAD_XML" "(FORM)", nor was it propagated by a RAISING clause.
Since the caller of the procedure could not have anticipated that the
exception would occur, the current program is terminated.
The reason for the exception is:
The goal was to access variable "ROOT1". However, this access was not
possible.
Go through my xml file , the code and code in simple transformation.. Please reply(transformation code) me as soon as possible
- <Negara>
- <item>
- <COUNTRY>
<MANDT>600</MANDT>
<ZCODE>500</ZCODE>
<ZDESC>Pening Lalat</ZDESC>
<ZSAPCD>T1</ZSAPCD>
</COUNTRY>
</item>
- <item>
- <COUNTRY>
<MANDT>600</MANDT>
<ZCODE>600</ZCODE>
<ZDESC>Pening Lalat2</ZDESC>
<ZSAPCD>T2</ZSAPCD>
</COUNTRY>
</item>
</Negara>
DATA : BEGIN OF XDATA OCCURS 0,
STR(255) TYPE C,
END OF XDATA.
DATA: XMLUPL TYPE string .
DATA : BEGIN OF ITAB OCCURS 0,
MANDT(3) TYPE C,
ZCODE(3) TYPE C,
ZDESC(15) TYPE C,
ZSAPCD(2) TYPE C,
END OF ITAB.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:\country.xml'
FILETYPE = 'BIN'
TABLES
DATA_TAB = XDATA.
LOOP AT XDATA.
CONCATENATE XMLUPL XDATA-STR INTO XMLUPL.
ENDLOOP.
CALL TRANSFORMATION ('Y_XMLCTRY')
SOURCE XML XMLUPL
result xml = ITAB[].
BREAK-POINT.
<?sap.transform simple?>
<tt:transform template="temp1"
xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT1"/>
<tt:root name="ROOT2"/>
<tt:template name="temp1">
<Negara>
<tt:loop ref=".ROOT1" name="i">
<item>
<tt:loop ref=".ROOT2" name="c">
<COUNTRY>
<MANDT>
<tt:value ref="$c.nummer" />
</MANDT>
<ZCODE>
<tt:value ref="$c.nummer" />
</ZCODE>
<ZDESC>
<tt:value ref="$c.name" />
</ZDESC>
<ZSAPCD>
<tt:value ref="$c.name" />
</ZSAPCD>
</COUNTRY>
</tt:loop>
</item>
</tt:loop>
</Negara>
</tt:template>
</tt:transform>
Thanking You
Devi -
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
enzoEnzo 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. -
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,
AndreyHallo 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 -
Simple transformation dropping trailing zero.
Hi experts.
I am having a problem with my transformation file, and I was hoping someone could help me.
I have created a simple transformation file, with a variable using the type of "DMBTR" which Does have 2 decimal points.
IF I have data - the two decimal points print.
EG if the amount is 100.57.. I get the 100.57 to print which is what I need and expect.
BUT.
IF the amount is 100.50 I am getting 100.5 Is is dropping the final zero amount, and therefore is failing in the validation.
HOW can I FORCE the two decimal points to print?
I have even tried it where I declare it as a variable of type "I" with 2 decimal points, and it still does not work.
I can not figure out how to use the Number format option with a Value-ref print line.
If someone could help me with that.. I could try that to see if it worked.
thank you.
eg: of the way the data is declared:
<tt:type name="GRTOT14" type="I" length="13" decimals="2"/>
OR
<tt:type name="GRTOT16" type="ddic:DMBTR"/>
<tt:type name="GRTOT17" type="ddic:DMBTR"/>
eg: of the way I am using it where I am getting only one decimal place if the 2nd decimal place is ZERO
<tot_grnt_sbsdy_amt tt:value-ref=".GRTOT14"/>
<tot_insu_prcd_amt tt:value-ref=".GRTOT16"/>
<tot_opay_rcap_amt tt:value-ref=".GRTOT17"/>
PLEASE HELP.
thank you.From what I understand about XML (could be more), the canonical representation of decimal values does not allow a fixed number of decimal places.
SAP documentation:
http://help.sap.com/saphelp_nw04/helpdata/en/52/491a40251e2402e10000000a1550b0/frameset.htm
from there, this XML documentation is referenced:
http://www.w3.org/TR/xmlschema-2/#decimal
important bit:
Leading and trailing zeroes are prohibited subject to the following: there must be at least one digit to the right and to the left of the decimal point which may be a zero.
You already discarded my workaround: using a character or string type field and fill it to your liking prior to serialisation.
Thomas -
Simple transform not working as expected
I'm new to Oracle Spatial, and I'm having some problems.
I'm trying to do a simple transform of a rectangle from one srid to another, and I'm getting the craziest results. After playing around, I found that I get the same weird behavior when I transform from an srid to itself.
This, for example, returns what I would expect it to:
select
-- SDO_CS.TRANSFORM (
SDO_GEOMETRY ( 2003, 8307, null, sdo_elem_info_array ( 1, 1003, 3 ),
SDO_ORDINATE_ARRAY ( -84.3416667, 41.2833333, -84.3250000, 41.2750000 )
-- ) , 8307
AS results FROM dual
With the two lines commented out, this is a simple selection of a rectangular geometry, without any transformation. It returns the coordinates it was given, with the trailing '0's trimmed off:
RESULTS(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARRAY(
-84.341667, 41.2833333, -84.325, 41.275))
But if I uncomment the two lines, so that I' doing a transform of the rectangle from the WGS84 it was in into WGS 84, I get the weirdest results:
select
SDO_CS.TRANSFORM (
SDO_GEOMETRY ( 2003, 8307, null, sdo_elem_info_array ( 1, 1003, 3 ),
SDO_ORDINATE_ARRAY ( -84.3416667, 41.2833333, -84.3250000, 41.2750000 )
) , 8307
AS results FROM dual
RESULTS(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(
-84.341667, 41.2833333, -84.340767, 41.2833333, -84.339868, 41.2833333, -84.338969, 41.2833333, -84.338069, 41.2833333, -84.33717, 41.2833333, -84.336271, 41.2833333, -84.335371, 41.2833333, -84.334472, 41.2833333, -84.333573, 41.2833333, -84.332673, 41.2833333, -84.331774, 41.2833333, -84.330875, 41.2833333, -84.329976, 41.2833333, -84.329076, 41.2833333, -84.328177, 41.2833333, -84.327278, 41.2833333, -84.326378, 41.2833333, -84.325479, 41.2833333, -84.325, 41.2833333, -84.325, 44.88325, -84.325, 48.4831666, -84.325, 52.0830833, -84.325, 55.683, -84.325, 59.2829166, -84.325, 62.8828333, -84.325, 66.48275, -84.325, 70.0826666, -84.325, 73.6825833, -84.325, 77.2825, -84.325, 80.8824166, -84.325, 84.4823333, -84.325, 88.08225, -84.325, 91.6821666, -84.325, 95.2820833, -84.325, 98.882, -84.325, 102.481917, -84.325, 106.081833, -84.325, 109.68175, -84.325, 113.281667, -84.325, 116.881583, -84.325, 120.4815, -84.325, 124.081417, -84.325, 127.681333, -84.325, 131.28125, -84.325, 134.881167, -84.325, 138.481083, -84.325, 142.081, -84.325, 145.680917, -84.325, 149.280833, -84.325, 152.88075, -84.325, 156.480667, -84.325, 160.080583, -84.325, 163.6805, -84.325, 167.280417, -84.325, 170.880333, -84.325, 174.48025, -84.325, 178.080167, -84.325, 181.680083, -84.325, 185.28, -84.325, 188.879917, -84.325, 192.479833, -84.325, 196.07975, -84.325, 199.679667, -84.325, 203.279583, -84.325, 206.8795, -84.325, 210.479417, -84.325, 214.079333, -84.325, 217.67925, -84.325, 221.279167, -84.325, 224.879083, -84.325, 228.479, -84.325, 232.078917, -84.325, 235.678833, -84.325, 239.27875, -84.325, 242.878667, -84.325, 246.478583, -84.325, 250.0785, -84.325, 253.678417, -84.325, 257.278333, -84.325, 260.87825, -84.325, 264.478167, -84.325, 268.078083, -84.325, 271.678, -84.325, 275.277917, -84.325, 278.877833, -84.325, 282.47775, -84.325, 286.077667, -84.325, 289.677583, -84.325, 293.2775, -84.325, 296.877417, -84.325, 300.477333, -84.325, 304.07725, -84.325, 307.677167, -84.325, 311.277083, -84.325, 314.877, -84.325, 318.476917, -84.325, 322.076833, -84.325, 325.67675, -84.325, 329.276667, -84.325, 332.876583, -84.325, 336.4765, -84.325, 340.076417, -84.325, 343.676333, -84.325, 347.27625, -84.325, 350.876167, -84.325, 354.476083, -84.325, 358.076, -84.325, 361.675917, -84.325, 365.275833, -84.325, 368.87575, -84.325, 372.475667, -84.325, 376.075583, -84.325, 379.6755, -84.325, 383.275417, -84.325, 386.875333, -84.325, 390.47525, -84.325, 394.075167, -84.325, 397.675083, -84.325, 41.275, -84.325899, 41.275, -84.326799, 41.275, -84.327698, 41.275, -84.328597, 41.275, -84.329497, 41.275, -84.330396, 41.275, -84.331295, 41.275, -84.332195, 41.275, -84.333094, 41.275, -84.333993, 41.275, -84.334893, 41.275, -84.335792, 41.275, -84.336691, 41.275, -84.337591, 41.275, -84.33849, 41.275, -84.339389, 41.275, -84.340288, 41.275, -84.341188, 41.275, -84.341667, 41.275, -84.341667, 37.6750833, -84.341667, 34.0751667, -84.341667, 30.47525, -84.341667, 26.8753333, -84.341667, 23.2754167, -84.341667, 19.6755, -84.341667, 16.0755833, -84.341667, 12.4756667, -84.341667, 8.87575, -84.341667, 5.27583333, -84.341667, 1.67591666, -84.341667, -1.924, -84.341667, -5.5239167, -84.341667, -9.1238333, -84.341667, -12.72375, -84.341667, -16.323667, -84.341667, -19.923583, -84.341667, -23.5235, -84.341667, -27.123417, -84.341667, -30.723333, -84.341667, -34.32325, -84.341667, -37.923167, -84.341667, -41.523083, -84.341667, -45.123, -84.341667, -48.722917, -84.341667, -52.322833, -84.341667, -55.92275, -84.341667, -59.522667, -84.341667, -63.122583, -84.341667, -66.7225, -84.341667, -70.322417, -84.341667, -73.922333, -84.341667, -77.52225, -84.341667, -81.122167, -84.341667, -84.722083, -84.341667, -88.322, -84.341667, -91.921917, -84.341667, -95.521833, -84.341667, -99.12175, -84.341667, -102.72167, -84.341667, -106.32158, -84.341667, -109.9215, -84.341667, -113.52142, -84.341667, -117.12133, -84.341667, -120.72125, -84.341667, -124.32117, -84.341667, -127.92108, -84.341667, -131.521, -84.341667, -135.12092, -84.341667, -138.72083, -84.341667, -142.32075, -84.341667, -145.92067, -84.341667, -149.52058, -84.341667, -153.1205, -84.341667, -156.72042, -84.341667, -160.32033, -84.341667, -163.92025, -84.341667, -167.52017, -84.341667, -171.12008, -84.341667, -174.72, -84.341667, -178.31992, -84.341667, -181.91983, -84.341667, -185.51975, -84.341667, -189.11967, -84.341667, -192.71958, -84.341667, -196.3195, -84.341667, -199.91942, -84.341667, -203.51933, -84.341667, -207.11925, -84.341667, -210.71917, -84.341667, -214.31908, -84.341667, -217.919, -84.341667, -221.51892, -84.341667, -225.11883, -84.341667, -228.71875, -84.341667, -232.31867, -84.341667, -235.91858, -84.341667, -239.5185, -84.341667, -243.11842, -84.341667, -246.71833, -84.341667, -250.31825, -84.341667, -253.91817, -84.341667, -257.51808, -84.341667, -261.118, -84.341667, -264.71792, -84.341667, -268.31783, -84.341667, -271.91775, -84.341667, -275.51767, -84.341667, -279.11758, -84.341667, -282.7175, -84.341667, -286.31742, -84.341667, -289.91733, -84.341667, -293.51725, -84.341667, -297.11717, -84.341667, -300.71708, -84.341667, -304.317, -84.341667, -307.91692, -84.341667, -311.51683, -84.341667, -315.11675, -84.341667, 41.2833333))
Which makes no sense to me whatsoever. I mean, why so many points? And why such absurd points? Srid 8307 is "Longitude / Latitude (WGS 84)", it shouldn't be giving me X coordinates of -250, or Y coordinates of 196.
Clearly I'm doing something fundamentally wrong, but I'm at a loss to see what.
I'm hoping it's something obvious. Help would be appreciated.Hi
For someone being new, I advice to start reading, and yes a lot of informartion to deal with in the beginning, is the very well written documentaion.
In your case you should read carefully chapter 6
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_cs_concepts.htm#i891851
with specific attention to 6.2 Geodetic Coordinate Support
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_cs_concepts.htm#i891851
In there you will find a section 6.2.4 Geodetic MBRs
which completely describes the reasons behind the behaviour you have noticed.
most important:
The following considerations apply to the use of geodetic MBRs:
•Do not use a geodetic MBR with spatial objects stored in the database. Use it only to construct a query window.
•The lower-left Y coordinate (minY) must be less than the upper-right Y coordinate (maxY). If the lower-left X coordinate (minX) is greater than the upper-right X coordinate (maxX), the window is assumed to cross the date line meridian (that is, the meridian "opposite" the prime meridian, or both 180 and -180 longitude). For example, an MBR of (-10,10, -100, 20) with longitude/latitude data goes three-fourths of the way around the Earth (crossing the date line meridian), and goes from latitude lines 10 to 20.
•When Spatial constructs the MBR internally for the query, lines along latitude lines are densified by adding points at one-degree intervals. This might affect results for objects within a few meters of the edge of the MBR (especially objects in the middle latitudes in both hemispheres).
•When an optimized rectangle spans more than 119 degrees in longitude, it is internally divided into three rectangles; and as a result, these three rectangles share an edge that is the common boundary between them. If you validate the geometry of such an optimized rectangle, error code 13351 is returned because the internal rectangles have a shared edge. You can use such an optimized rectangle for queries with only the following: SDO_ANYINTERACT operator, SDO_RELATE operator with the ANYINTERACT mask, or SDO_GEOM.RELATE function with the ANYINTERACT mask. (Any other queries on such an optimized rectangle may return incorrect results.)
Good luck
Luc -
Debugging Simple transformation program
can i know how to debugg a simple transformation program
Number of ways
When in SE80, and executing by a Tran Code, one of the options is to run in Debug mode.
Another is to set a break point in the program and then run it. It will stop at the break point IF it gets there
Yet another is once a program is running and is stopped at a screen, use /H in the transaction field in the Top Left area of
every screen (unless you have it shut off). -
Questions concerning ST Simple Transformations
I got some questions concerning Simple Transformations:
1.) When editing a simple transformation, how to insert comments? In pure ABAP, a comment line must have as asterisk in the first column...
2.) I use <tt:loop>...</tt:loop> and want to use the index of the currently processed entry, like SY-TABIX when implementing a "LOOP AT itab" in ABAP. Is there a way?
Thanks for your answer, points will be rewared...
-MIKEHi Jack, please find some sample coding below that will solve your issue:
<tt:cond check="not-initial(ref('E1EDL20.INCO1'))">
<INCO1 tt:value-ref="E1EDL20.INCO1"/>
</tt:cond>
With the simple transformation tt cond statment you can make an XML tag optional. In below example during deserialisation xml tag <INCO1> will be skipped when not availabke in the xml and SAP data E1EDL20.INCO1 will not be filled by the transformation.
Regards. Please give points when usefull ! -
Optional XML fields in Simple transformations (ST)
Hi, I am using Simple Transformation (ST) to convert an XML file into ABAP data. In my XML file some XML tags are optional: sometimes they are available in the file, sometimes they are not. I can not find out how to define a ST for this.
Either the XML fields are in the ST definition and then these field should also be in the XML file or
the XML fields are not in the ST definition and then these fields are not allowed in the XML.
Regards jackHi Jack, please find some sample coding below that will solve your issue:
<tt:cond check="not-initial(ref('E1EDL20.INCO1'))">
<INCO1 tt:value-ref="E1EDL20.INCO1"/>
</tt:cond>
With the simple transformation tt cond statment you can make an XML tag optional. In below example during deserialisation xml tag <INCO1> will be skipped when not availabke in the xml and SAP data E1EDL20.INCO1 will not be filled by the transformation.
Regards. Please give points when usefull ! -
How to Create a Simple Transformation code Programatically
I have a requirement to convert an input xml string into a complex ABAP structure. I am thinking of using Simple Transformation (ST).
I want to find out if there is any program / function module which can "generate" the transformation code (ST program) by giving the ABAP structure name (ie, the SE11 name of the ABAP structure). That would save a lot of effort. Any ideas?
thanksHi Janet,
1. XML File -
> Internal table
2. I understand the above is ur requirement.
3. Below is my program.
It does three things :
a) selects data from T001 table
b) Converts into XML and puts it into a file.
c) In second phase,
It reads the file
and Populates the T001 table again (which has been cleareed explicitly)
4. See FIRST PHASE (itab to xml)
SECOND PHASE (xml to itab)
in my program
5.
REPORT abc.
DATA
DATA : t001 LIKE TABLE OF t001 WITH HEADER LINE.
DATA : BEGIN OF itab OCCURS 0,
a(100) TYPE c,
END OF itab.
DATA: xml_out TYPE string .
DATA : BEGIN OF upl OCCURS 0,
f(255) TYPE c,
END OF upl.
DATA: xmlupl TYPE string .
FIRST PHASE
FIRST PHASE
FIRST PHASE
Fetch Data
SELECT * FROM t001 INTO TABLE t001 WHERE bukrs = '1000'.
XML
CALL TRANSFORMATION ('ID')
SOURCE tab = t001[]
RESULT XML xml_out.
Convert to TABLE
CALL FUNCTION 'HR_EFI_CONVERT_STRING_TO_TABLE'
EXPORTING
i_string = xml_out
i_tabline_length = 100
TABLES
et_table = itab.
Download
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filetype = 'BIN'
filename = 'd:\xx.xml'
TABLES
data_tab = itab.
SECOND PHASE
SECOND PHASE
SECOND PHASE
BREAK-POINT.
REFRESH t001.
CLEAR t001.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'D:\XX.XML'
filetype = 'BIN'
TABLES
data_tab = upl.
LOOP AT upl.
CONCATENATE xmlupl upl-f INTO xmlupl.
ENDLOOP.
XML
CALL TRANSFORMATION ('ID')
SOURCE XML xmlupl
RESULT tab = t001[]
BREAK-POINT.
regards,
amit . -
Simple Transformation to deserialize an XML file into ABAP data structures?
I'm attempting to write my first simple transformation to deserialize
an XML file into ABAP data structures and I have a few questions.
My simple transformation contains code like the following
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates"
xmlns:pp="http://www.sap.com/abapxml/types/defined" >
<tt:type name="REPORT" line-type="?">
<tt:node name="COMPANY_ID" type="C" length="10" />
<tt:node name="JOB_ID" type="C" length="20" />
<tt:node name="TYPE_CSV" type="C" length="1" />
<tt:node name="TYPE_XLS" type="C" length="1" />
<tt:node name="TYPE_PDF" type="C" length="1" />
<tt:node name="IS_NEW" type="C" length="1" />
</tt:type>
<tt:root name="ROOT2" type="pp:REPORT" />
<QueryResponse>
<tt:loop ref="ROOT2" name="line">
<QueryResponseRow>
<CompanyID>
<tt:value ref="$line.COMPANY_ID" />
</CompanyID>
<JobID>
<tt:value ref="$line.JOB_ID" />
</JobID>
<ExportTypes>
<tt:loop>
<ExportType>
I don't know what to do here (see item 3, below)
</ExportType>
</tt:loop>
</ExportTypes>
<IsNew>
<tt:value ref="$line.IS_NEW"
map="val(' ') = xml('false'), val('X') = xml('true')" />
</IsNew>
</QueryResponseRow>
</tt:loop>
</QueryResponse>
</tt:loop>
1. In a DTD, an element can be designated as occurring zero or one
time, zero or more times, or one or more times. How do I write the
simple transformation to accommodate these possibilities?
2. In trying to accommodate the "zero or more times" case, I am trying
to use the <tt:loop> instruction. It occurs several layers deep in the
XML hierarchy, but at the top level of the ABAP table. The internal
table has a structure defined in the ABAP program, not in the data
dictionary. In the simple transformation, I used <tt:type> and
<tt:node> to define the structure of the internal table and then
tried to use <tt:loop ref="ROOT2" name="line"> around the subtree that
can occur zero or more times. But every variation I try seems to get
different errors. Can anyone supply a working example of this?
3. Among the fields in the internal table, I've defined three
one-character fields named TYPE_CSV, TYPE_XLS, and TYPE_PDF. In the
XML file, I expect zero to three elements of the form
<ExportType exporttype='csv' />
<ExportType exporttype='xls' />
<ExportType exporttype='pdf' />
I want to set field TYPE_CSV = 'X' if I find an ExportType element
with its exporttype attribute set to 'csv'. I want to set field
TYPE_XLS = 'X' if I find an ExportType element with its exporttype
attribute set to 'xls'. I want to set field TYPE_PDF = 'X' if I find
an ExportType element with its exporttype attribute set to 'pdf'. How
can I do that?
4. For an element that has a value like
<ErrorCode>123</ErrorCode>
in the simple transformation, the sequence
<ErrorCode> <tt:value ref="ROOT1.CODE" /> </ErrorCode>
seems to work just fine.
I have other situations where the XML reads
<IsNew value='true' />
I wanted to write
<IsNew>
<tt:value ref="$line.IS_NEW"
map="val(' ') = xml('false'), val('X') = xml('true')" />
</IsNew>
but I'm afraid that the <tt:value> fails to deal with the fact that in
the XML file the value is being passed as the value of an attribute
(named "value"), rather than the value of the element itself. How do
you handle this?Try this code below:
data l_xml_table2 type table of xml_line with header line.
W_filename - This is a Path.
if w_filename(02) = '
open dataset w_filename for output in binary mode.
if sy-subrc = 0.
l_xml_table2[] = l_xml_table[].
loop at l_xml_table2.
transfer l_xml_table2 to w_filename.
endloop.
endif.
close dataset w_filename.
else.
call method cl_gui_frontend_services=>gui_download
exporting
bin_filesize = l_xml_size
filename = w_filename
filetype = 'BIN'
changing
data_tab = l_xml_table
exceptions
others = 24.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif. -
Using Simple Transformations with Objects tt:copy .. results in Exception
Question:
How can I serialize an ABAP-Object-Instanz with my own simple transformation?
In the sap-documentation I found the following solution for the serialisation of any data-objects.
"z_steffens_simple_transf":
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT"/>
<tt:template>
<root>
<tt:copy ref="ROOT"/>
</root>
</tt:template>
</tt:transform>
Following the example I wrote this report:
report zspahr_test_simple_transf.
class serializable definition.
public section.
interfaces if_serializable_object.
data attr type string value 'Attribute'.
endclass.
method main_serializable.
data: oref type ref to serializable,
xmlstr type xstring.
create object oref.
call transformation id
source root = oref
result xml xmlstr.
call function 'DISPLAY_XML_STRING'
exporting
xml_string = xmlstr.
call transformation z_steffens_simple_object
source root = oref
result xml xmlstr.
call function 'DISPLAY_XML_STRING'
exporting
xml_string = xmlstr.
endmethod. "main_
start-of-selection.
demo=>main_serializable( ).
Executing this report leads to an exception "CX_SY_REF_NOT_SUPPORTED".
The "standard" transformation "ID" ist working an translates my object-instance into an asXML representation:
<?xml version="1.0" encoding="utf-8" ?>
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
- <asx:values>
<ROOT href="#o3" />
</asx:values>
- <asx:heap xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:abap="http://www.sap.com/abapxml/types/built-in" xmlns:cls="http://www.sap.com/abapxml/classes/global" xmlns:dic="http://www.sap.com/abapxml/types/dictionary">
- <prg:SERIALIZABLE xmlns:prg="http://www.sap.com/abapxml/classes/program/ZSPAHR_TEST_SIMPLE_TRANSF" id="o3">
- <local.SERIALIZABLE>
<ATTR>Attribute</ATTR>
</local.SERIALIZABLE>
</prg:SERIALIZABLE>
</asx:heap>
</asx:abap>
How can I do this with my own Simple Transformation "ZSPAHR_TEST_SIMPLE_TRANSF" ?
I want to serialize my object using my own xml-structure, not the asXML-structure !
Regards
SteffenHi,
try like this,i think it may help you.
ABAP:
CALL TRANSFORMATION ztrans_test
SOURCE
root = partab
RESULT XML lv_xstring.
Trnsformation:
<tt:root name="ROOT" type="?"/>
<tt:template>
<VALUES>
<VALUE_SOURCE>
<tt:value ref=".ROOT"/>
</VALUE_SOURCE>
<VALUE_PARAM>
<tt:value ref="NAME"/>
<tt:value ref="VALUE"/>
</VALUE_PARAM>
</VALUES>
Thanks,
Rajesh. -
How to escape special characters in Simple Transformation
Hi Experts,
I have got a problem to get a well formed xml document from the below simple transformation. The content of maktx contains
special characters like & <, which are not allowed in a well formed XML-Document. But the result of the Simple Transformation
contains this charcters even after the transformation as you can the in the result below. Has anyone a hint how to escape the
characters included in the maktx.
The transformation for maktx, should be something like
Before: Material & < TEST
After: Material & < TEST
Report wihich calls the simple transformation
types:
BEGIN OF t_mat,
matnr type matnr,
maktx type maktx,
end of t_mat.
Data:
mat type t_mat,
xml_stream type xstring.
START-OF-SELECTION.
mat-matnr = '4711'.
mat-maktx = 'Material & < Test'.
CALL TRANSFORMATION ztest_st2
SOURCE mat = mat
RESULT XML xml_stream.
CALL FUNCTION 'DISPLAY_XML_STRING'
EXPORTING xml_string = xml_stream.
Simple Transformation
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="MAT"/>
<tt:template>
<Leistungsschild>
<CHARACT> MATNR </CHARACT>
<CHARACT_DESCR> Materialnummer </CHARACT_DESCR>
<VALUE tt:value-ref="MAT.MATNR"/>
<CHARACT> MAKTX </CHARACT>
<CHARACT_DESCR> Materialkurztext </CHARACT_DESCR>
<VALUE tt:value-ref="MAT.MAKTX" />
</Leistungsschild>
</tt:template>
</tt:transform>
RESULT
<?xml version="1.0" encoding="utf-8" ?>
<Leistungsschild>
<CHARACT>MATNR</CHARACT>
<CHARACT_DESCR>Materialnummer</CHARACT_DESCR>
<VALUE>4711</VALUE>
<CHARACT>MAKTX</CHARACT>
<CHARACT_DESCR>Materialkurztext</CHARACT_DESCR>
<VALUE>Material & < Test</VALUE> </Leistungsschild>Hi Sandra,
First of all thaks for your quick answer to my problem.
I see what you mean and get the same result, if I am using data-type string instead of xstring. But the recommendation in the XML-Books of SAP is to use XSTRING to save memory and circumflex problems between Codepages, when writing the XML-Stream to a filesystem.
As you can see in the code abvoe I am using a SAP-FM to display the XML-Stream and this FM works only with XSTRING´s,
that is one reason why I don´t understand that it displays it in the wrong way.
Even the Debugger shows me for the XSTRING the wrong result. Does all that mean that the escaping will not be applyed if you are working with XSTING´s?? -
Transformation pointing to Quality Client in Production System Repeatedly
Hi,
I need to understand one issue which is explained in detail below step by step.
1. I created one Customized Data Source(Full Load) and replicated in BW.
2. Also created Info Objects, DSO, Info Package, Transformation, DTP.
3. While transporting this modelling to Production(first time), i unknowingly/mistakenly missed capturing the datasource in Transport Request.Sequence of transport was -
Data Source
Info Area
Info Object Catalogue
Info Object
DSO
Cube & MP
Data Source
Transformation
Info Package & DTP
Now, the moment TR for transformation was transported it threw an error - "Data Source does not exist in Quality client". Then I transported the Data Source TR and after that re-transported the transformation TR production and this error was removed.
But, there were 2 transformations in production - 1) Pointing to Production, 2) Pointing to quality.
4. I request the basis team to delete the second transformation(pointing to quality) from BW production system.
5. After that we captured Data Source and transformation in same TR and transport was successful.
6. Now, after few days we transported a change to production for same object and the system again threw the same error mentioned in point no.3 above and created two transformations again.
How to resolve this issue permanently and I also want to know the reason of this type of system behavior.Mohammed,
I did that also - please read my step no.4.
We are able to delete the transformation which was referring to quality client and then captured D.S & transformation in a single TR and transport as successful.
Now, after few days I did one change in the same transformation and transported to production.
System Behavior:
Error - " No source exist (i.e.,system referred to quality in production)".
Also again transformation was visible in production which was referring to quality client(which we already deleted with the help of BASIS).
Now since again the transformation needs to be deleted from production, our basis team is telling us to they cannot delete objects every time in production.Thus,
1. Is there any option to solve this issue permanently?
2. Also is it necessary to transport data source along with the transformation which is directly linked to data source?
Please Note: We have Dev+Quality as one client and Production. -
Simple transformation tt: utf-16 to utf-8 encoding
Hi,
(reposting here as no response in the ABAP General forum)
I have a simple transformation the results of which are written to a file using open dataset. The XML in the file is appearing with encoding utf-16 but I need utf-8. I tried placing the following line in the transformation but it did not work:
<xsl:output encoding="utf-8"/>
The only way it works is if I use type xstring for the result of the transformation and not string. I then have to convert the xml from xstring to string before writing to the file. This works but I was wondering if there was an easier way to change the encoding of a simple transformation (tt:) ?????????
CheHi All,
Reopening this old post, as I found that the same transformation and same program call results in an XML with utf-8 in a NW 7.30 system, while utf-16 in a NW 7.01 system!
Any ideas why would it happen like this? And if there's anything that can be done to make sure the encoding remains same in both the systems?
Maybe you are looking for
-
No goods receipt possible in PO
Hi, When I try to do MIGO for a PO, I get the following error message - "No goods receipt possible in PO" Can you please tell me why it is hapenning and how to correct it Rgds, Sandeep
-
Example BPEL Process calling/invoking a web service.
Hi, 1.Could someone please help me with this...Need some guidance regards calling a web service from a simple bpel process. Is there any example or tutorial which would help us to design a simple bpel process which takes in some input values from the
-
Adding Transparency/alpha to Embedded Font
Hi guys, I have embedded a font type in my application. Its working fine inside a text area. Now i need to add 60% transparency to it. In fact I need multiple transparency levels. Like - 60 % transparency for TextARea 70% for WindowShade Header etc.
-
Neither iDVD or Toast 8 will burn DVD + R's
I have always used + R DVD's, but now they are ejected with a read error. DVD - R's work OK David
-
Hi all, we remote upgraded our old LMS 4.x to LMS 4.25. After restore of DB trying to access <server>/dbreader/dbreader.html an auth error will be shown. /opt/CSCOpx/bin/dbaccess.pl install doesn't work! Any special hack to enable access to dbreader