Application Development and Automation 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: 
Read only

ABAP and XML file

Former Member
0 Likes
785

Hi all,

How we can process xml files in abap?

We get orders as xml files from our customers and want to read or do something else.. However I do not know exact way to do what I need..

Thanks.

Hi all,

How we can process xml files in abap?

We get orders as xml files from our customers and want to read or do something else.. However I do not know exact way to do what I need..

Thanks.

4 REPLIES 4
Read only

Former Member
0 Likes
717

refer this link.

Read only

0 Likes
717

Thank you Pandurangan,

Is not there anyone who wants rewards for his/her helpful replies?

I would like to reward almost all answers on this topic.

Thanks.

Read only

Former Member
0 Likes
717

hi,

this is the program to create sales orders from an XML file, kindly take care about validations

report yxml_crea_sales_upd no standard page heading.

data : order_header_in like bapisdhd1 occurs 0 with header line,

order_header_ix like bapisdhd1x occurs 0 with header line.

data : order_items_in like bapisditm occurs 0 with header line,

order_items_ix like bapisditmx occurs 0 with header line.

data : order_partners like bapiparnr occurs 0 with header line.

data : return1 like bapiret2 occurs 0 with header line.

data : w_vbeln like bapivbeln-vbeln.

data:

order_schedules_in like bapischdl occurs 0 with header line,

order_schedules_ix like bapischdlx occurs 0 with header line.

data: filename type string,

xmldata type xstring .

data: result_xml type standard table of smum_xmltb.

data: return type standard table of bapiret2 .

constants: line_size type i value 255.

data: begin of xml_tab occurs 0,

raw(line_size) type x,

end of xml_tab,

file type string,

size type i.

  • upload the xml file

filename = 'C:\so_new.xml' .

call function 'GUI_UPLOAD'

exporting

filename = filename

filetype = 'BIN'

  • has_field_separator = ' '

  • header_length = 0

importing

filelength = size

tables

data_tab = xml_tab

exceptions

others = 1.

call function 'SCMS_BINARY_TO_XSTRING'

exporting

input_length = size

  • FIRST_LINE = 0

  • LAST_LINE = 0

importing

buffer = xmldata

tables

binary_tab = xml_tab

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.

call function 'SMUM_XML_PARSE'

exporting

xml_input = xmldata

tables

xml_table = result_xml

return = return.

data: result_xml1 like smum_xmltb.

*data: begin of salesorder occurs 0,

  • doctype like bapisdhd1-doc_type,

  • salesorg like bapisdhd1-sales_org,

  • distrchan like bapisdhd1-distr_chan,

  • division like bapisdhd1-division,

  • salesoff like bapisdhd1-sales_off,

  • purchnoc like bapisdhd1-purch_no_c,

  • purchdate like bapisdhd1-purch_date,

  • reqdateh like bapisdhd1-req_date_h,

  • material like bapisditm-material,

  • plant like bapisditm-plant,

  • division1 like bapisditm-division,

  • targetqu like bapisditm-target_qu,

  • partnrole like bapiparnr-partn_role,

  • partnnumb like bapiparnr-partn_numb,

  • itmnumber like bapischdl-itm_number,

  • reqquantity like bapischdl-req_qty,

  • end of salesorder.

*

data: item_cnt type i value 0,sch_cnt type i value 0,

patnr_flag type i value 0.

loop at result_xml into result_xml1.

*Using case and end case

case result_xml1-cname.

when 'doc_type'.

order_header_in-doc_type = result_xml1-cvalue.

when 'sales_org'.

order_header_in-sales_org = result_xml1-cvalue.

when 'distr_chan'.

order_header_in-distr_chan = result_xml1-cvalue.

when 'division'.

order_header_in-division = result_xml1-cvalue.

when 'sales_off'.

order_header_in-sales_off = result_xml1-cvalue.

when 'purch_no_c'.

order_header_in-purch_no_c = result_xml1-cvalue.

when 'purch_date'.

order_header_in-purch_date = result_xml1-cvalue.

when 'req_date_h'.

order_header_in-req_date_h = result_xml1-cvalue.

  • Appending the Order_Header_in table

append order_header_in.

when 'material'.

order_items_in-material = result_xml1-cvalue.

when 'plant'.

order_items_in-plant = result_xml1-cvalue.

  • Appending the Order_Items_In table.

append order_items_in.

item_cnt = item_cnt + 1.

when 'partn_role'.

order_partners-partn_role = result_xml1-cvalue.

when 'partn_numb'.

order_partners-partn_numb = result_xml1-cvalue.

append order_partners.

patnr_flag = 1.

when 'req_qty'.

order_schedules_in-req_qty = result_xml1-cvalue.

  • Appending the Order_Schedules_in table.

append order_schedules_in.

sch_cnt = sch_cnt + 1.

endcase.

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

*Updating the indices

order_header_ix-updateflag = 'I'.

order_header_ix-doc_type = 'X'.

order_header_ix-sales_org = 'X'.

order_header_ix-distr_chan = 'X'.

order_header_ix-division = 'X'.

order_header_ix-sales_off = 'X'.

order_header_ix-purch_no_c = 'X'.

order_header_ix-purch_date = 'X'.

order_header_ix-req_date_h = 'X'.

append order_header_ix.

order_items_ix-updateflag = 'I'.

order_items_ix-material = 'X'.

order_items_ix-plant = 'X'.

append order_items_ix.

order_schedules_ix-updateflag = 'I'.

  • order_schedules_inx-itm_number = 'X'.

order_schedules_ix-req_qty = 'X'.

append order_schedules_ix.

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

if item_cnt = sch_cnt and patnr_flag = 1.

    • Calling the function module for creating the sales order

call function 'BAPI_SALESORDER_CREATEFROMDAT2'

exporting

  • SALESDOCUMENTIN =

order_header_in = order_header_in

order_header_inx = order_header_ix

  • SENDER =

  • BINARY_RELATIONSHIPTYPE =

  • INT_NUMBER_ASSIGNMENT =

  • BEHAVE_WHEN_ERROR =

  • LOGIC_SWITCH =

  • TESTRUN =

  • CONVERT = ' '

importing

salesdocument = w_vbeln

tables

return = return1

order_items_in = order_items_in

order_items_inx = order_items_ix

order_partners = order_partners

order_schedules_in = order_schedules_in

order_schedules_inx = order_schedules_ix

  • ORDER_CONDITIONS_IN =

  • ORDER_CONDITIONS_INX =

  • ORDER_CFGS_REF =

  • ORDER_CFGS_INST =

  • ORDER_CFGS_PART_OF =

  • ORDER_CFGS_VALUE =

  • ORDER_CFGS_BLOB =

  • ORDER_CFGS_VK =

  • ORDER_CFGS_REFINST =

  • ORDER_CCARD =

  • ORDER_TEXT =

  • ORDER_KEYS =

  • EXTENSIONIN =

  • PARTNERADDRESSES =

.

if sy-subrc ne 0.

write: return1-message,return1-number,return1-type.

else.

write: return1-message,return1-number,return1-type.

call function 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

endif.

item_cnt = 0.

sch_cnt = 0.

patnr_flag = 0.

endif.

endloop.

regards,

pavan

Read only

Former Member
0 Likes
717

Use the FM TEXT_CONVERT_XML_TO_SAP to read a XML file.

The below link has good source code on how to read or access xml files in ABAP & SAP:

http://sap.ittoolbox.com/groups/technical-functional/sap-dev/xml-file-creation-from-abap-828310#

Please award points if found usefull.

Cheers,

Chaitanya.