内表生成XML简单实例

REPORTzlm_xml_02 .

*&---------------------------------------------------------------------*
*&声明及定义部分
*&---------------------------------------------------------------------*

TYPE-POOLS :ixml .

****声明存放XML文件的结构
TYPES : BEGIN OFxml_line ,
data ( 256 ) TYPE x ,
END OFxml_line .

****声明对象
DATA :l_ixml TYPE REF TOif_ixml ,
l_streamfactory TYPE REF TOif_ixml_stream_factory ,
l_ostream TYPE REF TOif_ixml_ostream ,
l_renderer TYPE REF TOif_ixml_renderer ,
l_document TYPE REF TOif_ixml_document .

****声明XML元素
DATA :l_element_inpot TYPE REF TOif_ixml_element ,
l_element_matnr TYPE REF TOif_ixml_element ,
l_element_art TYPE REF TOif_ixml_element ,
l_element_prueflos TYPE REF TOif_ixml_element ,
l_element_budat TYPE REF TOif_ixml_element ,
l_element_losmenge TYPE REF TOif_ixml_element ,
l_element_enstehdat TYPE REF TOif_ixml_element ,
l_value TYPEstring .

****声明存放XML文件的内表以及字节数
DATA :l_xml_table TYPE TABLE OFxml_line ,
l_xml_size TYPE i ,
l_rc TYPE i ,
flag TYPEstring .

****声明数据内表
DATA : BEGIN OFi_data OCCURS 0 ,
matnr LIKEqals -matnr ,
prueflos LIKEqals -prueflos ,
art LIKEqals -art ,
budat LIKEqals -budat ,
losmenge LIKEqals -losmenge ,
enstehdat LIKEqals -enstehdat ,
END OFi_data .

*&---------------------------------------------------------------------*
*&主逻辑部分
*&---------------------------------------------------------------------*

START-OF-SELECTION .
PERFORMzform_get_data .
PERFORMzform_save_xml .


*&---------------------------------------------------------------------*
*&FORM定义部分
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&Formzform_get_data
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
FORMzform_get_data .
SELECTmatnr art prueflos budat losmenge enstehdat
INTOCORRESPONDING FIELDS OF TABLEi_data
FROMqals
WHEREbudat = '20000412' .
ENDFORM . "zform_get_data

*&---------------------------------------------------------------------*
*&Formsave_xml
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
FORMzform_save_xml .
LOOP ATi_data .
****创建一个XML容器
AT FIRST .
l_ixml =cl_ixml => create ( ) .
****创建一个文档对象模型
l_document =l_ixml ->create_document ( ) .
****填充根节点
l_element_inpot =l_document ->create_simple_element (
name = 'INPOT'
parent =l_document ) .
ENDAT .
AT NEWmatnr .
****填充子节点(物料)
l_value =i_data -matnr .
l_element_matnr =l_document ->create_simple_element (
name = 'MATNR'
value =l_value
parent =l_element_inpot ) .
flag =flag + 1 .
l_rc =l_element_matnr ->set_attribute (name = 'ID' value =
flag ) .
ENDAT .
****填充子节点(检验批)
AT NEWprueflos .
l_value =i_data -prueflos .
l_element_prueflos =l_document ->create_simple_element (
name = 'PRUEFLOS'
value =l_value
parent =l_element_matnr ) .
ENDAT .
****填充子节点(检验批细节)
l_value =i_data -art .
l_element_art =l_document ->create_simple_element (
name = 'ART'
value =l_value
parent =l_element_prueflos ) .

l_value =i_data -budat .
l_element_budat =l_document ->create_simple_element (
name = 'BUDAT'
value =l_value
parent =l_element_prueflos ) .

l_value =i_data -enstehdat .
l_element_enstehdat =l_document ->create_simple_element (
name = 'ENSTEHDAT'
value =l_value
parent =l_element_prueflos ) .

l_value =i_data -losmenge .
l_element_losmenge =l_document ->create_simple_element (
name = 'LOSMENGE'
value =l_value
parent =l_element_prueflos ) .
ENDLOOP .
****创建一个流容器
l_streamfactory =l_ixml ->create_stream_factory ( ) .
****连接内部XML表到流容器
l_ostream =l_streamfactory ->create_ostream_itable (
table =l_xml_table ) .
****递交XML文档
l_renderer =l_ixml ->create_renderer (ostream =l_ostream
document =l_document ) .
l_rc =l_renderer ->render ( ) .
****保存XML文档
l_xml_size =l_ostream ->get_num_written_raw ( ) .
CALL METHODcl_gui_frontend_services =>gui_download
EXPORTING
bin_filesize =l_xml_size
filename = 'c:\temp\INPOT.xml'
filetype = 'BIN'
CHANGING
data_tab =l_xml_table
EXCEPTIONS
OTHERS = 24 .
IFsy -subrc = 0 .
MESSAGE 'XML文件保存成功!!!!' TYPE 'I' .
STOP .
ENDIF .
ENDFORM . "save_xml

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