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: 

sap to xml

Former Member
0 Kudos

Hi all,

iam working on SAp 4.7 version.

the source code is going to dump. the purpose of this to convert data to XML file and store in presentation server. but i hv to use FM SAP_CONVERT_TO_XML_FORMAT. (No other options).

i'm providing source code also.plz any one help me out. its urgent.

TABLES: VEKP,

LIKP,

VBAK.

TYPE-POOLS: IXML.

DATA: BEGIN OF ITAB OCCURS 0,

BRGEW LIKE VEKP-BRGEW,

LAENG LIKE VEKP-LAENG,

BREIT LIKE VEKP-BREIT,

EXIDV LIKE VEKP-EXIDV,

HOEHE LIKE VEKP-HOEHE,

VBELN LIKE LIKP-VBELN,

KUNNR LIKE LIKP-KUNNR,

VDATU LIKE VBAK-VDATU,

END OF ITAB.

TYPES: BEGIN OF MY_XML ,

DATA(256) TYPE X,

END OF MY_XML.

DATA: XML_TABLE TYPE TABLE OF MY_XML.

DATA: L_XML_SIZE TYPE I,

LD_FULLPATH TYPE STRING.

PARAMETERS: HU LIKE VEKP-EXIDV.

START-OF-SELECTION.

SELECT A~BRGEW

A~LAENG

A~BREIT

A~EXIDV

A~HOEHE

B~VBELN

B~KUNNR

C~VDATU

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM VEKP AS A INNER JOIN LIKP AS B

ON AERDAT = BERDAT INNER JOIN VBAK AS C

ON BERDAT = CERDAT

WHERE A~EXIDV = HU.

CALL FUNCTION 'SAP_CONVERT_TO_XML_FORMAT'

  • EXPORTING

  • I_FIELD_SEPERATOR = ','

  • I_LINE_HEADER =

  • I_FILENAME =

  • I_APPL_KEEP = ' '

  • I_XML_DOC_NAME =

IMPORTING

PE_BIN_FILESIZE = L_XML_SIZE

TABLES

I_TAB_SAP_DATA = ITAB

CHANGING

I_TAB_CONVERTED_DATA = XML_TABLE

  • EXCEPTIONS

  • CONVERSION_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.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

BIN_FILESIZE = L_XML_SIZE

FILENAME = LD_FULLPATH

FILETYPE = 'BIN'

IMPORTING

FILELENGTH = L_XML_SIZE

TABLES

DATA_TAB = XML_TABLE

  • FIELDNAMES =

.

IF SY-SUBRC <> 0.

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

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

Thanks.

Girish M

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

there is one error in ur code.

TABLES: VEKP,

LIKP,

VBAK.

TYPE-POOLS: IXML.

DATA: BEGIN OF ITAB OCCURS 0,

BRGEW LIKE VEKP-BRGEW,

LAENG LIKE VEKP-LAENG,

BREIT LIKE VEKP-BREIT,

EXIDV LIKE VEKP-EXIDV,

HOEHE LIKE VEKP-HOEHE,

VBELN LIKE LIKP-VBELN,

KUNNR LIKE LIKP-KUNNR,

VDATU LIKE VBAK-VDATU,

END OF ITAB.

TYPES: BEGIN OF MY_XML ,

DATA(256) TYPE X,

END OF MY_XML.

DATA: XML_TABLE TYPE TABLE OF MY_XML.

DATA: L_XML_SIZE TYPE I,

<b>LD_FULLPATH TYPE STRING value 'C:\test.txt'</b>.

PARAMETERS: HU LIKE VEKP-EXIDV.

START-OF-SELECTION.

SELECT A~BRGEW

A~LAENG

A~BREIT

A~EXIDV

A~HOEHE

B~VBELN

B~KUNNR

C~VDATU

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM VEKP AS A INNER JOIN LIKP AS B

ON AERDAT = BERDAT INNER JOIN VBAK AS C

ON BERDAT = CERDAT

WHERE A~EXIDV = HU.

CALL FUNCTION 'SAP_CONVERT_TO_XML_FORMAT'

  • EXPORTING

  • I_FIELD_SEPERATOR = ','

  • I_LINE_HEADER =

  • I_FILENAME =

  • I_APPL_KEEP = ' '

  • I_XML_DOC_NAME =

IMPORTING

PE_BIN_FILESIZE = L_XML_SIZE

TABLES

I_TAB_SAP_DATA = ITAB

CHANGING

I_TAB_CONVERTED_DATA = XML_TABLE

  • EXCEPTIONS

  • CONVERSION_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.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

BIN_FILESIZE = L_XML_SIZE

