PDA

Ver la Versión Completa : Crear un XML


anaidosa
10/01/14, 21:02:11
Buen dia.

Tengo un requerimiento de crear un xml con el esquema:

<?xml version="1.0" encoding="iso-8859-1" ?>
<xsl:schema xmlns="http://www.dcferre.com.mx/xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.dcferre.com.mx/xsd"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

<xsl:element name="OrdenesServicio">
<xsl:annotation>
<xsl:documentation>Estándar para la generación de información de Órdenes de Servicio.</xsl:documentation>
</xsl:annotation>
<xsl:complexType>
<xsl:sequence>
<xsl:element name="OrdenServicio" minOccurs="1" maxOccurs="unbounded">
<xsl:annotation>
<xsl:documentation>Nodo requerido para expresar la información de cada orden de servicio.</xsl:documentation>
</xsl:annotation>
<xsl:complexType>
<xsl:sequence>
<xsl:element name="Cliente">
<xsl:annotation>
<xsl:documentation>Nodo requerido para precisar la información del cliente del documento.</xsl:documentation>
</xsl:annotation>
<xsl:complexType>
<xsl:attribute name="RFC" type="t_RFC" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para precisar el RFC del cliente del documento.</xsl:documentation>
</xsl:annotation>
</xsl:attribute>
<xsl:attribute name="Nombre" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para expresar el nombre, denominación o razón social del cliente del documento.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="Direccion" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para expresar la dirección del cliente del documento.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
</xsl:complexType>
</xsl:element>
</xsl:sequence>
<xsl:attribute name="NumeroOrdenServicio" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para expresar el número de la Orden de Servicio.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:maxLength value="50"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="NumeroSerieUnidad" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para expresar el número de Serie de la Unidad (VIN) de la Orden.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:maxLength value="30"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="FechaHoraOrden" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para expresar de la fecha y hora de la orden de servicio. Se expresa en la forma aaaa-mm-ddThh:mm:ss, de acuerdo con la especificación ISO 8601.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:dateTime">
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="EstadoOrden" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para expresar el el estado actual de la orden de servicio. Los valores admitidos son [Abierta], [AbiertaParcialmenteFacturada], [Cerrada], [CerradaParcialmenteFacturada], [Facturada] y
[Cancelada]</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:whiteSpace value="collapse"/>
<xsl:enumeration value="Abierta"/>
<xsl:enumeration value="Cerrada"/>
<xsl:enumeration value="AbiertaParcialmenteFacturada"/>
<xsl:enumeration value="CerradaParcialmenteFacturada"/>
<xsl:enumeration value="Facturada"/>
<xsl:enumeration value="Cancelada"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="TipoServicio" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para expresar el tipo de servicio de la Orden.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:maxLength value="30"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="NumeroSucursal" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para indicar el número con el que el concesionario identifica la sucursal.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:maxLength value="3"/>
<xsl:whiteSpace value="collapse"/>
<xsl:pattern value="[1-9]{1}[0-9]{0,2}"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="OrdenReparacion" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para manifestar el texto de la Orden de Reparación.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="SintomasFallas" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para expresar los síntomas y/o fallas de la unidad de la orden de servicio.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="Area" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para indicar el área a la que aplica la Orden de Servicio. Los valores admitidos se encuentran en el catálogo de categorías.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:maxLength value="50"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="ManoDeObra" type="t_Importe4" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para representar el importe de la mano de obra de la orden de servicio.</xsl:documentation>
</xsl:annotation>
</xsl:attribute>
<xsl:attribute name="CargosMiscelaneos" type="t_Importe4" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para representar el importe de los Cargos Misceláneos de la orden de servicio.</xsl:documentation>
</xsl:annotation>
</xsl:attribute>
<xsl:attribute name="TOTs" type="t_Importe4" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para representar el importe de las compras o Trabajos en Otros Talleres que se incluyen en la orden de servicio.</xsl:documentation>
</xsl:annotation>
</xsl:attribute>
<xsl:attribute name="Refacciones" type="t_Importe4" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para representar el importe de las refacciones que se incluyen en la orden de servicio.</xsl:documentation>
</xsl:annotation>
</xsl:attribute>
<xsl:attribute name="Total" type="t_Importe4" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para representar el importe total de la orden de servicio.</xsl:documentation>
</xsl:annotation>
</xsl:attribute>
<xsl:attribute name="Kilometraje" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido que acepta un valor numérico entero superior a 0 para expresar el kilometraje de la unidad.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:minLength value="1"/>
<xsl:maxLength value="20"/>
<xsl:whiteSpace value="collapse"/>
<xsl:pattern value="[0-9]+"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="EsIPK" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para indicar si la orden es IPK. Los valores admitidos son [1] = SI y [0] = NO.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:whiteSpace value="collapse"/>
<xsl:enumeration value="0"/>
<xsl:enumeration value="1"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="EsRescate" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para indicar si la orden es un rescate. Los valores admitidos son [1] = SI y [0] = NO.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:whiteSpace value="collapse"/>
<xsl:enumeration value="0"/>
<xsl:enumeration value="1"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
</xsl:complexType>
</xsl:element>
</xsl:sequence>
<xsl:attribute name="FechaInicio" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para la expresión de la fecha de inicio de operaciones que comprende el XML. Se expresa en la forma aaaa-mm-dd, de acuerdo con la especificación ISO 8601.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:date">
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="FechaFinal" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para la expresión de la fecha final de operaciones que comprende el XML. Se expresa en la forma aaaa-mm-dd, de acuerdo con la especificación ISO 8601.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:date">
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
<xsl:attribute name="ClaveEmpresa" use="required">
<xsl:annotation>
<xsl:documentation>Atributo requerido para contener la clave del concesionario al que corresponde la información de este documento XML.</xsl:documentation>
</xsl:annotation>
<xsl:simpleType>
<xsl:restriction base="xs:string">
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:attribute>
</xsl:complexType>
</xsl:element>
<xsl:simpleType name="t_RFC">
<xsl:annotation>
<xsl:documentation>Tipo definido para expresar claves del Registro Federal de Contribuyentes</xsl:documentation>
</xsl:annotation>
<xsl:restriction base="xs:string">
<xsl:minLength value="12"/>
<xsl:maxLength value="13"/>
<xsl:whiteSpace value="collapse"/>
<xsl:pattern value="[A-Z,Ñ,&amp;]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z,0-9]?[A-Z,0-9]?[0-9,A-Z]?"/>
</xsl:restriction>
</xsl:simpleType>
<xsl:simpleType name="t_Importe">
<xsl:annotation>
<xsl:documentation>Tipo definido para expresar importes numéricos con fracción a dos decimales</xsl:documentation>
</xsl:annotation>
<xsl:restriction base="xs:decimal">
<xsl:fractionDigits value="2"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
<xsl:simpleType name="t_Importe4">
<xsl:annotation>
<xsl:documentation>Tipo definido para expresar importes numéricos con fracción a cuatro decimales</xsl:documentation>
</xsl:annotation>
<xsl:restriction base="xs:decimal">
<xsl:fractionDigits value="4"/>
<xsl:whiteSpace value="collapse"/>
</xsl:restriction>
</xsl:simpleType>
</xsl:schema>

Pero no tengo idea de como hacerlo, por la parte de mapeo y extraccion no hay ningun problema ya la tengo ahora no se como crear el xml, lo he tratado de hacer por la transaccion STRANS pero me marca error, espero alguien pueda ayudarme.

Saludosss

calanis
22/01/14, 20:12:43
Hola anaidosa!
Para poder hacer esto deberias conseguirte un editor de XML como el XMLSpy el cual te puede mostrar el esquema para que sepas como armar el XML.
Imagen de Ejemplo
Te paso la documentación oficial de SAP por la clase IF_XML una de las tantas maneras para hacer lo que necesitas como por el CALL TRANSFORMATION.

Saludos

rpupillo
24/01/14, 13:33:42
Chequea este link:

http://wiki.scn.sap.com/wiki/display/ABAP/iXML+-+Create+XML+file


Saludos,