函数创建XML文件

REPORT  YTST_XML_14.

*----------------------------------------------------------------------*
* PANTALLA SELECCION *
PARAMETERS: GK_RUTA TYPE RLGRAP-FILENAME DEFAULT ‘C:\ECC6.XML‘.
* PANTALLA SELECCION *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* 针对XML文件的特殊结构需要构造一个特殊的数据结构
* 定义一个下层节点
TYPES: BEGIN OF TURNOS,
    LU LIKE T552A-TPR01,
    MA LIKE T552A-TPR01,
    MI LIKE T552A-TPR01,
    JU LIKE T552A-TPR01,
    VI LIKE T552A-TPR01,
    SA LIKE T552A-TPR01,
    DO LIKE T552A-TPR01,
END OF TURNOS.
* TYPE TURNOS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* 根据XML file stru 嵌套一下
TYPES:BEGIN OF SOCIO,
        NUMERO LIKE PERNR-PERNR,
        REPOSICION LIKE PA0050-ZAUVE,
        NOMBRE LIKE PA0002-VORNA,
        TURNOS TYPE TURNOS,
      END OF SOCIO.
* TYPE SOCIO *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* 放到哪里呢,当然是internal table
DATA:BEGIN OF ACCESOS OCCURS 0,
      SOCIO TYPE SOCIO,
     END OF ACCESOS.

*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM LLENA_ACCESOS.
  PERFORM DESCARGA_XML.

END-OF-SELECTION.
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
FORM LLENA_ACCESOS.
  REFRESH ACCESOS.
  CLEAR ACCESOS.
* 开始填充了,这里只搞两个基本Item
  MOVE:‘45050‘ TO ACCESOS-SOCIO-NUMERO,
       ‘MOISES MORENO‘ TO ACCESOS-SOCIO-NOMBRE,
       ‘0‘  TO ACCESOS-SOCIO-REPOSICION,
       ‘T1‘ TO ACCESOS-SOCIO-TURNOS-LU,
       ‘T2‘ TO ACCESOS-SOCIO-TURNOS-MA,
       ‘T3‘ TO ACCESOS-SOCIO-TURNOS-MI,
       ‘T4‘ TO ACCESOS-SOCIO-TURNOS-JU,
       ‘T5‘ TO ACCESOS-SOCIO-TURNOS-VI,
       ‘T6‘ TO ACCESOS-SOCIO-TURNOS-SA,
       ‘T7‘ TO ACCESOS-SOCIO-TURNOS-DO.
  APPEND ACCESOS.
  CLEAR ACCESOS.
  MOVE:‘45051‘ TO ACCESOS-SOCIO-NUMERO,
       ‘RUTH PE?A‘ TO ACCESOS-SOCIO-NOMBRE,
       ‘0‘  TO ACCESOS-SOCIO-REPOSICION,
       ‘T1‘ TO ACCESOS-SOCIO-TURNOS-LU,
       ‘T2‘ TO ACCESOS-SOCIO-TURNOS-MA,
       ‘T3‘ TO ACCESOS-SOCIO-TURNOS-MI,
       ‘T4‘ TO ACCESOS-SOCIO-TURNOS-JU,
       ‘T5‘ TO ACCESOS-SOCIO-TURNOS-VI,
       ‘T6‘ TO ACCESOS-SOCIO-TURNOS-SA,
       ‘T7‘ TO ACCESOS-SOCIO-TURNOS-DO.
  APPEND ACCESOS.
ENDFORM.                    "LLENA_ACCESOS

*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* FORM DESCARGA_XML *
FORM DESCARGA_XML.
  DATA: L_DOM TYPE REF TO IF_IXML_ELEMENT, " XML 元素对象,也可以叫一个Item
        M_DOCUMENT TYPE REF TO IF_IXML_DOCUMENT, " XML 文件对象
        G_IXML   TYPE REF TO IF_IXML,  " XML 接口对象
        W_STRING TYPE XSTRING,
        W_SIZE   TYPE I,
        W_RESULT TYPE I,
        W_LINE   TYPE STRING,
        IT_XML   TYPE DCXMLLINES,
        S_XML    LIKE LINE OF IT_XML,
        W_RC     LIKE SY-SUBRC.
  DATA: XML TYPE DCXMLLINES.
  DATA: RC  TYPE SY-SUBRC,
  BEGIN OF XML_TAB OCCURS 0,
         D LIKE LINE OF XML,
       END OF XML_TAB.

* 先装载一个XML对象,象JAVA的IMPORT一样
  CLASS CL_IXML DEFINITION LOAD.

* 创建一个XML文件对象
  G_IXML = CL_IXML=>CREATE( ).
  CHECK NOT G_IXML IS INITIAL.

* 创建一个XML文件
  M_DOCUMENT = G_IXML->CREATE_DOCUMENT( ).
  CHECK NOT M_DOCUMENT IS INITIAL.
  WRITE: / ‘Converting DATA TO DOM 1:‘.