FILENAME = LD_FULLPATH

FILETYPE = 'BIN'

IMPORTING

FILELENGTH = L_XML_SIZE

TABLES

DATA_TAB = XML_TABLE

  • FIELDNAMES =

.

IF SY-SUBRC <> 0.

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

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

Regs

Manas

Pls reward the points.

15 REPLIES 15

Former Member
0 Kudos

Hi

i did the same thing in ECC6.0 and its running smoothly and working fine.

&----


*& Report ZTESTSDN

*&

&----


*&

*&

&----


REPORT ztestsdn.

TABLES: vekp,

likp,

vbak.

TYPE-POOLS: ixml.

DATA: itab LIKE but000 OCCURS 0 WITH HEADER LINE.

TYPES: BEGIN OF my_xml ,

data(256) TYPE x,

END OF my_xml.

DATA: xml_table TYPE TABLE OF my_xml.

DATA: l_xml_size TYPE i,

ld_fullpath TYPE string.

START-OF-SELECTION.

SELECT * FROM but000 INTO TABLE itab UP TO 10 ROWS.

CALL FUNCTION 'SAP_CONVERT_TO_XML_FORMAT'

  • EXPORTING

  • I_FIELD_SEPERATOR = ','

  • I_LINE_HEADER =

  • I_FILENAME =

  • I_APPL_KEEP = ' '

  • I_XML_DOC_NAME =

IMPORTING

pe_bin_filesize = l_xml_size

TABLES

i_tab_sap_data = itab

CHANGING

i_tab_converted_data = xml_table

  • EXCEPTIONS

  • CONVERSION_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.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

bin_filesize = l_xml_size

filename = 'C:\test.txt'

filetype = 'BIN'

IMPORTING

filelength = l_xml_size

TABLES

data_tab = xml_table

  • FIELDNAMES =

.

IF sy-subrc <> 0.

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

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

ENDIF.

Regs

Manas

Former Member
0 Kudos

You can use ST. Here is a sample code for your program.

Instead of SAP_CONVERT_TO_XML_FORMAT

use the following code.

data : xmlstr type string,

date like syst-datum,

time like syst-uzeit.

call transformation id

source xmldat = syst-datum "Optional

xmltim = syst-uzeit "Optional

ref = itab[]

result xml xmlstr.

to convert is back

call transformation

source xml xmlstr

result xmldat = date

xmltim = time

ref = itab[].

Albert

Former Member
0 Kudos

Hi,

there is one error in ur code.

TABLES: VEKP,

LIKP,

VBAK.

TYPE-POOLS: IXML.

DATA: BEGIN OF ITAB OCCURS 0,

BRGEW LIKE VEKP-BRGEW,

LAENG LIKE VEKP-LAENG,

BREIT LIKE VEKP-BREIT,

EXIDV LIKE VEKP-EXIDV,

HOEHE LIKE VEKP-HOEHE,

VBELN LIKE LIKP-VBELN,

KUNNR LIKE LIKP-KUNNR,

VDATU LIKE VBAK-VDATU,

END OF ITAB.

TYPES: BEGIN OF MY_XML ,

DATA(256) TYPE X,

END OF MY_XML.

DATA: XML_TABLE TYPE TABLE OF MY_XML.

DATA: L_XML_SIZE TYPE I,

<b>LD_FULLPATH TYPE STRING value 'C:\test.txt'</b>.

PARAMETERS: HU LIKE VEKP-EXIDV.

START-OF-SELECTION.

SELECT A~BRGEW

A~LAENG

A~BREIT

A~EXIDV

A~HOEHE

B~VBELN

B~KUNNR

C~VDATU

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM VEKP AS A INNER JOIN LIKP AS B

ON AERDAT = BERDAT INNER JOIN VBAK AS C

ON BERDAT = CERDAT

WHERE A~EXIDV = HU.

CALL FUNCTION 'SAP_CONVERT_TO_XML_FORMAT'

  • EXPORTING

  • I_FIELD_SEPERATOR = ','

  • I_LINE_HEADER =

  • I_FILENAME =

  • I_APPL_KEEP = ' '

  • I_XML_DOC_NAME =

IMPORTING

PE_BIN_FILESIZE = L_XML_SIZE

TABLES

I_TAB_SAP_DATA = ITAB

CHANGING

I_TAB_CONVERTED_DATA = XML_TABLE

  • EXCEPTIONS

  • CONVERSION_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.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

BIN_FILESIZE = L_XML_SIZE

FILENAME = LD_FULLPATH

FILETYPE = 'BIN'

IMPORTING

FILELENGTH = L_XML_SIZE

TABLES

