首页 > 其他分享 >内表生成XML简单实例

内表生成XML简单实例

时间:2022-10-14 18:07:18浏览次数:67  
标签:XML xml ixml 内表 data value element 实例 TYPE

REPORT  zlm_xml_02.

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

TYPE-POOLS: ixml.

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

****声明对象
DATA: l_ixml TYPE REF TO if_ixml,
l_streamfactory TYPE REF TO if_ixml_stream_factory,
l_ostream TYPE REF TO if_ixml_ostream,
l_renderer TYPE REF TO if_ixml_renderer,
l_document TYPE REF TO if_ixml_document.

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

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

****声明数据内表
DATA:BEGIN OF i_data OCCURS 0,
matnr LIKE qals-matnr,
prueflos LIKE qals-prueflos,
art LIKE qals-art,
budat LIKE qals-budat,
losmenge LIKE qals-losmenge,
enstehdat LIKE qals-enstehdat,
END OF i_data.

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

START-OF-SELECTION.
PERFORM zform_get_data.
PERFORM zform_save_xml.


*&---------------------------------------------------------------------*
*& FORM定义部分
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form zform_get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM zform_get_data.
SELECT matnr art prueflos budat losmenge enstehdat
INTO CORRESPONDING FIELDS OF TABLE i_data
FROM qals
WHERE budat = '20000412'.
ENDFORM. "zform_get_data

*&---------------------------------------------------------------------*
*& Form save_xml
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM zform_save_xml.
LOOP AT i_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 NEW matnr.
****填充子节点(物料)
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 NEW prueflos.
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 METHOD cl_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.
IF sy-subrc = 0.
MESSAGE 'XML文件保存成功!!!!' TYPE 'I'.
STOP.
ENDIF.
ENDFORM. "save_xml


内表生成XML简单实例_对象模型



标签:XML,xml,ixml,内表,data,value,element,实例,TYPE
From: https://blog.51cto.com/u_15680210/5757658

相关文章

  • xml教程
    整整一年没发文章了啊好了讲正事xml教程首先,xml不是编程语言它只是一个标记语言并且,它不会做任何事情换句话说,xml≈txt,它只是数据的载体现在我们好好认识以下xmlXM......
  • Mybatis-Plus 自定义xml多对多分页查询带条件
    1.定义实体类@Data@TableName("user")publicclassUser{@TableIdprivateStringid;@TableField("username")privateStringname;privateS......
  • Mybatis-Plus 自定义xml分页
    1.定义实体类@TableName("role")@DatapublicclassRole{@TableIdprivateStringid;privateStringname;}2.定义mapper接口publicinterfaceRol......
  • 轻松学习XML教程
    XML越来越热,关于XML的基础教程网络上也随处可见。可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个......
  • XML指南——XML数据岛
    使用IE5.0或者更高的版本,XML数据可以以数据岛的形式嵌入HTML页面。在HTML页面中嵌入XML数据使用非官方标准的<xml>标记可以将XML数据嵌入到HTML页面中。XML数据可以象下面的......
  • ASP中查询数据库记录写入XML文件示例
    把下面代码保存为Asp_XML.asp运行即可:<%'By Dicky 2005-03-22 21:52:18 AM QQ:25941 E-mail:[email protected] IsSql = ......
  • Linux Centos系统使用yum时出现:Error:Cannot retrieve repository metadata (repomd.xm
    一、问题描述:在安装Oracle数据库时,需要用到yum安装所需要的软件包时,出现了:Error:Cannotretrieverepositorymetadata(repomd.xml)forreposi......
  • python使用xml.dom.minidom写xml节点属性会自动排序问题解决
    1.背景及问题一个xml文件,过滤掉部分节点,生成新的xml文件,但是生成后,发现节点的属性顺序变化了,根据key的字母信息排了序。如原始信息:<stringtypename="time_type"length......
  • Python解析Xml
    Python解析Xmlfromlxmlimportetreedefget_info_from_xml(xml_text):try:parser=etree.XMLParser(recover=True)tree=etree.fromstring(......
  • 实例分析Scheduled Thread Pool Executor与Timer的区别
    摘要:JDK1.5开始提供ScheduledThreadPoolExecutor类,ScheduledThreadPoolExecutor类继承ThreadPoolExecutor类重用线程池实现了任务的周期性调度功能。本文分享自华......