* 这下好了,该创建XML元素了,创建时参考了元素的数据结构‘ACCESOS‘
  CALL FUNCTION ‘SDIXML_DATA_TO_DOM‘
    EXPORTING
      NAME         = ‘ACCESOS‘
      DATAOBJECT   = ACCESOS[]
    IMPORTING
      DATA_AS_DOM  = L_DOM
    CHANGING
      DOCUMENT     = M_DOCUMENT
    EXCEPTIONS
      ILLEGAL_NAME = 1
      OTHERS       = 2.
  IF SY-SUBRC = 0.
    WRITE ‘Ok‘.
  ELSE.
    WRITE: ‘Err =‘,
    SY-SUBRC.
  ENDIF.
  CHECK NOT L_DOM IS INITIAL.

* 节点创建成功后添加节点到文件
  W_RC = M_DOCUMENT->APPEND_CHILD( NEW_CHILD = L_DOM ).
  IF W_RC IS INITIAL.
    WRITE ‘Ok‘.
  ELSE.
    WRITE: ‘Err =‘,
    W_RC.
  ENDIF.

* 好了,该转换XML File了,添加该死的</>,不要怪我老带着一点恨劲,被逼的!
  CALL FUNCTION ‘SDIXML_DOM_TO_XML‘
    EXPORTING
      DOCUMENT      = M_DOCUMENT
    IMPORTING
      XML_AS_STRING = W_STRING
      SIZE          = W_SIZE
    TABLES
      XML_AS_TABLE  = IT_XML
    EXCEPTIONS
      NO_DOCUMENT   = 1
      OTHERS        = 2.
  IF SY-SUBRC = 0.
    WRITE ‘Ok‘.
  ELSE.
    WRITE: ‘Err =‘,
    SY-SUBRC.
  ENDIF.

* 下来就是准备输出了,还是内表
  LOOP AT IT_XML INTO XML_TAB-D.
    APPEND XML_TAB.
  ENDLOOP.

CALL FUNCTION ‘GUI_DOWNLOAD‘
    EXPORTING
      BIN_FILESIZE = W_SIZE
      FILENAME     = GK_RUTA
      FILETYPE     = ‘BIN‘
    TABLES
      DATA_TAB     = XML_TAB.

IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    "DESCARGA_XML

函数创建XML文件,布布扣,bubuko.com

时间: 2024-10-06 00:10:36

函数创建XML文件的相关文章

Android中解析与创建XML文件

Android中解析与创建XML文件 在Android中对XML的操作有多种方式,常见的有三种方式:SAX.DOM和PULL方式. DOM方式会把整个XML文件加载到内存中,在PC上常使用DOM的方式. 但是在性能敏感的设备上,主要采用的是SAX的方式,但是缺点是嵌套多个分支的时候处理不是很方便. 而PULL的方式类似SAX方式,同样很节省内存. 因此,本文章中只提供PULL的方式解析与创建XML文件. 基础类 本例中使用的实体类的定义如下: public class CAddress impl

C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)

最近工作中遇到一个问题,要求创建一个XML文件,在创建的时候要初始化该XML文档,同时该文档打开后是XML形式,但是后缀名不是.在网上找了好些资料没找到,只能自己试着弄了一下,没想到成功了,把它记下来作为自己的学习笔记. 需求:创建XML文件,后缀名为.xwsp 初始化的文档节点如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <xxxversion="1.0" name="

XML文件操作类--创建XML文件

这个类是在微软XML操作类库上进行的封装,只是为了更加简单使用,包括XML类创建节点的示例. using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; namespace testForm { class Operation_APPCFG { XmlDocument xmldoc; XmlNode

asp.net创建XML文件方法

方法一:按照XML的结构一步一步的构建XML文档.    通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法一:按照XML的结构一步一步的构建XML文档.    通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法二:直接定影XML文档,然后保存到文件.        通过"XmlDocument"类中的"LoadXml"

PHP DOM创建XML文件

    $dom = new DOMDocument ( '1.0', 'gbk' );     $dom->formatOutput = true;     $comment_str = ' file create time: ' . date('Y-m-d H:i:s', time())  . ' by tree.php ';     $dom->appendChild(new DOMComment($comment_str));     $edbnode = $dom->creat

使用DOM创建xml文件

使用DOM创建xml文件 创建xml的代码如下: public class CreateXML { public static void main(String[] args) { DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder=factory.newDocumentBuilder(); Document documnet= builder.ne

以DOM方式创建xml文件

有些事,在我这个单纯的人心里一直以为这世界也是单纯的存在.Until that moment, she paid the bill for another boy, I found out that people are together, I am just an outsider.My world is lost.好久没扯皮了,闲扯一下很开心.好了,废话少说,内容都在注释里面. /**以DOM方式创建xml文件 * @param file 文件 * @throws Exception */

dom4j创建xml文件

import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; /** * 使用dom4j生成xml文档 * @author Administrator * */ publi

JSP简单练习-使用JDOM创建xml文件

注意:在编写代码前,请确保该Web文件夹下的"WEB-INF/lib"下包括jdom.jar包! <%@ page language="java" contentType="text/html; charset=gb2312" %> <%@ page import="org.jdom.*, org.jdom.output.*, java.io.IOException, java.io.FileWriter"