DATA_TAB = XML_TABLE

  • FIELDNAMES =

.

IF SY-SUBRC <> 0.

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

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

Regs

Manas

Pls reward the points.

0 Kudos

Hi Manas,

Thanks for ur replay.

i checked the program using modification done by u . again same thing dump(type conflict). i think the change in the version. becoz i am working on 4.7 version.

plz help me out.

Thanks.

Girish M

0 Kudos

Hi,

provide me the dump info. i will help u out.

i am thinking that there may be some type mismatch on ur code.

Regs

Manas

0 Kudos

Hi Manas,

"type conflict when calling function module 'SAP_CONVERT_TO_XML_FORMAT'.

ERROR ANALYSIS

an exceptions occured. this exception will deal with more detail below . the exception , assigned to class 'cx_sy_dyn_call_illegay_type' not caugth, which lead to run time error, the reson of this exceptionis: the system tried to pass internal table 'XML_TABLE 'to the formal parameter 'I_TAB_CONVERTED_DATA'. but type conflict occured between the formal and actual parameter"

This is one i am geting.

Thanks

Girish M

0 Kudos

Hi Manas,

I didt get respons from u. its urgent.

Thanks

Girish M

0 Kudos

Hi Girish,

yesterday i didnt see ur reply.

I saw ur Dump info and i got where u r facing the problem. Please correct ur code accordingly and try. If it works pls reward points for my work.

TABLES: VEKP,

LIKP,

VBAK.

<b>TYPE-POOLS: IXML, TRUXS</b>.

DATA: BEGIN OF ITAB OCCURS 0,

BRGEW LIKE VEKP-BRGEW,

LAENG LIKE VEKP-LAENG,

BREIT LIKE VEKP-BREIT,

EXIDV LIKE VEKP-EXIDV,

HOEHE LIKE VEKP-HOEHE,

VBELN LIKE LIKP-VBELN,

KUNNR LIKE LIKP-KUNNR,

VDATU LIKE VBAK-VDATU,

END OF ITAB.

<b>DATA: XML_TABLE TYPE TRUXS_XML_TABLE</b>.

DATA: L_XML_SIZE TYPE I,

LD_FULLPATH TYPE STRING value 'C:\test.txt'.

PARAMETERS: HU LIKE VEKP-EXIDV.

START-OF-SELECTION.

SELECT A~BRGEW

A~LAENG

A~BREIT

A~EXIDV

A~HOEHE

B~VBELN

B~KUNNR

C~VDATU

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM VEKP AS A INNER JOIN LIKP AS B

ON AERDAT = BERDAT INNER JOIN VBAK AS C

ON BERDAT = CERDAT

WHERE A~EXIDV = HU.

CALL FUNCTION 'SAP_CONVERT_TO_XML_FORMAT'

  • EXPORTING

  • I_FIELD_SEPERATOR = ','

  • I_LINE_HEADER =

  • I_FILENAME =

  • I_APPL_KEEP = ' '

  • I_XML_DOC_NAME =

IMPORTING

PE_BIN_FILESIZE = L_XML_SIZE

TABLES

I_TAB_SAP_DATA = ITAB

CHANGING

I_TAB_CONVERTED_DATA = XML_TABLE

  • EXCEPTIONS

  • CONVERSION_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.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

BIN_FILESIZE = L_XML_SIZE

FILENAME = LD_FULLPATH

FILETYPE = 'BIN'

IMPORTING

FILELENGTH = L_XML_SIZE

TABLES

DATA_TAB = XML_TABLE

  • FIELDNAMES =

.

IF SY-SUBRC <> 0.

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

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

Now it should work.

Reward points.

Regs

Manas

0 Kudos

Hi Manas,

sorry yaar its again going to dump.

The dump is like this.

"A dynamic type conflict occured during reference assignment.

ERROR ANALYSIS.

the exception which is assigned to class'CX_SY_MOVE_CAST_ERROR' was neither caught nor passed along using a rising clause, inthe producer 'CREATE' "(METHOD)"

since the caller of the procedure could not excepted this exception to occur, the running program is terminated.

the resons for the exception is

a 'CAST' operations ('?=' or 'MOVE? TO'') tried to assign object or interface variable to a reference variable.

How ever the contents of the source variabledo not fit in the target source type '\CLASS=CL_XML'

Target type 'FUNCTION-POOL=TRUX\CLASS=CL_XML'"

This is bump wt im geting.

plz try it.

Thanks

Girish M

0 Kudos

Hi,

In my system ECC 6.0 its running fine. I could not check it in 4.7 as i dont have that system. I will try to find out it and reply you.

I dont think the error is a major issue. it could be a small problem but i need some system at least to chk that.

Regs

Manas.

0 Kudos

Hi Manas,

now it is working but the data is not coming to XML file .file is openig in C drive. I think data is converting to XML data. the error is:

"The XML page cannot be displayed

Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later. "

0 Kudos

Hi,

in the downloading fuction use like below.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

bin_filesize = l_xml_size

filename = <b>'C:\test.xml'</b>

filetype = 'BIN'

IMPORTING

filelength = l_xml_size

TABLES

data_tab = xml_table

  • FIELDNAMES =

.

IF sy-subrc <> 0.

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

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

ENDIF.

Then it will work and save the file in XML format.

Pls reward the points for my work.

Regs

Manas

0 Kudos

Hi Manas,

Thanx a lot to spend ur time with me. i rewarded for that one.now my requirement is the xml file should be look like the sample file give by them. that is in text format.just im attaching that file .give me some idea to bring that in XML file.r any sample code for this one.

<SHIP_REQUEST>

<HOST_THERMAL_PRINTER>
xxxx </HOST_THERMAL_PRINTER>

<HOST_LASER_PRINTER>
YYYY</HOST_LASER_PRINTER>

<SHIPPER>SONY_CARSON</SHIPPER>

<SHIPPER_SHIPMENT_REFERENCE>80508809</SHIPPER_SHIPMENT_REFERENCE>

<CONSIGNEE_CODE>1234</CONSIGNEE_CODE>

<CONSIGNEE_CONTACT>ACME ELECTRONICS INC</CONSIGNEE_CONTACT>

<CONSIGNEE_COMPANY>ACME ELECTRONICS INC</CONSIGNEE_COMPANY>

<CONSIGNEE_ADDRESS1>BROWNSVILLE WAREHOUSE</CONSIGNEE_ADDRESS1>

<CONSIGNEE_ADDRESS2>5485 EAST 14TH STREET SUITE C</CONSIGNEE_ADDRESS2>

<CONSIGNEE_CITY>BROWNSVILLE</CONSIGNEE_CITY>

<CONSIGNEE_STATE>TX</CONSIGNEE_STATE>

<CONSIGNEE_POSTALCODE>78521</CONSIGNEE_POSTALCODE>

<CONSIGNEE_COUNTRYID>US</CONSIGNEE_COUNTRYID>

<CONSIGNEE_PHONE>8881111111</CONSIGNEE_PHONE>

<CONSIGNEE_ACCOUNT></CONSIGNEE_ACCOUNT>

<CONSIGNEE_SHIPMENT_REFERENCE>12345678901234567890</CONSIGNEE_SHIPMENT_REFERENCE>

<SERVICE>TANDATA_UPS.UPS.GND</SERVICE>

<TERMS>SHIPPER</ TERMS>

<COMMITMENT>FOREVER</COMMITMENT>

<BILL_FLAG></BILL_FLAG>

<BILL_ACCOUNT></BILL_ACCOUNT>

<BILL_COMPANY></BILL_COMPANY>

<BILL_ADDRESS1></BILL_ADDRESS1>

<BILL_ADDRESS2></BILL_ADDRESS2>

<BILL_CITY></BILL_CITY>

<BILL_STATE></BILL_STATE>

<BILL_POSTALCODE></BILL_POSTALCODE>

<BILL_COUNTRYID></BILL_COUNTRYID>

<BILL_CONTACT></BILL_CONTACT>

<BILL_PHONE></BILL_PHONE>

<ALT_RETURN_ADDRESS_FLAG>1</ALT_RETURN_ADDRESS_FLAG>

<RETURN_COMPANY>WILEY ELECTRONICS</RETURN_COMPANY>

<RETURN_ADDRESS1>123 MAIN</RETURN_ADDRESS1>

<RETURN_ADDRESS2></RETURN_ADDRESS2>

<RETURN_ADDRESS3></RETURN_ADDRESS3>

<RETURN_ADDRESS4></RETURN_ADDRESS4>

<RETURN_CITY>ANYTOWN</RETURN_CITY>

<RETURN_STATE>AZ</RETURN_STATE>

<RETURN_POSTALCODE>85222</RETURN_POSTALCODE>

<RETURN_COUNTRYID>US</RETURN_COUNTRYID>

<RETURN_CONTACT>SHIPPING MGR</RETURN_CONTACT>

<RETURN_PHONE>8005555555</RETURN_PHONE>

</SHIP_REQUEST>

Thanks

Girish M

0 Kudos

Hi Manas,

plz send any sample code r notes on converting XML file as we like.

Thanks

Girish M

Former Member
0 Kudos

Look at this Thread.

A